كتل بناء بيثون لاستكشاف نماذج لغة كبيرة في أقل من 512 ميجابايت من ذاكرة الوصول العشوائي

تجعل هذه الحزمة استخدام نماذج لغة كبيرة من Python بسيطة قدر الإمكان. يتم تنفيذ جميع الاستدلال محليًا للحفاظ على بياناتك خاصة بشكل افتراضي.
يمكن تثبيت هذه الحزمة باستخدام الأمر التالي:
pip install languagemodelsبمجرد التثبيت ، يجب أن تكون قادرًا على التفاعل مع الحزمة في بيثون على النحو التالي:
> >> import languagemodels as lm
> >> lm . do ( "What color is the sky?" )
'The color of the sky is blue.'سيتطلب ذلك تنزيل كمية كبيرة من البيانات (حوالي 250 ميجابايت) في المدى الأول. سيتم تخزين النماذج مؤقتًا للاستخدام لاحقًا ويجب أن تكون المكالمات اللاحقة سريعة.
فيما يلي بعض أمثلة الاستخدام مثل جلسات الاستبدال Python. يجب أن يعمل هذا في REPL ، أو دفاتر الملاحظات ، أو في البرامج النصية والتطبيقات التقليدية.
> >> import languagemodels as lm
> >> lm . do ( "Translate to English: Hola, mundo!" )
'Hello, world!'
> >> lm . do ( "What is the capital of France?" )
'Paris.'يمكن أن تقتصر المخرجات على قائمة الخيارات إذا رغبت في ذلك:
> >> lm . do ( "Is Mars larger than Saturn?" , choices = [ "Yes" , "No" ])
'No'يجب أن يعمل النموذج الأساسي بسرعة على أي نظام مع ذاكرة 512 ميغابايت ، ولكن يمكن زيادة حد الذاكرة هذا لتحديد نماذج أكثر قوة تستهلك المزيد من الموارد. هذا مثال:
> >> import languagemodels as lm
> >> lm . do ( "If I have 7 apples then eat 5, how many apples do I have?" )
'You have 8 apples.'
> >> lm . config [ "max_ram" ] = "4gb"
4.0
> >> lm . do ( "If I have 7 apples then eat 5, how many apples do I have?" )
'I have 2 apples left.'إذا كان لديك وحدة معالجة الرسومات NVIDIA مع توفر CUDA ، فيمكنك الاشتراك في استخدام وحدة معالجة الرسومات للاستدلال:
> >> import languagemodels as lm
> >> lm . config [ "device" ] = "auto" > >> import languagemodels as lm
> >> lm . complete ( "She hid in her room until" )
'she was sure she was safe'يتم توفير وظائف المساعدة لاسترداد النص من مصادر خارجية يمكن استخدامها لزيادة السياق السريع.
> >> import languagemodels as lm
> >> lm . get_wiki ( 'Chemistry' )
' Chemistry is the scientific study ...
>> > lm . get_weather ( 41.8 , - 87.6 )
' Partly cloudy with a chance of rain ...
>> > lm . get_date ()
'Friday, May 12, 2023 at 09:27AM'إليك مثال يوضح كيف يمكن استخدام ذلك (مقارنة بمثال الدردشة السابق):
> >> lm . do ( f"It is { lm . get_date () } . What time is it?" )
'The time is 12:53PM.'يتم توفير البحث الدلالي لاسترداد المستندات التي قد توفر سياقًا مفيدًا من متجر مستندات.
> >> import languagemodels as lm
> >> lm . store_doc ( lm . get_wiki ( "Python" ), "Python" )
> >> lm . store_doc ( lm . get_wiki ( "C language" ), "C" )
> >> lm . store_doc ( lm . get_wiki ( "Javascript" ), "Javascript" )
> >> lm . get_doc_context ( "What does it mean for batteries to be included in a language?" )
' From Python document : It is often described as a "batteries included" language due to its comprehensive standard library . Guido van Rossum began working on Python in the late 1980 s as a successor to the ABC programming language and first released it in 1991 as Python 0.9 .
From C document : It was designed to be compiled to provide low - level access to memory and language constructs that map efficiently to machine instructions , all with minimal runtime support .'الوثائق الكاملة
تتفوق هذه الحزمة حاليًا على transformers الوجه لاستدلال وحدة المعالجة المركزية بفضل تقدير int8 والواجهة الخلفية Ctranslate2. يقارن الجدول التالي أداء استدلال وحدة المعالجة المركزية على نماذج متطابقة باستخدام أفضل القياس المتاح على مجموعة اختبار أسئلة 20.
| الخلفية | وقت الاستنتاج | تستخدم الذاكرة |
|---|---|---|
| تعانق محولات الوجه | 22s | 1.77 جيجابايت |
| هذه الحزمة | 11S | 0.34 جيجابايت |
لاحظ أن القياس الكمي يضر من الناحية الفنية جودة الإخراج بشكل طفيف ، ولكن يجب أن يكون ضئيلًا في هذا المستوى.
يتم توفير النماذج الافتراضية المعقولة. يجب أن تتحسن الحزمة بمرور الوقت مع توفر النماذج الأقوى. النماذج الأساسية المستخدمة هي 1000x أصغر من أكبر النماذج المستخدمة اليوم. إنها مفيدة كأدوات تعليمية ، ولكنها تؤدي إلى حد بعيد عن الحالة الحالية للفن.
فيما يلي النماذج الافتراضية الحالية التي تستخدمها الحزمة لقيمة max_ram الموردة:
| max_ram | اسم النموذج | المعلمات (ب) |
|---|---|---|
| 0.5 | Lamini-Flan-T5-248m | 0.248 |
| 1.0 | Lamini-Flan-T5-783m | 0.783 |
| 2.0 | Lamini-Flan-T5-783m | 0.783 |
| 4.0 | Flan-Alpaca-GPT4-XL | 3.0 |
| 8.0 | OpenChat-3.5-0106 | 7.0 |
لاستكمال التعليمات البرمجية ، يتم استخدام سلسلة النماذج CODET5+.
هذه الحزمة نفسها مرخصة للاستخدام التجاري ، ولكن قد لا تكون النماذج المستخدمة متوافقة مع الاستخدام التجاري. من أجل استخدام هذه الحزمة تجاريًا ، يمكنك تصفية النماذج حسب نوع الترخيص باستخدام وظيفة require_model_license .
> >> import languagemodels as lm
> >> lm . config [ 'instruct_model' ]
'LaMini-Flan-T5-248M-ct2-int8'
> >> lm . require_model_license ( "apache|bsd|mit" )
> >> lm . config [ 'instruct_model' ]
'flan-t5-base-ct2-int8'يوصى بتأكيد أن النماذج المستخدمة تلبي متطلبات الترخيص لبرنامجك.
أحد أهداف هذه الحزمة هو أن تكون أداة واضحة للمتعلمين والمعلمين الذين يستكشفون مدى تقاطع نماذج اللغة الكبيرة مع تطوير البرمجيات الحديثة. يمكن استخدامه للقيام بالرفع الثقيل لعدد من مشاريع التعلم:
يتم تضمين العديد من البرامج والأجهزة الكمبيوتر المحمولة في دليل examples .