การผูก Python สำหรับรุ่นหม้อแปลงที่ใช้ใน C/C ++ โดยใช้ไลบรารี GGML
ดู chatdocs
| แบบจำลอง | ประเภทรุ่น | คนขี้เกียจ | โลหะ |
|---|---|---|---|
| GPT-2 | gpt2 | ||
| GPT-J, GPT4ALL-J | gptj | ||
| GPT-NEOX, Stablelm | gpt_neox | ||
| เหยี่ยว | falcon | ||
| Llama, Llama 2 | llama | ||
| MPT | mpt | ||
| Starcoder, Starchat | gpt_bigcode | ||
| Dolly v2 | dolly-v2 | ||
| คำสั่ง | replit |
pip install ctransformersมันมีอินเทอร์เฟซแบบครบวงจรสำหรับทุกรุ่น:
from ctransformers import AutoModelForCausalLM
llm = AutoModelForCausalLM . from_pretrained ( "/path/to/ggml-model.bin" , model_type = "gpt2" )
print ( llm ( "AI is going to" ))ทำงานใน Google Colab
ในการสตรีมเอาต์พุตให้ตั้งค่า stream=True :
for text in llm ( "AI is going to" , stream = True ):
print ( text , end = "" , flush = True )คุณสามารถโหลดโมเดลจาก Hugging Face Hub โดยตรง:
llm = AutoModelForCausalLM . from_pretrained ( "marella/gpt-2-ggml" ) หากโมเดล repo มีไฟล์หลายรุ่น ( .bin หรือไฟล์ .gguf ) ให้ระบุไฟล์โมเดลโดยใช้:
llm = AutoModelForCausalLM . from_pretrained ( "marella/gpt-2-ggml" , model_file = "ggml-model.bin" )หมายเหตุ: นี่เป็นคุณสมบัติการทดลองและอาจเปลี่ยนแปลงในอนาคต
ใช้กับ? หม้อแปลงสร้างโมเดลและโทเค็นโดยใช้:
from ctransformers import AutoModelForCausalLM , AutoTokenizer
model = AutoModelForCausalLM . from_pretrained ( "marella/gpt-2-ggml" , hf = True )
tokenizer = AutoTokenizer . from_pretrained ( model )ทำงานใน Google Colab
คุณสามารถใช้? ท่อส่งข้อความการสร้างข้อความ:
from transformers import pipeline
pipe = pipeline ( "text-generation" , model = model , tokenizer = tokenizer )
print ( pipe ( "AI is going to" , max_new_tokens = 256 ))คุณสามารถใช้? พารามิเตอร์การสร้าง Transformers:
pipe ( "AI is going to" , max_new_tokens = 256 , do_sample = True , temperature = 0.8 , repetition_penalty = 1.1 )คุณสามารถใช้? 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.มันถูกรวมเข้ากับ Langchain ดูเอกสาร Langchain
ในการเรียกใช้เลเยอร์โมเดลบางส่วนบน GPU ให้ตั้งค่าพารามิเตอร์ gpu_layers :
llm = AutoModelForCausalLM . from_pretrained ( "TheBloke/Llama-2-7B-GGML" , gpu_layers = 50 )ทำงานใน Google Colab
ติดตั้งไลบรารี CUDA โดยใช้:
pip install ctransformers[cuda] หากต้องการเปิดใช้งานการสนับสนุน ROCM ให้ติดตั้งแพ็คเกจ ctransformers โดยใช้:
CT_HIPBLAS=1 pip install ctransformers --no-binary ctransformers หากต้องการเปิดใช้งานการรองรับโลหะให้ติดตั้งแพ็คเกจ ctransformers โดยใช้:
CT_METAL=1 pip install ctransformers --no-binary ctransformersหมายเหตุ: นี่เป็นคุณสมบัติการทดลองและมีเพียงรุ่น Llama เท่านั้นที่ได้รับการสนับสนุนโดยใช้ Exllama
ติดตั้งการอ้างอิงเพิ่มเติมโดยใช้:
pip install ctransformers[gptq]โหลดรุ่น GPTQ โดยใช้:
llm = AutoModelForCausalLM . from_pretrained ( "TheBloke/Llama-2-7B-GPTQ" )ทำงานใน Google Colab
หากชื่อรุ่นหรือเส้นทางไม่มีคำว่า
gptqให้ระบุmodel_type="gptq"
นอกจากนี้ยังสามารถใช้กับ Langchain API ระดับต่ำไม่ได้รับการสนับสนุนอย่างเต็มที่
| พารามิเตอร์ | พิมพ์ | คำอธิบาย | ค่าเริ่มต้น |
|---|---|---|---|
top_k | int | ค่า Top-K ที่จะใช้สำหรับการสุ่มตัวอย่าง | 40 |
top_p | float | ค่า Top-P ที่จะใช้สำหรับการสุ่มตัวอย่าง | 0.95 |
temperature | float | อุณหภูมิที่จะใช้สำหรับการสุ่มตัวอย่าง | 0.8 |
repetition_penalty | float | การลงโทษซ้ำ ๆ เพื่อใช้สำหรับการสุ่มตัวอย่าง | 1.1 |
last_n_tokens | int | จำนวนโทเค็นสุดท้ายที่ใช้สำหรับการลงโทษซ้ำ | 64 |
seed | int | ค่าเมล็ดที่ใช้สำหรับการสุ่มตัวอย่างโทเค็น | -1 |
max_new_tokens | int | จำนวนโทเค็นใหม่สูงสุดที่จะสร้าง | 256 |
stop | List[str] | รายการลำดับเพื่อหยุดการสร้างเมื่อพบ | None |
stream | bool | ไม่ว่าจะสตรีมข้อความที่สร้างขึ้นหรือไม่ | False |
reset | bool | ไม่ว่าจะรีเซ็ตสถานะโมเดลก่อนที่จะสร้างข้อความ | True |
batch_size | int | ขนาดแบทช์ที่ใช้สำหรับการประเมินโทเค็นในพรอมต์เดียว | 8 |
threads | int | จำนวนเธรดที่จะใช้สำหรับการประเมินโทเค็น | -1 |
context_length | int | ความยาวบริบทสูงสุดที่จะใช้ | -1 |
gpu_layers | int | จำนวนเลเยอร์ที่จะทำงานบน GPU | 0 |
หมายเหตุ: ปัจจุบันมีเพียงรุ่น Llama, MPT และ Falcon เท่านั้นที่รองรับพารามิเตอร์
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
) → LLMLoads the language model from a local file or remote repo.
Args:
model_path_or_repo_id : พา ธ ไปยังไฟล์โมเดลหรือไดเรกทอรีหรือชื่อของ repo โมเดลฮับใบหน้ากอดmodel_type : ประเภทรุ่นmodel_file : ชื่อของไฟล์โมเดลใน repo หรือไดเรกทอรีconfig : วัตถุ AutoConfiglib : เส้นทางไปยังห้องสมุดที่ใช้ร่วมกันหรือหนึ่งใน avx2 , avx , basiclocal_files_only : ไม่ว่าจะดูเฉพาะไฟล์ท้องถิ่น (เช่นอย่าพยายามดาวน์โหลดรุ่น)revision : รุ่นโมเดลเฉพาะที่จะใช้ มันอาจเป็นชื่อสาขาชื่อแท็กหรือรหัสที่กระทำhf : ไม่ว่าจะสร้างโมเดล Transformers Hugging หรือไม่ ผลตอบแทน: วัตถุ LLM
LLMLLM.__init__ __init__ (
model_path : str ,
model_type : Optional [ str ] = None ,
config : Optional [ ctransformers . llm . Config ] = None ,
lib : Optional [ str ] = None
)โหลดโมเดลภาษาจากไฟล์ท้องถิ่น
Args:
model_path : พา ธ ไปยังไฟล์รุ่นmodel_type : ประเภทรุ่นconfig : วัตถุ Configlib : เส้นทางไปยังห้องสมุดที่ใช้ร่วมกันหรือหนึ่งใน avx2 , avx , basic โทเค็นเริ่มต้นของลำดับ
วัตถุกำหนดค่า
The context length of model.
การฝังอินพุต
โทเค็นท้ายสุด
ความน่าจะเป็นบันทึกที่ไม่เป็นปกติ
พา ธ ไปยังไฟล์โมเดล
ประเภทรุ่น
โทเค็นช่องว่างภายใน
จำนวนโทเค็นในคำศัพท์
LLM.detokenize detokenize ( tokens : Sequence [ int ], decode : bool = True ) → Union [ str , bytes ]แปลงรายการโทเค็นเป็นข้อความ
Args:
tokens : รายการโทเค็นdecode : จะถอดรหัสข้อความเป็นสตริง UTF-8 หรือไม่ผลตอบแทน: ข้อความรวมของโทเค็นทั้งหมด
LLM.embed embed (
input : Union [ str , Sequence [ int ]],
batch_size : Optional [ int ] = None ,
threads : Optional [ int ] = None
) → List [ float ]คำนวณการฝังตัวสำหรับข้อความหรือรายการโทเค็น
หมายเหตุ: ปัจจุบันมีเพียงรุ่น Llama และ Falcon เท่านั้นที่รองรับการฝังตัว
Args:
input : ข้อความอินพุตหรือรายการโทเค็นเพื่อรับการฝังตัวสำหรับbatch_size : ขนาดแบทช์ที่ใช้สำหรับการประเมินโทเค็นในพรอมต์เดียว ค่าเริ่มต้น: 8threads : จำนวนเธรดที่จะใช้สำหรับการประเมินโทเค็น ค่าเริ่มต้น: -1ผลตอบแทน: อินพุตฝังตัว
LLM.eval eval (
tokens : Sequence [ int ],
batch_size : Optional [ int ] = None ,
threads : Optional [ int ] = None
) → Noneประเมินรายการโทเค็น
Args:
tokens : รายการโทเค็นเพื่อประเมินbatch_size : The batch size to use for evaluating tokens in a single prompt. ค่าเริ่มต้น: 8threads : จำนวนเธรดที่จะใช้สำหรับการประเมินโทเค็น ค่าเริ่มต้น: -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 ]สร้างโทเค็นใหม่จากรายการโทเค็น
Args:
tokens : รายการโทเค็นเพื่อสร้างโทเค็นจากtop_k : ค่า Top-K ที่จะใช้สำหรับการสุ่มตัวอย่าง ค่าเริ่มต้น: 40top_p : ค่า Top-P ที่จะใช้สำหรับการสุ่มตัวอย่าง ค่าเริ่มต้น: 0.95temperature : อุณหภูมิที่จะใช้สำหรับการสุ่มตัวอย่าง ค่าเริ่มต้น: 0.8repetition_penalty : การลงโทษซ้ำที่จะใช้สำหรับการสุ่มตัวอย่าง ค่าเริ่มต้น: 1.1last_n_tokens : จำนวนโทเค็นสุดท้ายที่ใช้สำหรับการลงโทษซ้ำ ค่าเริ่มต้น: 64seed : ค่าเมล็ดที่จะใช้สำหรับการสุ่มตัวอย่างโทเค็น ค่าเริ่มต้น: -1batch_size : ขนาดแบทช์ที่ใช้สำหรับการประเมินโทเค็นในพรอมต์เดียว ค่าเริ่มต้น: 8threads : จำนวนเธรดที่จะใช้สำหรับการประเมินโทเค็น ค่าเริ่มต้น: -1reset : จะรีเซ็ตสถานะโมเดลก่อนที่จะสร้างข้อความ ค่าเริ่มต้น: Trueผลตอบแทน: โทเค็นที่สร้างขึ้น
LLM.is_eos_token is_eos_token ( token : int ) → boolตรวจสอบว่าโทเค็นเป็นโทเค็นสุดท้ายหรือไม่
Args:
token : โทเค็นที่จะตรวจสอบ Returns: True ถ้าโทเค็นเป็นโทเค็นสุดท้ายที่เป็น False
LLM.prepare_inputs_for_generation prepare_inputs_for_generation (
tokens : Sequence [ int ],
reset : Optional [ bool ] = None
) → Sequence [ int ]ลบโทเค็นอินพุตที่ได้รับการประเมินในอดีตและอัปเดตบริบท LLM
Args:
tokens : รายการโทเค็นอินพุตreset : จะรีเซ็ตสถานะโมเดลก่อนที่จะสร้างข้อความ ค่าเริ่มต้น: Trueผลตอบแทน: รายการโทเค็นเพื่อประเมิน
LLM.reset reset () → Noneเลิกใช้ตั้งแต่ 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ตัวอย่างโทเค็นจากโมเดล
Args:
top_k : ค่า Top-K ที่จะใช้สำหรับการสุ่มตัวอย่าง ค่าเริ่มต้น: 40top_p : ค่า Top-P ที่จะใช้สำหรับการสุ่มตัวอย่าง ค่าเริ่มต้น: 0.95temperature : อุณหภูมิที่จะใช้สำหรับการสุ่มตัวอย่าง ค่าเริ่มต้น: 0.8repetition_penalty : การลงโทษซ้ำที่จะใช้สำหรับการสุ่มตัวอย่าง ค่าเริ่มต้น: 1.1last_n_tokens : จำนวนโทเค็นสุดท้ายที่ใช้สำหรับการลงโทษซ้ำ Default: 64seed : ค่าเมล็ดที่จะใช้สำหรับการสุ่มตัวอย่างโทเค็น ค่าเริ่มต้น: -1ผลตอบแทน: โทเค็นตัวอย่าง
LLM.tokenize tokenize ( text : str , add_bos_token : Optional [ bool ] = None ) → List [ int ]แปลงข้อความเป็นรายการโทเค็น
Args:
text : ข้อความถึงโทเค็นadd_bos_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 ]]สร้างข้อความจากพรอมต์
Args:
prompt : พรอมต์เพื่อสร้างข้อความจากmax_new_tokens : จำนวนโทเค็นใหม่สูงสุดที่จะสร้าง ค่าเริ่มต้น: 256top_k : ค่า Top-K ที่จะใช้สำหรับการสุ่มตัวอย่าง ค่าเริ่มต้น: 40top_p : ค่า Top-P ที่จะใช้สำหรับการสุ่มตัวอย่าง Default: 0.95temperature : อุณหภูมิที่จะใช้สำหรับการสุ่มตัวอย่าง ค่าเริ่มต้น: 0.8repetition_penalty : การลงโทษซ้ำที่จะใช้สำหรับการสุ่มตัวอย่าง ค่าเริ่มต้น: 1.1last_n_tokens : จำนวนโทเค็นสุดท้ายที่ใช้สำหรับการลงโทษซ้ำ ค่าเริ่มต้น: 64seed : ค่าเมล็ดที่จะใช้สำหรับการสุ่มตัวอย่างโทเค็น ค่าเริ่มต้น: -1batch_size : ขนาดแบทช์ที่ใช้สำหรับการประเมินโทเค็นในพรอมต์เดียว ค่าเริ่มต้น: 8threads : จำนวนเธรดที่จะใช้สำหรับการประเมินโทเค็น ค่าเริ่มต้น: -1stop : A list of sequences to stop generation when encountered. ค่าเริ่มต้น: Nonestream : จะสตรีมข้อความที่สร้างขึ้นหรือไม่ ค่าเริ่มต้น: Falsereset : จะรีเซ็ตสถานะโมเดลก่อนที่จะสร้างข้อความ ค่าเริ่มต้น: Trueผลตอบแทน: ข้อความที่สร้างขึ้น
มิกซ์