روابط 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
.
LLM
LLM.__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
: حجم الدُفعة المراد استخدامه لتقييم الرموز في مطالبة واحدة. الافتراضي: 8
threads
: عدد المواضيع التي يجب استخدامها لتقييم الرموز. الافتراضي: -1
عائدات: تضمينات المدخلات.
LLM.eval
eval (
tokens : Sequence [ int ],
batch_size : Optional [ int ] = None ,
threads : Optional [ int ] = None
) → None
يقيم قائمة الرموز.
args:
tokens
: قائمة الرموز لتقييم.batch_size
: حجم الدُفعة المراد استخدامه لتقييم الرموز في مطالبة واحدة. الافتراضي: 8
threads
: عدد المواضيع التي يجب استخدامها لتقييم الرموز. الافتراضي: -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 لاستخدامها في أخذ العينات. الافتراضي: 40
top_p
: قيمة أعلى p لاستخدامها في أخذ العينات. الافتراضي: 0.95
temperature
: درجة الحرارة لاستخدامها لأخذ العينات. الافتراضي: 0.8
repetition_penalty
: عقوبة التكرار لاستخدامها في أخذ العينات. الافتراضي: 1.1
last_n_tokens
: عدد الرموز الأخيرة لاستخدامها في عقوبة التكرار. الافتراضي: 64
seed
: قيمة البذور لاستخدامها لأخذ عينات الرموز. الافتراضي: -1
batch_size
: حجم الدُفعة المراد استخدامه لتقييم الرموز في مطالبة واحدة. الافتراضي: 8
threads
: عدد المواضيع التي يجب استخدامها لتقييم الرموز. الافتراضي: -1
reset
: ما إذا كان لإعادة ضبط حالة النموذج قبل إنشاء النص. الافتراضي: 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 لاستخدامها في أخذ العينات. الافتراضي: 40
top_p
: قيمة أعلى p لاستخدامها في أخذ العينات. الافتراضي: 0.95
temperature
: درجة الحرارة لاستخدامها لأخذ العينات. الافتراضي: 0.8
repetition_penalty
: عقوبة التكرار لاستخدامها في أخذ العينات. الافتراضي: 1.1
last_n_tokens
: عدد الرموز الأخيرة لاستخدامها في عقوبة التكرار. الافتراضي: 64
seed
: قيمة البذور لاستخدامها لأخذ عينات الرموز. الافتراضي: -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
: الحد الأقصى لعدد الرموز الجديدة لإنشاء. الافتراضي: 256
top_k
: قيمة أعلى K لاستخدامها في أخذ العينات. الافتراضي: 40
top_p
: قيمة أعلى p لاستخدامها في أخذ العينات. الافتراضي: 0.95
temperature
: درجة الحرارة لاستخدامها لأخذ العينات. الافتراضي: 0.8
repetition_penalty
: عقوبة التكرار لاستخدامها في أخذ العينات. الافتراضي: 1.1
last_n_tokens
: عدد الرموز الأخيرة لاستخدامها في عقوبة التكرار. الافتراضي: 64
seed
: قيمة البذور لاستخدامها لأخذ عينات الرموز. الافتراضي: -1
batch_size
: حجم الدُفعة المراد استخدامه لتقييم الرموز في مطالبة واحدة. الافتراضي: 8
threads
: عدد المواضيع التي يجب استخدامها لتقييم الرموز. الافتراضي: -1
stop
: قائمة بالتسلسلات لإيقاف الجيل عند مواجهتها. الافتراضي: None
stream
: ما إذا كان لدفق النص الذي تم إنشاؤه. الافتراضي: False
reset
: ما إذا كان لإعادة ضبط حالة النموذج قبل إنشاء النص. الافتراضي: True
إرجاع: النص الذي تم إنشاؤه.
معهد ماساتشوستس للتكنولوجيا