تتيح لك واجهة برمجة التطبيقات LLM Inference API تشغيل النماذج اللغوية الكبيرة (LLM) بالكامل على الجهاز، ويمكنك استخدامها لتنفيذ مجموعة كبيرة من المهام، مثل إنشاء النصوص واسترداد المعلومات بتنسيق لغة طبيعية و تلخيص المستندات. توفّر المهمة دعمًا مضمّنًا لعدة نماذج لغوية كبيرة لتحويل النص إلى نص، ما يتيح لك تطبيق أحدث نماذج الذكاء الاصطناعي التوليدي على الجهاز على تطبيقاتك ومنتجاتك.
تتيح المهمة الصيغ التالية من Gemma: Gemma-2 2B وGemma 2B وGemma 7B. Gemma هي مجموعة من أحدث النماذج المتطوّرة والخفيفة المتاحة للجميع، والتي تم إنشاؤها بناءً على الأبحاث والتكنولوجيا نفسها المستخدَمة في إنشاء نماذج Gemini. وهو متوافق أيضًا مع نماذج الأجهزة الخارجية التالية: Phi-2 وFalcon-RW-1B وStableLM-3B.
بالإضافة إلى النماذج المتوافقة، يمكنك استخدام AI Edge
Torch من Google لتصدير نماذج PyTorch
إلى نماذج LiteRT (tflite
) متعددة التوقيعات، والتي يتم تجميعها مع مَعلمات معالج الكلمات لإنشاء حِزم مهام متوافقة مع واجهة برمجة التطبيقات LLM
Inference API. لا يمكن تشغيل النماذج المحوَّلة باستخدام AI Edge Torch إلا على المعالج (CPU)
في الخلفية، وبالتالي تقتصر على Android وiOS.
البدء
ابدأ استخدام هذه المهمة باتّباع أحد أدلة التنفيذ هذه ل منصّتك المستهدفة. ترشدك هذه الأدلة الخاصة بالنظام الأساسي إلى تنفيذ أساسي لهذه المهمة، مع أمثلة على الرموز البرمجية التي تستخدِم نموذجًا متاحًا وخيارات الضبط المقترَحة:
الويب:
أجهزة Android:
iOS
تفاصيل المهمة
يصف هذا القسم ميزات هذه المهمة ومدخلاتها ومخرجاتها وخيارات الضبط.
الميزات
تتضمّن واجهة برمجة التطبيقات LLM Inference API الميزات الرئيسية التالية:
- إنشاء نص من نص: يمكنك إنشاء نص استنادًا إلى طلب نصي.
- اختيار النماذج اللغوية الكبيرة: يمكنك تطبيق نماذج متعددة لتخصيص التطبيق لحالات الاستخدام المحدّدة. يمكنك أيضًا إعادة تدريب النموذج وتطبيق أوزان مخصّصة عليه.
- إتاحة LoRA: يمكنك توسيع نطاق إمكانات النموذج اللغوي الكبير وتخصيصه باستخدام نموذج LoRA إما من خلال التدريب على جميع مجموعات البيانات أو استخدام نماذج LoRA prebuilt prebuilt المعدّة مسبقًا من منتدى المصادر المفتوحة (لا تتوافق مع النماذج المحوَّلة باستخدام واجهة برمجة التطبيقات AI Edge Torch Generative API).
مدخلات المهام | نتائج المهام |
---|---|
تقبل واجهة برمجة التطبيقات LLM Inference API الإدخالات التالية:
|
تُخرج واجهة برمجة التطبيقات LLM Inference API النتائج التالية:
|
خيارات الإعدادات
تتضمّن هذه المهمة خيارات الضبط التالية:
اسم الخيار | الوصف | نطاق القيمة | القيمة التلقائية |
---|---|---|---|
modelPath |
مسار مكان تخزين النموذج ضمن دليل المشروع. | PATH | لا ينطبق |
maxTokens |
الحد الأقصى لعدد الرموز المميّزة (رموز الإدخال + رموز الإخراج) التي يعالجها النموذج | عدد صحيح | 512 |
topK |
عدد الرموز التي يأخذها النموذج في الاعتبار في كل خطوة من خطوات الإنشاء حصر التوقّعات بأكبر عدد من الرموز التعبيرية الأكثر احتمالًا | عدد صحيح | 40 |
temperature |
مقدار العشوائية التي تمّ إدخالها أثناء إنشاء النموذج يؤدي تحديد قيمة أعلى لإعداد درجة الحرارة إلى زيادة الإبداع في النص الذي يتم إنشاؤه، في حين يؤدي تحديد قيمة أقل لإعداد درجة الحرارة إلى زيادة إمكانية توقّع النص الذي يتم إنشاؤه. | عدد عائم | 0.8 |
randomSeed |
البذرة العشوائية المستخدَمة أثناء إنشاء النص | عدد صحيح | 0 |
loraPath |
المسار المطلق إلى نموذج LoRA على الجهاز ملاحظة: لا يتوافق هذا الإجراء إلا مع طُرز وحدة معالجة الرسومات. | PATH | لا ينطبق |
resultListener |
لضبط مستمع النتائج لتلقّي النتائج بشكل غير متزامن. لا ينطبق إلا عند استخدام طريقة الإنشاء غير المتزامنة. | لا ينطبق | لا ينطبق |
errorListener |
تُستخدَم لضبط مستمع أخطاء اختياري. | لا ينطبق | لا ينطبق |
النماذج
تتوافق واجهة برمجة التطبيقات LLM Inference API مع العديد من النماذج اللغوية الكبيرة للترجمة من نص إلى نص، بما في ذلك التوافق المضمّن مع العديد من النماذج المحسّنة للتشغيل على المتصفّحات و الأجهزة الجوّالة. ويمكن استخدام هذه النماذج البسيطة لإجراء الاستنتاجات تمامًا على الجهاز.
قبل بدء واجهة برمجة التطبيقات LLM Inference API، نزِّل نموذجًا واحفظ الملف ضمن دليل مشروعك. يمكنك استخدام نموذج تم تحويله مسبقًا أو تحويل ملف نموذج إلى تنسيق متوافق مع MediaPipe.
تتوافق واجهة برمجة التطبيقات LLM Inference API مع نوعَين من الفئات، ويتطلّب بعض هذه الأنواع تحويل النموذج. استخدِم الجدول لتحديد الخطوات المطلوبة الطريقة المناسبة لنموذجك.
النماذج | طريقة الإحالة الناجحة | الأنظمة الأساسية المتوافقة | نوع الملف | |
---|---|---|---|---|
الطُرز المتوافقة | Gemma 2B وGemma 7B وGemma-2 2B وPhi-2 وStableLM وFalcon | MediaPipe | Android وiOS والويب | .bin |
نماذج PyTorch الأخرى | جميع نماذج PyTorch LLM | مكتبة AI Edge Torch التوليدية | Android وiOS | .task |
نحن نستضيف ملفات .bin
المحوَّلة لبيانات Gemma 2B وGemma 7B وGemma-2 2B
على Kaggle. ويمكن نشر هذه النماذج مباشرةً باستخدام واجهة برمجة التطبيقات LLM Inference API. للاطّلاع على كيفية تحويل نماذج أخرى، اطّلِع على قسم تحويل
النماذج.
Gemma-2 2B
Gemma-2 2B هو أحدث نموذج في مجموعة نماذج Gemma الخفيفة والمتطوّرة والمفتوحة، والتي تم إنشاؤها استنادًا إلى الأبحاث والتكنولوجيا نفسها المستخدَمة في إنشاء نماذج Gemini. يحتوي النموذج على معلَمات 2B ومَعلمات وزن مفتوحة. تشتهر Gemma-2 2B بمهارات التفكير المتقدّمة التي توفّرها للنماذج في فئتها.
تتوفّر نماذج Gemma-2 2B بالأنواع التالية:
- gemma2-2b-it-cpu-int8: نموذج Gemma-2 2B 8 بت متوافق مع وحدة المعالجة المركزية
- gemma2-2b-it-gpu-int8: نموذج Gemma-2 2B 8 بت متوافق مع وحدة معالجة الرسومات
يمكنك أيضًا ضبط النموذج وإضافة أوزان جديدة قبل إضافته إلى التطبيق. للحصول على مزيد من المعلومات عن ضبط Gemma وتخصيصها، اطّلِع على مقالة ضبط Gemma. بعد تنزيل Gemma-2 2B من نماذج Kaggle، يكون النموذج بالتنسيق المناسب لاستخدامه مع "مهام MediaPipe".
جميلة 2ب
Gemma 2B هي جزء من مجموعة من نماذج الحديثة والخفيفة الوزن والمفتوحة التي تم إنشاؤها استنادًا إلى الأبحاث و التكنولوجيا نفسها المستخدَمة في إنشاء نماذج Gemini. يحتوي النموذج على مَعلمات 2B وأوزان مفتوحة. هذا النموذج مناسب تمامًا لأنواع مختلفة من مهام إنشاء النصوص، بما في ذلك الإجابة عن الأسئلة والتلخيص والتفكير.
تتوفّر طُرز Gemma 2B بالأنواع التالية:
- gemma-2b-it-cpu-int4: نموذج Gemma 2B بسعة 4 بت متوافق مع وحدة المعالجة المركزية.
- gemma-2b-it-cpu-int8: نموذج Gemma 2B بسعة 8 بت ومتوافق مع وحدة المعالجة المركزية.
- gemma-2b-it-gpu-int4: نموذج Gemma 2B بسعة 4 بت متوافق مع وحدة معالجة الرسومات
- gemma-2b-it-gpu-int8: نموذج Gemma 2B بسعة 8 بت ومتوافق مع وحدة معالجة الرسومات
يمكنك أيضًا ضبط النموذج وإضافة أوزان جديدة قبل إضافته إلى التطبيق. للحصول على مزيد من المعلومات عن ضبط Gemma وتخصيصها، اطّلِع على مقالة ضبط Gemma. بعد تنزيل Gemma 2B من نماذج Kaggle، يكون النموذج بالتنسيق المناسب لاستخدامه مع "مهام MediaPipe".
جميلة 7ب
Gemma 7B هو نموذج أكبر من نماذج Gemma يتضمّن 7 مليار معلمة وإعدادات مرنة للغة. يُعدّ النموذج أكثر فعالية لمجموعة متنوعة من مهام إنشاء النصوص، بما في ذلك الإجابة عن الأسئلة والتلخيص والاستدلال. لا تتوفّر Gemma 7B إلا على الويب.
يتوفّر طراز Gemma 7B بخيار واحد:
- gemma-1.1-7b-it-gpu-int8: نموذج Gemma 7B بسعة 8 بت ومتوافق مع وحدة معالجة الرسومات
بعد تنزيل Gemma 7B من نماذج Kaggle، يكون النموذج في التنسيق المناسب لاستخدامه مع MediaPipe.
Falcon 1B
Falcon-1B هو نموذج فك ترميز سببي يحتوي على مليار مَعلمة وتم تدريبه على 350 مليار رمز من RefinedWeb.
تتطلّب واجهة برمجة التطبيقات LLM Inference API تنزيل الملفات التالية وتخزينها على الجهاز:
tokenizer.json
tokenizer_config.json
pytorch_model.bin
بعد تنزيل ملفات نموذج Falcon، يصبح النموذج جاهزًا للتحويل إلى تنسيق MediaPipe باستخدام نص تحويل. اتّبِع الخطوات الواردة في القسم نص برمجي للإحالات الناجحة للنماذج المتوافقة.
StableLM 3B
StableLM-3B هو نموذج لغوي لفك الترميز فقط يتضمّن 3 مليارات مَعلمة، وتم تدريبه مسبقًا على تريليون رمز من مجموعات بيانات متنوعة للغة الإنجليزية والرموز البرمجية على مدار 4 دورات تدريبية.
تتطلّب واجهة برمجة التطبيقات LLM Inference API تنزيل الملفات التالية وتخزينها على الجهاز:
tokenizer.json
tokenizer_config.json
model.safetensors
بعد تنزيل ملفات نموذج StableLM، يصبح النموذج جاهزًا للتحويل إلى تنسيق MediaPipe باستخدام نص تحويل. اتّبِع الخطوات الواردة في القسم نص برمجي للإحالات الناجحة للنماذج المتوافقة.
Phi-2
Phi-2 هو نموذج Transformer يتضمّن 2.7 مليار مَعلمة. تم تدريبه باستخدام تقنيات معالجة اللغة الطبيعية (NLP) المختلفة والنصوص الاصطناعية والمواقع الإلكترونية التي تمّت فلترتها. يناسب النموذج بشكلٍ أفضل الطلبات باستخدام تنسيق السؤال والإجابة والمحادثة والرمز البرمجي.
تتطلّب واجهة برمجة التطبيقات LLM Inference API تنزيل الملفات التالية وتخزينها على الجهاز:
tokenizer.json
tokenizer_config.json
model-00001-of-00002.safetensors
model-00002-of-00002.safetensors
بعد تنزيل ملفات نموذج Phi-2، يصبح النموذج جاهزًا للتحويل إلى تنسيق MediaPipe باستخدام نص برمجي للتحويل. اتّبِع الخطوات الواردة في القسم نص برمجي للإحالات الناجحة للنماذج المتوافقة.
نماذج PyTorch التوليدية
يمكن تحويل النماذج التوليدية في PyTorch إلى تنسيق متوافق مع MediaPipe باستخدام واجهة برمجة التطبيقات AI Edge Torch Generative. يمكنك استخدام واجهة برمجة التطبيقات لتحويل نماذج PyTorch إلى نماذج LiteRT (TensorFlow Lite) متعددة التوقيعات. لمزيد من التفاصيل حول تعيين النماذج وتصديرها، يُرجى الانتقال إلى صفحة GitHub الخاصة بتطبيق AI Edge Torch.
إذا كنت تريد استخدام واجهة برمجة التطبيقات AI Edge Torch Generative API لتحويل نموذج PyTorch ، اتّبِع الخطوات الواردة في قسم محوِّل Torch Generative لنماذج PyTorch.
وضع نماذج للإحالات الناجحة
تتيح لك واجهة برمجة التطبيقات MediaPipe LLM Inference API تشغيل مجموعة كبيرة من نماذج اللغة الكبيرة على الجهاز فقط. ويشمل ذلك النماذج التي تم تحويلها مسبقًا إلى تنسيقٍ متوافق مع MediaPipe، بالإضافة إلى النماذج الأخرى التي يمكن تحويلها باستخدام نص تحويل أو مكتبة AI Edge Torch.
تقبل واجهة برمجة التطبيقات LLM Inference API النماذج بتنسيقَي الملفَين .bin
و.task
.
ستكون النماذج المحوَّلة مسبقًا والنماذج المحوَّلة باستخدام نص تحويل ملفًا من نوع
.bin
، في حين ستكون النماذج المحوَّلة باستخدام مكتبة AI Edge Torch ملفًا من نوع
.task
. لا تغيِّر يدويًا تنسيقات ملفات النماذج المحوَّلة.
تحتوي واجهة برمجة التطبيقات LLM Inference API على ثلاثة مسارات إحالات ناجحة للنموذج:
- النماذج المحوَّلة مسبقًا (Gemma 2B وGemma 7B وGemma-2 2B): لا يلزم إجراء عملية تحويل.
- النماذج المتوافقة (Phi-2 وStableLM وFalcon): نص برمجي لتحويل MediaPipe
- نماذج PyTorch الأخرى (جميع نماذج PyTorch LLM): واجهة برمجة التطبيقات AI Edge Torch Generative API
النماذج المحوَّلة مسبقًا
تتوفّر نماذج Gemma-2 2B وGemma 2B وGemma 7B كشدود محوَّلة مسبقًا بتنسيق MediaPipe. لا تتطلّب هذه النماذج من المستخدم أي خطوات إضافية لتحديد الإحالات الناجحة، ويمكن تشغيلها كما هي باستخدام واجهة برمجة التطبيقات LLM Inference API.
يمكنك تنزيل Gemma-2 2B من نماذج Kaggle:
- gemma2-2b-it-cpu-int8: نموذج Gemma-2 2B 8 بت متوافق مع وحدة المعالجة المركزية
- gemma2-2b-it-gpu-int8: نموذج Gemma-2 2B 8 بت متوافق مع وحدة معالجة الرسومات
يمكنك تنزيل صيغ Gemma 2B من نماذج Kaggle:
- gemma-2b-it-cpu-int4: نموذج Gemma 2B بسعة 4 بت متوافق مع وحدة المعالجة المركزية.
- gemma-2b-it-cpu-int8: نموذج Gemma 2B بسعة 8 بت ومتوافق مع وحدة المعالجة المركزية.
- gemma-2b-it-gpu-int4: نموذج Gemma 2B بسعة 4 بت متوافق مع وحدة معالجة الرسومات
- gemma-2b-it-gpu-int8: نموذج Gemma 2B بسعة 8 بت ومتوافق مع وحدة معالجة الرسومات
يمكنك تنزيل Gemma 7B من نماذج Kaggle:
- gemma-1.1-7b-it-gpu-int8: نموذج Gemma 7B بسعة 8 بت ومتوافق مع وحدة معالجة الرسومات
لمزيد من المعلومات عن نماذج Gemma، يُرجى الاطّلاع على المستندات حول Gemma-2 2B وGemma 2B وGemma 7B.
نصّ الإحالة الناجحة للنماذج المتوافقة
توفّر حزمة MediaPipe ملف تحويل نصيًا لتحويل النماذج الخارجية التالية إلى تنسيق متوافق مع MediaPipe:
لمزيد من المعلومات حول النماذج الخارجية المتوافقة، يُرجى الاطّلاع على المستندات حول Falcon 1B وStableLM 3B وPhi-2.
تتطلّب عملية تحويل النماذج حزمة MediaPipe PyPI. يتوفّر ملف تحويل
الترميز في جميع حِزم MediaPipe بعد 0.10.11
.
ثبِّت التبعيات واستورِدها باستخدام ما يلي:
$ python3 -m pip install mediapipe
استخدِم مكتبة genai.converter
لتحويل النموذج:
import mediapipe as mp
from mediapipe.tasks.python.genai import converter
config = converter.ConversionConfig(
input_ckpt=INPUT_CKPT,
ckpt_format=CKPT_FORMAT,
model_type=MODEL_TYPE,
backend=BACKEND,
output_dir=OUTPUT_DIR,
combine_file_only=False,
vocab_model_file=VOCAB_MODEL_FILE,
output_tflite_file=OUTPUT_TFLITE_FILE,
)
converter.convert_checkpoint(config)
لتحويل نموذج LoRA، يجب أن تحدّد ConversionConfig
خيارات النموذج الأساسي
بالإضافة إلى خيارات LoRA الإضافية. يُرجى العلم أنّه بما أنّ واجهة برمجة التطبيقات تسمح فقط
باستنتاج LoRA باستخدام وحدة معالجة الرسومات، يجب ضبط الخلفية على 'gpu'
.
import mediapipe as mp
from mediapipe.tasks.python.genai import converter
config = converter.ConversionConfig(
# Other params related to base model
...
# Must use gpu backend for LoRA conversion
backend='gpu',
# LoRA related params
lora_ckpt=LORA_CKPT,
lora_rank=LORA_RANK,
lora_output_tflite_file=LORA_OUTPUT_TFLITE_FILE,
)
converter.convert_checkpoint(config)
سيُنشئ المحوِّل ملفَّين من ملفات TFLite flatbuffer، أحدهما للنموذج الأساسي والآخر لنموذج LoRA.
المَعلمة | الوصف | القيم المقبولة |
---|---|---|
input_ckpt |
مسار الملف model.safetensors أو pytorch.bin يُرجى العِلم أنّه في بعض الأحيان يتم تقسيم تنسيق safetensors للنموذج إلى ملفات متعددة، مثل model-00001-of-00003.safetensors وmodel-00001-of-00003.safetensors . يمكنك تحديد نمط ملف، مثل model*.safetensors . |
PATH |
ckpt_format |
تنسيق ملف النموذج | {"safetensors", "pytorch"} |
model_type |
يتم تحويل نموذج LLM. | {"PHI_2", "FALCON_RW_1B", "STABLELM_4E1T_3B", "GEMMA_2B"} |
backend |
المعالج (المفوَّض) المستخدَم لتشغيل النموذج | {"cpu", "gpu"} |
output_dir |
المسار إلى دليل الإخراج الذي يستضيف ملفات الأوزان لكل طبقة. | PATH |
output_tflite_file |
مسار ملف الإخراج على سبيل المثال، "model_cpu.bin" أو "model_gpu.bin". لا يتوافق هذا الملف إلا مع واجهة برمجة التطبيقات LLM Inference API، ولا يمكن استخدامه كملف tflite عام. | PATH |
vocab_model_file |
مسار الدليل الذي يخزّن ملفَي tokenizer.json و
tokenizer_config.json بالنسبة إلى هبة، أشِر إلى ملف tokenizer.model الفردي. |
PATH |
lora_ckpt |
المسار إلى نقطة التوقف في LoRA لملف safetensors الذي يخزّن وزن محوِّل LoRA | PATH |
lora_rank |
عدد صحيح يمثّل ترتيب نقطة التحقق في LoRA مطلوب لتحويل أوزان lora. وفي حال عدم توفّر هذه السمة، يفترض المحوِّل عدم توفّر أوزان LoRA. ملاحظة: لا يتيح برنامج تشغيل وحدة معالجة الرسومات (GPU) في الخلفية سوى LoRA. | عدد صحيح |
lora_output_tflite_file |
اسم ملف tflite الذي سيتم إخراجه لملفات أوزان LoRA | PATH |
محوِّل Torch التوليدي لنماذج PyTorch
يمكن تحويل النماذج التوليدية في PyTorch إلى تنسيق متوافق مع MediaPipe باستخدام واجهة برمجة التطبيقات AI Edge Torch Generative. يمكنك استخدام واجهة برمجة التطبيقات لإنشاء النماذج اللغوية الكبيرة في PyTorch وتحويلها وتحويلها إلى قيم كمية لاستخدامها مع واجهة برمجة التطبيقات LLM Inference API. لا يحوّل محوِّل Torch Generative إلا باستخدام وحدة المعالجة المركزية ويتطلب جهاز Linux مزوّدًا بذاكرة وصول عشوائي (RAM) بسعة 64 غيغابايت على الأقل.
تتضمن عملية تحويل نموذج PyTorch باستخدام واجهة برمجة التطبيقات AI Edge Torch Generative API ما يلي:
- تنزيل نقاط التحقق لنموذج PyTorch
- استخدِم واجهة برمجة التطبيقات AI Edge Torch Generative API لإنشاء
النموذج وتحويله وتحويله إلى تنسيق ملف متوافق مع MediaPipe (
.tflite
). - أنشئ حِزمة مهام (
.task
) من ملف tflite وبرنامج تقسيم النصوص في النموذج.
لإنشاء حِزمة مهام، استخدِم النص البرمجي لعمليات التجميع لإنشاء حِزمة مهام. تُجمِّع عملية التجميع النموذج المرتبط مع بيانات وصفية إضافية (مثل مَعلمات أداة تقسيم النصوص) اللازمة لإجراء عملية معالجة ذكية شاملة
تتطلّب عملية تجميع النماذج حزمة MediaPipe PyPI. يتوفّر ملف تحويل
الترميز في جميع حِزم MediaPipe بعد 0.10.14
.
ثبِّت التبعيات واستورِدها باستخدام ما يلي:
$ python3 -m pip install mediapipe
استخدِم مكتبة genai.bundler
لتجميع النموذج:
import mediapipe as mp
from mediapipe.tasks.python.genai import bundler
config = bundler.BundleConfig(
tflite_model=TFLITE_MODEL,
tokenizer_model=TOKENIZER_MODEL,
start_token=START_TOKEN,
stop_tokens=STOP_TOKENS,
output_filename=OUTPUT_FILENAME,
enable_bytes_to_unicode_mapping=ENABLE_BYTES_TO_UNICODE_MAPPING,
)
bundler.create_bundle(config)
المَعلمة | الوصف | القيم المقبولة |
---|---|---|
tflite_model |
مسار نموذج TFLite الذي تم تصديره في AI Edge | PATH |
tokenizer_model |
المسار إلى نموذج أداة تقسيم الجمل SentencePiece | PATH |
start_token |
رمز بدء خاص بالنموذج يجب أن يكون رمز البدء متوفّرًا في النموذج المقدَّم لفاصل الكلمات. | سلسلة |
stop_tokens |
الرموز المخصّصة للتوقف في النموذج يجب أن تكون الرموز المحوِّلة غير الصالحة متوفّرة في النموذج المقدَّم لفاصل الكلمات. | LIST[STRING] |
output_filename |
اسم ملف حِزمة المهام الناتجة. | PATH |
تخصيص LoRA
يمكن ضبط واجهة برمجة التطبيقات Mediapipe LLM inference API للتوافق مع تقنية Low-Rank Adaptation (LoRA) للنماذج اللغوية الكبيرة. باستخدام نماذج LoRA المحسّنة، يمكن للمطوّرين تخصيص سلوك النماذج اللغوية الكبيرة من خلال عملية تدريب فعّالة من حيث التكلفة.إنّ توافق LoRA مع واجهة برمجة التطبيقات LLM Inference API يعمل مع جميع أنواع Gemma ونماذج Phi-2 لنظام التشغيل الخلفي لوحدة معالجة الرسومات، مع تطبيق أوزان LoRA على طبقات الانتباه فقط. يُعدّ هذا التنفيذ الأولي واجهة برمجة تطبيقات تجريبية للتطويرات القادمة، مع خطط لإتاحة المزيد من النماذج وأنواع مختلفة من الطبقات في التحديثات القادمة.
إعداد نماذج LoRA
اتّبِع التعليمات الواردة في
HuggingFace
لتدريب نموذج LoRA محسّن على مجموعة البيانات الخاصة بك باستخدام أنواع النماذج المتوافقة،
Gemma أو Phi-2. يتوفّر كل من نماذج Gemma-2 2B وGemma
2B وPhi-2 على منصّة
HuggingFace بتنسيق safetensors. بما أنّ واجهة برمجة التطبيقات LLM Inference API لا تتوافق إلا مع
LoRA في طبقات الانتباه، حدِّد طبقات الانتباه فقط أثناء إنشاء
LoraConfig
على النحو التالي:
# For Gemma
from peft import LoraConfig
config = LoraConfig(
r=LORA_RANK,
target_modules=["q_proj", "v_proj", "k_proj", "o_proj"],
)
# For Phi-2
config = LoraConfig(
r=LORA_RANK,
target_modules=["q_proj", "v_proj", "k_proj", "dense"],
)
للاختبار، تتوفّر نماذج LoRA محسّنة متاحة للجميع تتوافق مع واجهة برمجة التطبيقات LLM Inference API المتوفّرة على HuggingFace. على سبيل المثال، monsterapi/gemma-2b-lora-maths-orca-200k لجهاز Gemma-2B و lole25/phi-2-sft-ultrachat-lora لجهاز Phi-2.
بعد التدريب على مجموعة البيانات المعدّة وحفظ النموذج، ستحصل على ملف
adapter_model.safetensors
يحتوي على أوزان نموذج LoRA المحسّنة.
ملف safetensors هو نقطة تفتيش LoRA المستخدَمة في تحويل النموذج.
في الخطوة التالية، عليك تحويل أوزان النموذج إلى تنسيق TensorFlow Lite
Flatbuffer باستخدام حزمة MediaPipe Python. يجب أن يحدد ConversionConfig
خيارات النموذج الأساسي بالإضافة إلى خيارات LoRA الإضافية. يُرجى العلم أنّه
بما أنّ واجهة برمجة التطبيقات لا تتيح استخدام LoRA إلا مع وحدة معالجة الرسومات، يجب ضبط الخلفية على
'gpu'
.
import mediapipe as mp
from mediapipe.tasks.python.genai import converter
config = converter.ConversionConfig(
# Other params related to base model
...
# Must use gpu backend for LoRA conversion
backend='gpu',
# LoRA related params
lora_ckpt=LORA_CKPT,
lora_rank=LORA_RANK,
lora_output_tflite_file=LORA_OUTPUT_TFLITE_FILE,
)
converter.convert_checkpoint(config)
سيُنشئ المحوِّل ملفَّين من ملفات TFLite flatbuffer، أحدهما للنموذج الأساسي والآخر لنموذج LoRA.
استنتاج نموذج LoRA
تم تعديل واجهة برمجة التطبيقات الخاصة بعملية الاستنتاج في نموذج اللغة الضخمة (LLM) على الويب وAndroid وiOS لتتيح الاستنتاج في نموذج LoRA.
يتوافق Android مع بروتوكول LoRA الثابت أثناء الإعداد. لتحميل نموذج LoRA، يحدّد المستخدمون مسار نموذج LoRA بالإضافة إلى النموذج اللغوي الكبير الأساسي.// Set the configuration options for the LLM Inference task
val options = LlmInferenceOptions.builder()
.setModelPath('<path to base model>')
.setMaxTokens(1000)
.setTopK(40)
.setTemperature(0.8)
.setRandomSeed(101)
.setLoraPath('<path to LoRA model>')
.build()
// Create an instance of the LLM Inference task
llmInference = LlmInference.createFromOptions(context, options)
لتنفيذ الاستنتاج بالاستناد إلى نموذج لغوي كبير باستخدام LoRA، استخدِم طريقة generateResponse()
أو
generateResponseAsync()
نفسها المستخدَمة في النموذج الأساسي.