Python Bindings para los modelos de transformador implementados en C/C ++ utilizando la biblioteca GGML.
Ver también ChatDocs
Modelos | Tipo de modelo | Cuda | Metal |
---|---|---|---|
GPT-2 | gpt2 | ||
GPT-J, GPT4All-J | gptj | ||
GPT-NEOX, stablelm | gpt_neox | ||
Halcón | falcon | ✅ | |
Llama, Llama 2 | llama | ✅ | ✅ |
MPT | mpt | ✅ | |
Código de estrellas, almidón | gpt_bigcode | ✅ | |
Dolly V2 | dolly-v2 | ||
Replicación | replit |
pip install ctransformers
Proporciona una interfaz unificada para todos los modelos:
from ctransformers import AutoModelForCausalLM
llm = AutoModelForCausalLM . from_pretrained ( "/path/to/ggml-model.bin" , model_type = "gpt2" )
print ( llm ( "AI is going to" ))
Ejecutar en Google Colab
Para transmitir la salida, establecer stream=True
:
for text in llm ( "AI is going to" , stream = True ):
print ( text , end = "" , flush = True )
Puede cargar modelos desde abrazar el centro de la cara directamente:
llm = AutoModelForCausalLM . from_pretrained ( "marella/gpt-2-ggml" )
Si un repositorio de modelo tiene múltiples archivos de modelo (archivos .bin
o .gguf
), especifique un archivo de modelo usando:
llm = AutoModelForCausalLM . from_pretrained ( "marella/gpt-2-ggml" , model_file = "ggml-model.bin" )
Nota: Esta es una característica experimental y puede cambiar en el futuro.
Para usarlo con? Transformadores, crear modelo y tokenizador usando:
from ctransformers import AutoModelForCausalLM , AutoTokenizer
model = AutoModelForCausalLM . from_pretrained ( "marella/gpt-2-ggml" , hf = True )
tokenizer = AutoTokenizer . from_pretrained ( model )
Ejecutar en Google Colab
Puedes usar? Transformers Generación de texto:
from transformers import pipeline
pipe = pipeline ( "text-generation" , model = model , tokenizer = tokenizer )
print ( pipe ( "AI is going to" , max_new_tokens = 256 ))
Puedes usar? Parámetros de generación de transformadores:
pipe ( "AI is going to" , max_new_tokens = 256 , do_sample = True , temperature = 0.8 , repetition_penalty = 1.1 )
Puedes usar? Tokenizers de transformadores:
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.
Está integrado en Langchain. Ver Langchain Docs.
Para ejecutar algunas de las capas del modelo en GPU, establezca el parámetro gpu_layers
:
llm = AutoModelForCausalLM . from_pretrained ( "TheBloke/Llama-2-7B-GGML" , gpu_layers = 50 )
Ejecutar en Google Colab
Instale bibliotecas CUDA usando:
pip install ctransformers[cuda]
Para habilitar el soporte ROCM, instale el paquete ctransformers
usando:
CT_HIPBLAS=1 pip install ctransformers --no-binary ctransformers
Para habilitar el soporte de metal, instale el paquete ctransformers
usando:
CT_METAL=1 pip install ctransformers --no-binary ctransformers
Nota: Esta es una característica experimental y solo los modelos de LLAMA son compatibles con Exllama.
Instale dependencias adicionales utilizando:
pip install ctransformers[gptq]
Cargue un modelo GPTQ usando:
llm = AutoModelForCausalLM . from_pretrained ( "TheBloke/Llama-2-7B-GPTQ" )
Ejecutar en Google Colab
Si el nombre o la ruta del modelo no contienen la palabra
gptq
entonces especifiquemodel_type="gptq"
.
También se puede usar con Langchain. Las API de bajo nivel no son totalmente compatibles.
Parámetro | Tipo | Descripción | Por defecto |
---|---|---|---|
top_k | int | El valor de Top-K para usar para el muestreo. | 40 |
top_p | float | El valor de TOP-P para usar para el muestreo. | 0.95 |
temperature | float | La temperatura de usar para el muestreo. | 0.8 |
repetition_penalty | float | La penalización de repetición a usar para el muestreo. | 1.1 |
last_n_tokens | int | El número de últimos tokens para usar para la penalización de repetición. | 64 |
seed | int | El valor de la semilla para usar para muestrear tokens. | -1 |
max_new_tokens | int | El número máximo de tokens nuevos para generar. | 256 |
stop | List[str] | Una lista de secuencias para detener la generación cuando se encuentra. | None |
stream | bool | Si transmitir el texto generado. | False |
reset | bool | Si reiniciar el estado del modelo antes de generar texto. | True |
batch_size | int | El tamaño de lote para usar para evaluar los tokens en un solo mensaje. | 8 |
threads | int | El número de hilos a usar para evaluar tokens. | -1 |
context_length | int | La longitud máxima de contexto para usar. | -1 |
gpu_layers | int | El número de capas para ejecutar en GPU. | 0 |
Nota: Actualmente, solo los modelos LLAMA, MPT y Falcon admiten el 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
Carga el modelo de idioma desde un archivo local o repositorio remoto.
Args:
model_path_or_repo_id
: la ruta a un archivo o directorio de modelo o el nombre de un repositorio de modelo de centro de abrazadera.model_type
: The model type.model_file
: The name of the model file in repo or directory.config
: AutoConfig
object.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. It can be a branch name, a tag name, or a commit id.hf
: Whether to create a Hugging Face Transformers model. Returns: LLM
object.
LLM
LLM.__init__
__init__ (
model_path : str ,
model_type : Optional [ str ] = None ,
config : Optional [ ctransformers . llm . Config ] = None ,
lib : Optional [ str ] = None
)
Loads the language model from a local file.
Args:
model_path
: The path to a model file.model_type
: el tipo de modelo.config
: objeto Config
.lib
: El camino a una biblioteca compartida o una de avx2
, avx
, basic
. El token de inicio de la secuencia.
The config object.
The context length of model.
Las incrustaciones de entrada.
La ficha del final de la secuencia.
Las probabilidades de registro no anormalizadas.
La ruta al archivo modelo.
El tipo de modelo.
La ficha de relleno.
El número de tokens en el vocabulario.
LLM.detokenize
detokenize ( tokens : Sequence [ int ], decode : bool = True ) → Union [ str , bytes ]
Convierte una lista de tokens en texto.
Args:
tokens
: la lista de tokens.decode
: si decodificará el texto como cadena UTF-8.Devuelve: El texto combinado de todos los tokens.
LLM.embed
embed (
input : Union [ str , Sequence [ int ]],
batch_size : Optional [ int ] = None ,
threads : Optional [ int ] = None
) → List [ float ]
Calcula incrustaciones para un texto o lista de tokens.
Nota: Actualmente, solo los modelos de Llama y Falcon admiten incrustaciones.
Args:
input
: El texto de entrada o la lista de tokens para obtener incrustaciones.batch_size
: el tamaño de lotes a usar para evaluar los tokens en un solo mensaje. Valor predeterminado: 8
threads
: el número de hilos a usar para evaluar tokens. Valor predeterminado: -1
Devuelve: los incrustaciones de entrada.
LLM.eval
eval (
tokens : Sequence [ int ],
batch_size : Optional [ int ] = None ,
threads : Optional [ int ] = None
) → None
Evalúa una lista de tokens.
Args:
tokens
: la lista de tokens para evaluar.batch_size
: el tamaño de lotes a usar para evaluar los tokens en un solo mensaje. Default: 8
threads
: The number of threads to use for evaluating tokens. Default: -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 ]
Genera nuevas fichas a partir de una lista de tokens.
Args:
tokens
: la lista de tokens para generar tokens.top_k
: el valor de Top-K para usar para el muestreo. Valor predeterminado: 40
top_p
: El valor de TOP-P para usar para el muestreo. Valor predeterminado: 0.95
temperature
: la temperatura a usar para el muestreo. Valor predeterminado: 0.8
repetition_penalty
: la penalización de repetición a usar para el muestreo. Default: 1.1
last_n_tokens
: The number of last tokens to use for repetition penalty. Default: 64
seed
: el valor de la semilla para usar para muestrear tokens. Valor predeterminado: -1
batch_size
: The batch size to use for evaluating tokens in a single prompt. Default: 8
threads
: el número de hilos a usar para evaluar tokens. Valor predeterminado: -1
reset
: si se debe restablecer el estado del modelo antes de generar texto. Default: True
Returns: The generated tokens.
LLM.is_eos_token
is_eos_token ( token : int ) → bool
Checks if a token is an end-of-sequence token.
Args:
token
: The token to check. Returns: True
if the token is an end-of-sequence token else False
.
LLM.prepare_inputs_for_generation
prepare_inputs_for_generation (
tokens : Sequence [ int ],
reset : Optional [ bool ] = None
) → Sequence [ int ]
Removes input tokens that are evaluated in the past and updates the LLM context.
Args:
tokens
: The list of input tokens.reset
: Whether to reset the model state before generating text. Default: True
Returns: The list of tokens to evaluate.
LLM.reset
reset () → None
Deprecated since 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
Samples a token from the model.
Args:
top_k
: el valor de Top-K para usar para el muestreo. Valor predeterminado: 40
top_p
: El valor de TOP-P para usar para el muestreo. Valor predeterminado: 0.95
temperature
: la temperatura a usar para el muestreo. Valor predeterminado: 0.8
repetition_penalty
: la penalización de repetición a usar para el muestreo. Valor predeterminado: 1.1
last_n_tokens
: el número de tokens Últimos para usar para la penalización de repetición. Valor predeterminado: 64
seed
: el valor de la semilla para usar para muestrear tokens. Valor predeterminado: -1
Devuelve: el token muestreado.
LLM.tokenize
tokenize ( text : str , add_bos_token : Optional [ bool ] = None ) → List [ int ]
Converts a text into list of tokens.
Args:
text
: The text to tokenize.add_bos_token
: si se debe agregar el token de inicio de la secuencia.Devuelve: La 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 ]]
Generates text from a prompt.
Args:
prompt
: The prompt to generate text from.max_new_tokens
: el número máximo de tokens nuevos para generar. Valor predeterminado: 256
top_k
: el valor de Top-K para usar para el muestreo. Valor predeterminado: 40
top_p
: El valor de TOP-P para usar para el muestreo. Valor predeterminado: 0.95
temperature
: la temperatura a usar para el muestreo. Valor predeterminado: 0.8
repetition_penalty
: la penalización de repetición a usar para el muestreo. Valor predeterminado: 1.1
last_n_tokens
: el número de tokens Últimos para usar para la penalización de repetición. Valor predeterminado: 64
seed
: el valor de la semilla para usar para muestrear tokens. Valor predeterminado: -1
batch_size
: el tamaño de lotes a usar para evaluar los tokens en un solo mensaje. Valor predeterminado: 8
threads
: el número de hilos a usar para evaluar tokens. Valor predeterminado: -1
stop
: una lista de secuencias para detener la generación cuando se encuentra. Valor predeterminado: None
stream
: si transmitir el texto generado. Valor predeterminado: False
reset
: si se debe restablecer el estado del modelo antes de generar texto. Valor predeterminado: True
Devuelve: el texto generado.
MIT