Python -Bindungen für die in C/C ++ implementierten Transformatormodelle unter Verwendung der GGML -Bibliothek.
Siehe auch Chatdocs
| Modelle | Modelltyp | CUDA | Metall |
|---|---|---|---|
| GPT-2 | gpt2 | ||
| GPT-J, GPT4ALL-J | gptj | ||
| GPT-Neox, Stablelm | gpt_neox | ||
| Falke | falcon | ✅ | |
| LAMA, LAMA 2 | llama | ✅ | ✅ |
| Mpt | mpt | ✅ | |
| StarCoder, Stärke | gpt_bigcode | ✅ | |
| Dolly v2 | dolly-v2 | ||
| Reaktion | replit |
pip install ctransformersEs bietet eine einheitliche Schnittstelle für alle Modelle:
from ctransformers import AutoModelForCausalLM
llm = AutoModelForCausalLM . from_pretrained ( "/path/to/ggml-model.bin" , model_type = "gpt2" )
print ( llm ( "AI is going to" ))In Google Colab ausführen
Um die Ausgabe zu streamen, setzen Sie stream=True :
for text in llm ( "AI is going to" , stream = True ):
print ( text , end = "" , flush = True )Sie können Modelle direkt aus dem Umarmung des Gesichtszentrums laden:
llm = AutoModelForCausalLM . from_pretrained ( "marella/gpt-2-ggml" ) Wenn ein Modell -Repo über mehrere Modelldateien ( .bin oder .gguf -Dateien) verfügt, geben Sie eine Modelldatei mit:
llm = AutoModelForCausalLM . from_pretrained ( "marella/gpt-2-ggml" , model_file = "ggml-model.bin" )Hinweis: Dies ist ein experimentelles Merkmal und kann sich in Zukunft ändern.
Zu benutzen mit? Transformatoren, erstellen Sie Modell und Tokenizer mit:
from ctransformers import AutoModelForCausalLM , AutoTokenizer
model = AutoModelForCausalLM . from_pretrained ( "marella/gpt-2-ggml" , hf = True )
tokenizer = AutoTokenizer . from_pretrained ( model )In Google Colab ausführen
Sie können verwenden? Transformers Text Generation Pipeline:
from transformers import pipeline
pipe = pipeline ( "text-generation" , model = model , tokenizer = tokenizer )
print ( pipe ( "AI is going to" , max_new_tokens = 256 ))Sie können verwenden? Transformatorengenerierungsparameter:
pipe ( "AI is going to" , max_new_tokens = 256 , do_sample = True , temperature = 0.8 , repetition_penalty = 1.1 )Sie können verwenden? Transformers Tokenizer:
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.Es ist in Langchain integriert. Siehe Langchain Docs.
Setzen Sie den Parameter gpu_layers , um einige der Modellebenen auf der GPU auszuführen:
llm = AutoModelForCausalLM . from_pretrained ( "TheBloke/Llama-2-7B-GGML" , gpu_layers = 50 )In Google Colab ausführen
Installieren Sie CUDA -Bibliotheken mit:
pip install ctransformers[cuda] Um die ROCM -Unterstützung zu aktivieren, installieren Sie das ctransformers -Paket mit:
CT_HIPBLAS=1 pip install ctransformers --no-binary ctransformers So installieren Sie das ctransformers -Paket mit: So installieren Sie die Metallunterstützung mit:
CT_METAL=1 pip install ctransformers --no-binary ctransformersHinweis: Dies ist ein experimentelles Merkmal und nur Lama -Modelle werden mit Exllama unterstützt.
Installieren Sie zusätzliche Abhängigkeiten mit:
pip install ctransformers[gptq]Laden Sie ein GPTQ -Modell mit:
llm = AutoModelForCausalLM . from_pretrained ( "TheBloke/Llama-2-7B-GPTQ" )In Google Colab ausführen
Wenn der Modellname oder Pfad nicht das Wort
gptqenthält, geben Siemodel_type="gptq"an.
Es kann auch mit Langchain verwendet werden. APIs mit niedriger Ebene werden nicht vollständig unterstützt.
| Parameter | Typ | Beschreibung | Standard |
|---|---|---|---|
top_k | int | Der Top-K-Wert für die Probenahme. | 40 |
top_p | float | Der Top-P-Wert für die Probenahme. | 0.95 |
temperature | float | Die Temperatur für die Probenahme. | 0.8 |
repetition_penalty | float | Die Wiederholungsstrafe für die Probenahme. | 1.1 |
last_n_tokens | int | Die Anzahl der letzten Token für Wiederholungsstrafen. | 64 |
seed | int | Der Saatgutwert für Probenahme -Token. | -1 |
max_new_tokens | int | Die maximale Anzahl neuer Token zu generieren. | 256 |
stop | List[str] | Eine Liste von Sequenzen, um die Erzeugung zu stoppen, wenn sie angetroffen werden. | None |
stream | bool | Ob der generierte Text streamen. | False |
reset | bool | Ob Sie den Modellzustand zurücksetzen möchten, bevor Sie Text generieren. | True |
batch_size | int | Die Stapelgröße für die Bewertung von Token in einer einzigen Eingabeaufforderung. | 8 |
threads | int | Die Anzahl der Threads, die für die Bewertung von Token verwendet werden sollen. | -1 |
context_length | int | Die maximale Kontextlänge zu verwenden. | -1 |
gpu_layers | int | Die Anzahl der auf GPU ausgeführten Schichten. | 0 |
Hinweis: Derzeit unterstützen nur Lama-, MPT- und Falcon -Modelle den Parameter
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
) → LLMLaden Sie das Sprachmodell aus einer lokalen Datei oder einem Remote -Repo.
Args:
model_path_or_repo_id : Der Pfad zu einer Modelldatei oder einem Verzeichnis oder dem Namen eines Umarmungsgesichts -Hub -Modells.model_type : Der Modelltyp.model_file : Der Name der Modelldatei in Repo oder Verzeichnis.config : AutoConfig -Objekt.lib : Der Weg zu einer gemeinsamen Bibliothek oder einer von avx2 , avx , basic .local_files_only : ob man sich nur lokale Dateien ansehen oder nicht (dh nicht versuchen, das Modell herunterzuladen).revision : Die zu verwendende Modellversion. Es kann ein Zweigname, ein Tag -Name oder eine Commit -ID sein.hf : Ob Sie ein Modell der umarmenden Gesichtstransformatoren erstellen sollen. Rückgabe: LLM -Objekt.
LLMLLM.__init__ __init__ (
model_path : str ,
model_type : Optional [ str ] = None ,
config : Optional [ ctransformers . llm . Config ] = None ,
lib : Optional [ str ] = None
)Lädt das Sprachmodell aus einer lokalen Datei.
Args:
model_path : Der Pfad zu einer Modelldatei.model_type : Der Modelltyp.config : Config .lib : Der Weg zu einer gemeinsamen Bibliothek oder einer von avx2 , avx , basic . Der Sequenz-Token.
Das Konfigurationsobjekt.
Die Kontextlänge des Modells.
Die Eingangsbettdings.
Das Ende der Sachhunde Token.
Die nicht operativen Protokollwahrscheinlichkeiten.
Der Pfad zur Modelldatei.
Der Modelltyp.
Das Polstertoken.
Die Anzahl der Token im Wortschatz.
LLM.detokenize detokenize ( tokens : Sequence [ int ], decode : bool = True ) → Union [ str , bytes ]Konvertiert eine Liste von Token in Text.
Args:
tokens : Die Liste der Token.decode : Ob Sie den Text als UTF-8-Zeichenfolge dekodieren sollen.Rückgabe: Der kombinierte Text aller Token.
LLM.embed embed (
input : Union [ str , Sequence [ int ]],
batch_size : Optional [ int ] = None ,
threads : Optional [ int ] = None
) → List [ float ]Berechnet Einbettung für einen Text oder eine Liste von Token.
Hinweis: Derzeit unterstützen nur Lama- und Falcon -Modelle Einbettung.
Args:
input : Der Eingabetxt oder die Liste der Token, um Einbettung zu erhalten.batch_size : Die Stapelgröße für die Bewertung von Token in einer einzigen Eingabeaufforderung. Standard: 8threads : Die Anzahl der Threads, die für die Bewertung von Token verwendet werden sollen. Standard: -1Rückgabe: Die Eingangsbettungen.
LLM.eval eval (
tokens : Sequence [ int ],
batch_size : Optional [ int ] = None ,
threads : Optional [ int ] = None
) → NoneBewertet eine Liste von Token.
Args:
tokens : Die Liste der Tokens zu bewerten.batch_size : Die Stapelgröße für die Bewertung von Token in einer einzigen Eingabeaufforderung. Standard: 8threads : Die Anzahl der Threads, die für die Bewertung von Token verwendet werden sollen. Standard: -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 ]Generiert neue Token aus einer Liste von Token.
Args:
tokens : Die Liste der Token, um Token zu generieren.top_k : Der Top-K-Wert für die Probenahme. Standard: 40top_p : Der Top-P-Wert für die Probenahme. Standard: 0.95temperature : Die für die Probenahme zu verwendende Temperatur. Standard: 0.8repetition_penalty : Die Wiederholungsstrafe für die Probenahme. Standard: 1.1last_n_tokens : Die Anzahl der letzten Token, die für die Wiederholungsstrafe verwendet werden sollen. Standard: 64seed : Der Samenwert für Probenahme -Token. Standard: -1batch_size : Die Stapelgröße für die Bewertung von Token in einer einzigen Eingabeaufforderung. Standard: 8threads : Die Anzahl der Threads, die für die Bewertung von Token verwendet werden sollen. Standard: -1reset : Ob Sie den Modellzustand vor dem Generieren von Text zurücksetzen sollen. Standard: TrueRückgabe: Die erzeugten Token.
LLM.is_eos_token is_eos_token ( token : int ) → boolÜberprüft, ob ein Token ein Token am Ende der Sachhunde ist.
Args:
token : Das Token zum Überprüfen. Rückgabe: True , wenn das Token ein Sequenz-Token ist, sonst False .
LLM.prepare_inputs_for_generation prepare_inputs_for_generation (
tokens : Sequence [ int ],
reset : Optional [ bool ] = None
) → Sequence [ int ]Entfernt Eingangs -Token, die in der Vergangenheit ausgewertet werden, und aktualisiert den LLM -Kontext.
Args:
tokens : Die Liste der Eingabestypen.reset : Ob Sie den Modellzustand vor dem Generieren von Text zurücksetzen sollen. Standard: TrueRückgabe: Die Liste der Tokens zu bewerten.
LLM.reset reset () → NoneVeraltet seit 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
) → intProben ein Token aus dem Modell.
Args:
top_k : Der Top-K-Wert für die Probenahme. Standard: 40top_p : Der Top-P-Wert für die Probenahme. Standard: 0.95temperature : Die für die Probenahme zu verwendende Temperatur. Standard: 0.8repetition_penalty : Die Wiederholungsstrafe für die Probenahme. Standard: 1.1last_n_tokens : Die Anzahl der letzten Token, die für die Wiederholungsstrafe verwendet werden sollen. Standard: 64seed : Der Samenwert für Probenahme -Token. Standard: -1Rückkehr: Das abgetastete Token.
LLM.tokenize tokenize ( text : str , add_bos_token : Optional [ bool ] = None ) → List [ int ]Konvertiert einen Text in die Liste der Token.
Args:
text : Der Text zum Tokenize.add_bos_token : ob das add-sequence-token hinzugefügt wird.Rückgabe: Die Liste der Token.
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 ]]Erzeugt Text von einer Eingabeaufforderung.
Args:
prompt : Die Eingabeaufforderung, Text aus zu generieren.max_new_tokens : Die maximale Anzahl neuer Token zu generieren. Standard: 256top_k : Der Top-K-Wert für die Probenahme. Standard: 40top_p : Der Top-P-Wert für die Probenahme. Standard: 0.95temperature : Die für die Probenahme zu verwendende Temperatur. Standard: 0.8repetition_penalty : Die Wiederholungsstrafe für die Probenahme. Standard: 1.1last_n_tokens : Die Anzahl der letzten Token, die für die Wiederholungsstrafe verwendet werden sollen. Standard: 64seed : Der Samenwert für Probenahme -Token. Standard: -1batch_size : Die Stapelgröße für die Bewertung von Token in einer einzigen Eingabeaufforderung. Standard: 8threads : Die Anzahl der Threads, die für die Bewertung von Token verwendet werden sollen. Standard: -1stop : Eine Liste von Sequenzen, um die Erzeugung zu stoppen, wenn sie angetroffen werden. Standard: Nonestream : Ob der generierte Text streamen. Standard: Falsereset : Ob Sie den Modellzustand vor dem Generieren von Text zurücksetzen sollen. Standard: TrueRückgabe: Der generierte Text.
MIT