As ligações Python para os modelos de transformador implementados em C/C ++ usando a biblioteca GGML.
Veja também ChatDocs
| Modelos | Tipo de modelo | CUDA | Metal |
|---|---|---|---|
| GPT-2 | gpt2 | ||
| GPT-J, Gpt4all-J | gptj | ||
| GPT-Neox, Stablelm | gpt_neox | ||
| Falcão | falcon | ✅ | |
| LLAMA, LLAMA 2 | llama | ✅ | ✅ |
| Mpt | mpt | ✅ | |
| Starcoder, Starchat | gpt_bigcode | ✅ | |
| Dolly v2 | dolly-v2 | ||
| Replit | replit |
pip install ctransformersIt provides a unified interface for all models:
from ctransformers import AutoModelForCausalLM
llm = AutoModelForCausalLM . from_pretrained ( "/path/to/ggml-model.bin" , model_type = "gpt2" )
print ( llm ( "AI is going to" ))Corra no Google Colab
Para transmitir a saída, set stream=True :
for text in llm ( "AI is going to" , stream = True ):
print ( text , end = "" , flush = True )Você pode carregar modelos de abraçar o hub de rosto diretamente:
llm = AutoModelForCausalLM . from_pretrained ( "marella/gpt-2-ggml" ) Se um repositório modelo tiver vários arquivos de modelo (arquivos .bin ou .gguf ), especifique um arquivo de modelo usando:
llm = AutoModelForCausalLM . from_pretrained ( "marella/gpt-2-ggml" , model_file = "ggml-model.bin" )Nota: Este é um recurso experimental e pode mudar no futuro.
Para usá -lo? Transformadores, crie modelo e tokenizer usando:
from ctransformers import AutoModelForCausalLM , AutoTokenizer
model = AutoModelForCausalLM . from_pretrained ( "marella/gpt-2-ggml" , hf = True )
tokenizer = AutoTokenizer . from_pretrained ( model )Corra no Google Colab
Você pode usar? Pipeline de geração de texto Transformers:
from transformers import pipeline
pipe = pipeline ( "text-generation" , model = model , tokenizer = tokenizer )
print ( pipe ( "AI is going to" , max_new_tokens = 256 ))Você pode usar? Parâmetros de geração dos transformadores:
pipe ( "AI is going to" , max_new_tokens = 256 , do_sample = True , temperature = 0.8 , repetition_penalty = 1.1 )Você pode usar? Tokenizers de Transformers:
from ctransformers import AutoModelForCausalLM
from transformers import AutoTokenizer
model = AutoModelForCausalLM . from_pretrained ( "marella/gpt-2-ggml" , hf = True ) # Load model from GGML model repo.
tokenizer = AutoTokenizer . from_pretrained ( "gpt2" ) # Load tokenizer from original model repo.É integrado ao Langchain. See LangChain docs.
Para executar algumas das camadas do modelo na GPU, defina o parâmetro gpu_layers :
llm = AutoModelForCausalLM . from_pretrained ( "TheBloke/Llama-2-7B-GGML" , gpu_layers = 50 )Run in Google Colab
Install CUDA libraries using:
pip install ctransformers[cuda] Para ativar o suporte ao ROCM, instale o pacote ctransformers usando:
CT_HIPBLAS=1 pip install ctransformers --no-binary ctransformers Para ativar o suporte de metal, instale o pacote ctransformers usando:
CT_METAL=1 pip install ctransformers --no-binary ctransformersNota: Este é um recurso experimental e apenas os modelos de lhama são suportados usando o Exllama.
Instale dependências adicionais usando:
pip install ctransformers[gptq]Carregue um modelo GPTQ usando:
llm = AutoModelForCausalLM . from_pretrained ( "TheBloke/Llama-2-7B-GPTQ" )Corra no Google Colab
Se o nome ou o caminho do modelo não contiver a palavra
gptq, especifiquemodel_type="gptq".
Também pode ser usado com Langchain. As APIs de baixo nível não são totalmente suportadas.
| Parâmetro | Tipo | Descrição | Padrão |
|---|---|---|---|
top_k | int | O valor superior-k a ser usado para amostragem. | 40 |
top_p | float | O valor Top-P a ser usado para amostragem. | 0.95 |
temperature | float | A temperatura a ser usada para amostragem. | 0.8 |
repetition_penalty | float | A penalidade de repetição a ser usada para amostragem. | 1.1 |
last_n_tokens | int | O número de tokens Últimos a serem usados para a penalidade de repetição. | 64 |
seed | int | O valor da semente a ser usado para amostragem de tokens. | -1 |
max_new_tokens | int | O número máximo de novos tokens para gerar. | 256 |
stop | List[str] | Uma lista de seqüências para interromper a geração quando encontrada. | None |
stream | bool | Se deve transmitir o texto gerado. | False |
reset | bool | Se deve redefinir o estado do modelo antes de gerar texto. | True |
batch_size | int | O tamanho do lote a ser usado para avaliar tokens em um único prompt. | 8 |
threads | int | O número de threads a serem usados para avaliar tokens. | -1 |
context_length | int | O comprimento máximo do contexto a ser usado. | -1 |
gpu_layers | int | The number of layers to run on GPU. | 0 |
NOTA: Atualmente, apenas os modelos LLAMA, MPT e FALCON suportam o parâmetro
context_length.
AutoModelForCausalLM AutoModelForCausalLM.from_pretrained from_pretrained (
model_path_or_repo_id : str ,
model_type : Optional [ str ] = None ,
model_file : Optional [ str ] = None ,
config : Optional [ ctransformers . hub . AutoConfig ] = None ,
lib : Optional [ str ] = None ,
local_files_only : bool = False ,
revision : Optional [ str ] = None ,
hf : bool = False ,
** kwargs
) → LLMCarrega o modelo de idioma de um arquivo local ou repo remoto.
Args:
model_path_or_repo_id : O caminho para um arquivo ou diretório de modelos ou o nome de um repo de Modelo de Hub de Face Aragurado.model_type : o tipo de modelo.model_file : o nome do arquivo de modelo em repositório ou diretório.config : objeto AutoConfig .lib : The path to a shared library or one of avx2 , avx , basic .local_files_only : Whether or not to only look at local files (ie, do not try to download the model).revision : The specific model version to use. Pode ser um nome de ramificação, um nome de tag ou um ID de confirmação.hf : Se você deve criar um modelo de Transformers de Facos Abraçados. Retornos: objeto LLM .
LLMLLM.__init__ __init__ (
model_path : str ,
model_type : Optional [ str ] = None ,
config : Optional [ ctransformers . llm . Config ] = None ,
lib : Optional [ str ] = None
)Carrega o modelo de idioma de um arquivo local.
Args:
model_path : o caminho para um arquivo de modelo.model_type : o tipo de modelo.config : Config Object.lib : O caminho para uma biblioteca compartilhada ou um de avx2 , avx , basic . O token de início de sequência.
O objeto de configuração.
O comprimento do contexto do modelo.
As incorporações de entrada.
O token de final de sequência.
The unnormalized log probabilities.
O caminho para o arquivo de modelo.
O tipo de modelo.
O token de preenchimento.
O número de tokens no vocabulário.
LLM.detokenize detokenize ( tokens : Sequence [ int ], decode : bool = True ) → Union [ str , bytes ]Converte uma lista de tokens em texto.
Args:
tokens : The list of tokens.decode : se deve decodificar o texto como String UTF-8.Returns: The combined text of all tokens.
LLM.embed embed (
input : Union [ str , Sequence [ int ]],
batch_size : Optional [ int ] = None ,
threads : Optional [ int ] = None
) → List [ float ]Calcula incorporações para um texto ou lista de tokens.
Note: Currently only LLaMA and Falcon models support embeddings.
Args:
input : o texto de entrada ou a lista de tokens para obter incorporações.batch_size : The batch size to use for evaluating tokens in a single prompt. Padrão: 8threads : o número de threads a serem usados para avaliar tokens. Padrão: -1Retornos: as incorporações de entrada.
LLM.eval eval (
tokens : Sequence [ int ],
batch_size : Optional [ int ] = None ,
threads : Optional [ int ] = None
) → NoneAvalia uma lista de tokens.
Args:
tokens : a lista de tokens para avaliar.batch_size : o tamanho do lote a ser usado para avaliar tokens em um único prompt. Padrão: 8threads : o número de threads a serem usados para avaliar tokens. Padrão: -1 LLM.generate generate (
tokens : Sequence [ int ],
top_k : Optional [ int ] = None ,
top_p : Optional [ float ] = None ,
temperature : Optional [ float ] = None ,
repetition_penalty : Optional [ float ] = None ,
last_n_tokens : Optional [ int ] = None ,
seed : Optional [ int ] = None ,
batch_size : Optional [ int ] = None ,
threads : Optional [ int ] = None ,
reset : Optional [ bool ] = None
) → Generator [ int , NoneType , NoneType ]Gera novos tokens a partir de uma lista de tokens.
Args:
tokens : a lista de tokens para gerar tokens.top_k : o valor superior-k a ser usado para amostragem. Padrão: 40top_p : o valor Top-P a ser usado para amostragem. Padrão: 0.95temperature : The temperature to use for sampling. Padrão: 0.8repetition_penalty : a penalidade de repetição a ser usada para amostragem. Padrão: 1.1last_n_tokens : o número de tokens últimos a serem usados para a penalidade de repetição. Padrão: 64seed : o valor da semente a ser usado para amostragem de tokens. Padrão: -1batch_size : o tamanho do lote a ser usado para avaliar tokens em um único prompt. Padrão: 8threads : The number of threads to use for evaluating tokens. Default: -1reset : se deve redefinir o estado do modelo antes de gerar texto. Default: TrueRetornos: os tokens gerados.
LLM.is_eos_token is_eos_token ( token : int ) → boolChecks if a token is an end-of-sequence token.
Args:
token : o token para verificar. Retornos: True se o token for um token de final de sequência mais False .
LLM.prepare_inputs_for_generation prepare_inputs_for_generation (
tokens : Sequence [ int ],
reset : Optional [ bool ] = None
) → Sequence [ int ]Remove os tokens de entrada que são avaliados no passado e atualiza o contexto LLM.
Args:
tokens : a lista de tokens de entrada.reset : se deve redefinir o estado do modelo antes de gerar texto. Padrão: TrueRetornos: a lista de tokens para avaliar.
LLM.reset reset () → NoneDescontinuado desde 0.2.27.
LLM.sample sample (
top_k : Optional [ int ] = None ,
top_p : Optional [ float ] = None ,
temperature : Optional [ float ] = None ,
repetition_penalty : Optional [ float ] = None ,
last_n_tokens : Optional [ int ] = None ,
seed : Optional [ int ] = None
) → intAmostras de um token do modelo.
Args:
top_k : o valor superior-k a ser usado para amostragem. Padrão: 40top_p : o valor Top-P a ser usado para amostragem. Padrão: 0.95temperature : a temperatura a ser usada para amostragem. Padrão: 0.8repetition_penalty : a penalidade de repetição a ser usada para amostragem. Padrão: 1.1last_n_tokens : o número de tokens últimos a serem usados para a penalidade de repetição. Padrão: 64seed : o valor da semente a ser usado para amostragem de tokens. Default: -1Retornos: o token amostrado.
LLM.tokenize tokenize ( text : str , add_bos_token : Optional [ bool ] = None ) → List [ int ]Converte um texto em lista de tokens.
Args:
text : o texto para tokenize.add_bos_token : se deve adicionar o token de início da sequência.Retornos: a lista de tokens.
LLM.__call__ __call__ (
prompt : str ,
max_new_tokens : Optional [ int ] = None ,
top_k : Optional [ int ] = None ,
top_p : Optional [ float ] = None ,
temperature : Optional [ float ] = None ,
repetition_penalty : Optional [ float ] = None ,
last_n_tokens : Optional [ int ] = None ,
seed : Optional [ int ] = None ,
batch_size : Optional [ int ] = None ,
threads : Optional [ int ] = None ,
stop : Optional [ Sequence [ str ]] = None ,
stream : Optional [ bool ] = None ,
reset : Optional [ bool ] = None
) → Union [ str , Generator [ str , NoneType , NoneType ]]Gera texto de um prompt.
Args:
prompt : The prompt to generate text from.max_new_tokens : o número máximo de novos tokens para gerar. Default: 256top_k : o valor superior-k a ser usado para amostragem. Padrão: 40top_p : The top-p value to use for sampling. Padrão: 0.95temperature : a temperatura a ser usada para amostragem. Default: 0.8repetition_penalty : a penalidade de repetição a ser usada para amostragem. Padrão: 1.1last_n_tokens : o número de tokens últimos a serem usados para a penalidade de repetição. Padrão: 64seed : o valor da semente a ser usado para amostragem de tokens. Padrão: -1batch_size : o tamanho do lote a ser usado para avaliar tokens em um único prompt. Padrão: 8threads : o número de threads a serem usados para avaliar tokens. Padrão: -1stop : Uma lista de seqüências para interromper a geração quando encontrada. Padrão: Nonestream : se deve transmitir o texto gerado. Padrão: Falsereset : se deve redefinir o estado do modelo antes de gerar texto. Padrão: TrueRetornos: o texto gerado.
Mit