Binding Python untuk model transformator yang diimplementasikan dalam C/C ++ menggunakan pustaka GGML.
Juga lihat chatdocs
Model | Tipe model | Cuda | Logam |
---|---|---|---|
GPT-2 | gpt2 | ||
Gpt-j, gpt4all-j | gptj | ||
GPT-NEOX, STABLELM | gpt_neox | ||
Elang | falcon | ✅ | |
Llama, llama 2 | llama | ✅ | ✅ |
MPT | mpt | ✅ | |
Starcoder, Starchat | gpt_bigcode | ✅ | |
Dolly v2 | dolly-v2 | ||
Replit | replit |
pip install ctransformers
Ini menyediakan antarmuka terpadu untuk semua model:
from ctransformers import AutoModelForCausalLM
llm = AutoModelForCausalLM . from_pretrained ( "/path/to/ggml-model.bin" , model_type = "gpt2" )
print ( llm ( "AI is going to" ))
Jalankan di Google Colab
Untuk streaming output, atur stream=True
:
for text in llm ( "AI is going to" , stream = True ):
print ( text , end = "" , flush = True )
Anda dapat memuat model dari Hugging Face Hub secara langsung:
llm = AutoModelForCausalLM . from_pretrained ( "marella/gpt-2-ggml" )
Jika repo model memiliki beberapa file model (file .bin
atau .gguf
), tentukan file model menggunakan:
llm = AutoModelForCausalLM . from_pretrained ( "marella/gpt-2-ggml" , model_file = "ggml-model.bin" )
Catatan: Ini adalah fitur eksperimental dan dapat berubah di masa depan.
Untuk menggunakannya dengan? Transformers, Buat model dan tokenizer menggunakan:
from ctransformers import AutoModelForCausalLM , AutoTokenizer
model = AutoModelForCausalLM . from_pretrained ( "marella/gpt-2-ggml" , hf = True )
tokenizer = AutoTokenizer . from_pretrained ( model )
Jalankan di Google Colab
Anda bisa menggunakan? Pipa Teks Transformers:
from transformers import pipeline
pipe = pipeline ( "text-generation" , model = model , tokenizer = tokenizer )
print ( pipe ( "AI is going to" , max_new_tokens = 256 ))
Anda bisa menggunakan? Parameter Generasi Transformers:
pipe ( "AI is going to" , max_new_tokens = 256 , do_sample = True , temperature = 0.8 , repetition_penalty = 1.1 )
Anda bisa menggunakan? Transformers Tokenizers:
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.
Ini diintegrasikan ke dalam langchain. Lihat dokumen Langchain.
Untuk menjalankan beberapa lapisan model pada GPU, atur parameter gpu_layers
:
llm = AutoModelForCausalLM . from_pretrained ( "TheBloke/Llama-2-7B-GGML" , gpu_layers = 50 )
Jalankan di Google Colab
Instal Perpustakaan CUDA Menggunakan:
pip install ctransformers[cuda]
Untuk mengaktifkan dukungan ROCM, instal Paket ctransformers
menggunakan:
CT_HIPBLAS=1 pip install ctransformers --no-binary ctransformers
Untuk mengaktifkan dukungan logam, instal paket ctransformers
menggunakan:
CT_METAL=1 pip install ctransformers --no-binary ctransformers
Catatan: Ini adalah fitur eksperimental dan hanya model LLAMA yang didukung menggunakan Exllama.
Instal dependensi tambahan menggunakan:
pip install ctransformers[gptq]
Muat model GPTQ menggunakan:
llm = AutoModelForCausalLM . from_pretrained ( "TheBloke/Llama-2-7B-GPTQ" )
Jalankan di Google Colab
Jika nama model atau jalur tidak berisi kata
gptq
maka tentukanmodel_type="gptq"
.
Ini juga dapat digunakan dengan langchain. API tingkat rendah tidak sepenuhnya didukung.
Parameter | Jenis | Keterangan | Bawaan |
---|---|---|---|
top_k | int | Nilai Top-K untuk digunakan untuk pengambilan sampel. | 40 |
top_p | float | Nilai Pop-P yang akan digunakan untuk pengambilan sampel. | 0.95 |
temperature | float | Suhu yang akan digunakan untuk pengambilan sampel. | 0.8 |
repetition_penalty | float | Hukuman pengulangan untuk digunakan untuk pengambilan sampel. | 1.1 |
last_n_tokens | int | Jumlah token terakhir yang akan digunakan untuk penalti pengulangan. | 64 |
seed | int | Nilai benih untuk digunakan untuk token pengambilan sampel. | -1 |
max_new_tokens | int | Jumlah maksimum token baru untuk dihasilkan. | 256 |
stop | List[str] | Daftar urutan untuk menghentikan generasi saat ditemui. | None |
stream | bool | Apakah akan streaming teks yang dihasilkan. | False |
reset | bool | Apakah akan mengatur ulang status model sebelum menghasilkan teks. | True |
batch_size | int | Ukuran batch untuk digunakan untuk mengevaluasi token dalam satu prompt. | 8 |
threads | int | Jumlah utas yang akan digunakan untuk mengevaluasi token. | -1 |
context_length | int | Panjang konteks maksimum untuk digunakan. | -1 |
gpu_layers | int | Jumlah lapisan yang harus dijalankan pada GPU. | 0 |
Catatan: Saat ini hanya model Llama, MPT dan Falcon mendukung 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
) → LLM
Memuat model bahasa dari file lokal atau repo jarak jauh.
Args:
model_path_or_repo_id
: Jalur ke file model atau direktori atau nama repo model hub hub peluk.model_type
: Jenis model.model_file
: Nama file model di repo atau direktori.config
: Objek AutoConfig
.lib
: Jalan ke perpustakaan bersama atau salah satu dari avx2
, avx
, basic
.local_files_only
: Apakah hanya akan melihat file lokal atau tidak (yaitu, jangan mencoba mengunduh model).revision
: Versi model spesifik untuk digunakan. Ini bisa berupa nama cabang, nama tag, atau ID komit.hf
: Apakah akan membuat model Transformers Face Hugging. Pengembalian: objek LLM
.
LLM
LLM.__init__
__init__ (
model_path : str ,
model_type : Optional [ str ] = None ,
config : Optional [ ctransformers . llm . Config ] = None ,
lib : Optional [ str ] = None
)
Memuat model bahasa dari file lokal.
Args:
model_path
: Jalur ke file model.model_type
: Jenis model.config
: Objek Config
.lib
: Jalan ke perpustakaan bersama atau salah satu dari avx2
, avx
, basic
. Token awal urutan.
Objek konfigurasi.
Panjang konteks model.
Embeddings input.
Token akhir urutan.
Probabilitas log yang tidak diformalkan.
Jalur ke file model.
Tipe model.
Token padding.
Jumlah token dalam kosakata.
LLM.detokenize
detokenize ( tokens : Sequence [ int ], decode : bool = True ) → Union [ str , bytes ]
Mengubah daftar token menjadi teks.
Args:
tokens
: Daftar token.decode
: Apakah akan memecahkan kode teks sebagai string UTF-8.Pengembalian: Teks gabungan dari semua token.
LLM.embed
embed (
input : Union [ str , Sequence [ int ]],
batch_size : Optional [ int ] = None ,
threads : Optional [ int ] = None
) → List [ float ]
Menghitung embeddings untuk teks atau daftar token.
Catatan: Saat ini hanya model Llama dan Falcon yang mendukung embeddings.
Args:
input
: Teks input atau daftar token untuk mendapatkan embeddings.batch_size
: Ukuran batch yang akan digunakan untuk mengevaluasi token dalam satu prompt. Default: 8
threads
: Jumlah utas yang akan digunakan untuk mengevaluasi token. Default: -1
Pengembalian: Embeddings input.
LLM.eval
eval (
tokens : Sequence [ int ],
batch_size : Optional [ int ] = None ,
threads : Optional [ int ] = None
) → None
Mengevaluasi daftar token.
Args:
tokens
: Daftar token untuk dievaluasi.batch_size
: Ukuran batch yang akan digunakan untuk mengevaluasi token dalam satu prompt. Default: 8
threads
: Jumlah utas yang akan digunakan untuk mengevaluasi token. 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 ]
Menghasilkan token baru dari daftar token.
Args:
tokens
: Daftar token untuk menghasilkan token dari.top_k
: Nilai Top-K yang akan digunakan untuk pengambilan sampel. Default: 40
top_p
: Nilai Top-P yang akan digunakan untuk pengambilan sampel. Default: 0.95
temperature
: Suhu yang akan digunakan untuk pengambilan sampel. Default: 0.8
repetition_penalty
: penalti pengulangan untuk digunakan untuk pengambilan sampel. Default: 1.1
last_n_tokens
: Jumlah token terakhir yang akan digunakan untuk penalti pengulangan. Default: 64
seed
: Nilai benih yang akan digunakan untuk token pengambilan sampel. Default: -1
batch_size
: Ukuran batch yang akan digunakan untuk mengevaluasi token dalam satu prompt. Default: 8
threads
: Jumlah utas yang akan digunakan untuk mengevaluasi token. Default: -1
reset
: Apakah akan mengatur ulang status model sebelum menghasilkan teks. Default: True
Pengembalian: Token yang dihasilkan.
LLM.is_eos_token
is_eos_token ( token : int ) → bool
Periksa apakah token adalah token akhir urutan.
Args:
token
: Token untuk memeriksa. Pengembalian: True
jika token adalah token akhir-lain yang False
.
LLM.prepare_inputs_for_generation
prepare_inputs_for_generation (
tokens : Sequence [ int ],
reset : Optional [ bool ] = None
) → Sequence [ int ]
Menghapus token input yang dievaluasi di masa lalu dan memperbarui konteks LLM.
Args:
tokens
: Daftar token input.reset
: Apakah akan mengatur ulang status model sebelum menghasilkan teks. Default: True
Pengembalian: Daftar token untuk dievaluasi.
LLM.reset
reset () → None
Tercerahkan sejak 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
Sampel token dari model.
Args:
top_k
: Nilai Top-K yang akan digunakan untuk pengambilan sampel. Default: 40
top_p
: Nilai Top-P yang akan digunakan untuk pengambilan sampel. Default: 0.95
temperature
: Suhu yang akan digunakan untuk pengambilan sampel. Default: 0.8
repetition_penalty
: penalti pengulangan untuk digunakan untuk pengambilan sampel. Default: 1.1
last_n_tokens
: Jumlah token terakhir yang akan digunakan untuk penalti pengulangan. Default: 64
seed
: Nilai benih yang akan digunakan untuk token pengambilan sampel. Default: -1
Pengembalian: Token Sampel.
LLM.tokenize
tokenize ( text : str , add_bos_token : Optional [ bool ] = None ) → List [ int ]
Mengubah teks menjadi daftar token.
Args:
text
: Teks untuk tokenize.add_bos_token
: Apakah akan menambahkan token awal-urutan.Pengembalian: Daftar 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 ]]
Menghasilkan teks dari prompt.
Args:
prompt
: Prompt untuk menghasilkan teks dari.max_new_tokens
: Jumlah maksimum token baru yang akan dihasilkan. Default: 256
top_k
: Nilai Top-K yang akan digunakan untuk pengambilan sampel. Default: 40
top_p
: Nilai Top-P yang akan digunakan untuk pengambilan sampel. Default: 0.95
temperature
: Suhu yang akan digunakan untuk pengambilan sampel. Default: 0.8
repetition_penalty
: penalti pengulangan untuk digunakan untuk pengambilan sampel. Default: 1.1
last_n_tokens
: Jumlah token terakhir yang akan digunakan untuk penalti pengulangan. Default: 64
seed
: Nilai benih yang akan digunakan untuk token pengambilan sampel. Default: -1
batch_size
: Ukuran batch yang akan digunakan untuk mengevaluasi token dalam satu prompt. Default: 8
threads
: Jumlah utas yang akan digunakan untuk mengevaluasi token. Default: -1
stop
: Daftar urutan untuk berhenti generasi saat ditemui. Default: None
stream
: Apakah akan streaming teks yang dihasilkan. Default: False
reset
: Apakah akan mengatur ulang status model sebelum menghasilkan teks. Default: True
Pengembalian: Teks yang dihasilkan.
Mit