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 ctransformers
It 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 ctransformers
Nota: 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
) → LLM
Carrega 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
.
LLM
LLM.__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: 8
threads
: o número de threads a serem usados para avaliar tokens. Padrão: -1
Retornos: as incorporações de entrada.
LLM.eval
eval (
tokens : Sequence [ int ],
batch_size : Optional [ int ] = None ,
threads : Optional [ int ] = None
) → None
Avalia 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: 8
threads
: 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: 40
top_p
: o valor Top-P a ser usado para amostragem. Padrão: 0.95
temperature
: The temperature to use for sampling. Padrão: 0.8
repetition_penalty
: a penalidade de repetição a ser usada para amostragem. Padrão: 1.1
last_n_tokens
: o número de tokens últimos a serem usados para a penalidade de repetição. Padrão: 64
seed
: o valor da semente a ser usado para amostragem de tokens. Padrão: -1
batch_size
: o tamanho do lote a ser usado para avaliar tokens em um único prompt. Padrão: 8
threads
: The number of threads to use for evaluating tokens. Default: -1
reset
: se deve redefinir o estado do modelo antes de gerar texto. Default: True
Retornos: os tokens gerados.
LLM.is_eos_token
is_eos_token ( token : int ) → bool
Checks 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: True
Retornos: a lista de tokens para avaliar.
LLM.reset
reset () → None
Descontinuado 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
) → int
Amostras de um token do modelo.
Args:
top_k
: o valor superior-k a ser usado para amostragem. Padrão: 40
top_p
: o valor Top-P a ser usado para amostragem. Padrão: 0.95
temperature
: a temperatura a ser usada para amostragem. Padrão: 0.8
repetition_penalty
: a penalidade de repetição a ser usada para amostragem. Padrão: 1.1
last_n_tokens
: o número de tokens últimos a serem usados para a penalidade de repetição. Padrão: 64
seed
: o valor da semente a ser usado para amostragem de tokens. Default: -1
Retornos: 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: 256
top_k
: o valor superior-k a ser usado para amostragem. Padrão: 40
top_p
: The top-p value to use for sampling. Padrão: 0.95
temperature
: a temperatura a ser usada para amostragem. Default: 0.8
repetition_penalty
: a penalidade de repetição a ser usada para amostragem. Padrão: 1.1
last_n_tokens
: o número de tokens últimos a serem usados para a penalidade de repetição. Padrão: 64
seed
: o valor da semente a ser usado para amostragem de tokens. Padrão: -1
batch_size
: o tamanho do lote a ser usado para avaliar tokens em um único prompt. Padrão: 8
threads
: o número de threads a serem usados para avaliar tokens. Padrão: -1
stop
: Uma lista de seqüências para interromper a geração quando encontrada. Padrão: None
stream
: se deve transmitir o texto gerado. Padrão: False
reset
: se deve redefinir o estado do modelo antes de gerar texto. Padrão: True
Retornos: o texto gerado.
Mit