روابط Python لنماذج المحولات التي تم تنفيذها في C/C ++ باستخدام مكتبة GGML.
انظر أيضا chatdocs
| النماذج | نوع النموذج | كودا | معدن |
|---|---|---|---|
| GPT-2 | gpt2 | ||
| GPT-J ، GPT4ALL-J | gptj | ||
| GPT-NEOX ، Stablelm | gpt_neox | ||
| فالكون | falcon | ✅ | |
| لاما ، لاما 2 | llama | ✅ | ✅ |
| MPT | mpt | ✅ | |
| Starcoder ، ستارشات | gpt_bigcode | ✅ | |
| دوللي 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 files) ، حدد ملف نموذج باستخدام:
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 ))يمكنك استخدام؟ معلمات توليد المحولات:
pipe ( "AI is going to" , max_new_tokens = 256 , do_sample = True , temperature = 0.8 , repetition_penalty = 1.1 )يمكنك استخدام؟ محولات الرمز المميزات:
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. واجهات برمجة التطبيقات ذات المستوى المنخفض ليست مدعومة بالكامل.
| المعلمة | يكتب | وصف | تقصير |
|---|---|---|---|
top_k | int | القيمة العلوية K لاستخدامها في أخذ العينات. | 40 |
top_p | float | قيمة أعلى 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 | عدد الطبقات لتشغيلها على وحدة معالجة الرسومات. | 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
) → LLMيقوم بتحميل نموذج اللغة من ملف محلي أو ريبو عن بعد.
args:
model_path_or_repo_id : المسار إلى ملف أو دليل أو دليل أو اسم نموذج Hub Model.model_type : نوع النموذج.model_file : اسم ملف النموذج في Repo أو Directory.config : كائن AutoConfig .lib : الطريق إلى مكتبة مشتركة أو واحدة من avx2 ، avx ، basic .local_files_only : ما إذا كان النظر في الملفات المحلية أم لا (أي ، لا تحاول تنزيل النموذج).revision : نسخة نموذجية محددة للاستخدام. يمكن أن يكون اسم الفرع أو اسم علامة أو معرف الالتزام.hf : ما إذا كان لإنشاء نموذج محولات الوجه المعانقة. إرجاع: كائن 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 : كائن Config .lib : الطريق إلى مكتبة مشتركة أو واحدة من avx2 ، avx ، basic . الرمز المميز لبدء التسلسل.
كائن التكوين.
طول سياق النموذج.
تضمينات المدخلات.
رمز نهاية التسلسل.
احتمالات السجل غير الطبيعية.
المسار إلى ملف النموذج.
نوع النموذج.
رمز الحشو.
عدد الرموز في المفردات.
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 : حجم الدُفعة المراد استخدامه لتقييم الرموز في مطالبة واحدة. الافتراضي: 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 : قيمة أعلى K لاستخدامها في أخذ العينات. الافتراضي: 40top_p : قيمة أعلى 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 : الرمز المميز للتحقق. العائدات: 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 : قيمة أعلى K لاستخدامها في أخذ العينات. الافتراضي: 40top_p : قيمة أعلى p لاستخدامها في أخذ العينات. الافتراضي: 0.95temperature : درجة الحرارة لاستخدامها لأخذ العينات. الافتراضي: 0.8repetition_penalty : عقوبة التكرار لاستخدامها في أخذ العينات. الافتراضي: 1.1last_n_tokens : عدد الرموز الأخيرة لاستخدامها في عقوبة التكرار. الافتراضي: 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 : قيمة أعلى K لاستخدامها في أخذ العينات. الافتراضي: 40top_p : قيمة أعلى p لاستخدامها في أخذ العينات. الافتراضي: 0.95temperature : درجة الحرارة لاستخدامها لأخذ العينات. الافتراضي: 0.8repetition_penalty : عقوبة التكرار لاستخدامها في أخذ العينات. الافتراضي: 1.1last_n_tokens : عدد الرموز الأخيرة لاستخدامها في عقوبة التكرار. الافتراضي: 64seed : قيمة البذور لاستخدامها لأخذ عينات الرموز. الافتراضي: -1batch_size : حجم الدُفعة المراد استخدامه لتقييم الرموز في مطالبة واحدة. الافتراضي: 8threads : عدد المواضيع التي يجب استخدامها لتقييم الرموز. الافتراضي: -1stop : قائمة بالتسلسلات لإيقاف الجيل عند مواجهتها. الافتراضي: Nonestream : ما إذا كان لدفق النص الذي تم إنشاؤه. الافتراضي: Falsereset : ما إذا كان لإعادة ضبط حالة النموذج قبل إنشاء النص. الافتراضي: Trueإرجاع: النص الذي تم إنشاؤه.
معهد ماساتشوستس للتكنولوجيا