تتيح لك واجهة LLM Inference API تنفيذ النماذج اللغوية الكبيرة (LLM) بالكامل. على الجهاز فقط، والذي يمكنك استخدامه لأداء مجموعة واسعة من المهام، مثل وتوليد النص واسترداد المعلومات بتنسيق لغة طبيعية وتلخيص الوثائق. توفر المهمة دعمًا مدمجًا لعدة تحويل النص إلى نص نماذج لغوية كبيرة، كي تتمكّن من تطبيق أحدث نسخة من تلك النماذج على الجهاز فقط نماذج الذكاء الاصطناعي التوليدي على تطبيقاتك ومنتجاتك
وتتوافق المهمة مع الترميزَين Gemma 2B و7B، وهما جزء من وهي مجموعة من الطرازات الخفيفة الحديثة والمفتوحة التي تم إنشاؤها من التكنولوجيا والأبحاث المستخدمة لإنشاء Gemini النماذج. كما أنّها تتيح استخدام النماذج الخارجية التالية: Phi-2، Falcon-RW-1B StableLM-3B
وبالإضافة إلى النماذج المدعومة محليًا، يمكن للمستخدمين تعيين نماذج أخرى باستخدام ميزة AI Edge من Google (بما في ذلك ربط نماذج PyTorch يسمح ذلك للمستخدمين بتصدير نموذج تم ربطه إلى توقيع متعدد. طُرُز TensorFlow Lite المرفقة مع مَعلمات أداة إنشاء الرموز المميّزة لإنشاء حزمة مهام.
البدء
يمكنك بدء استخدام هذه المهمة باتّباع أحد أدلة التنفيذ التالية المنصة المستهدفة. ترشدك هذه الأدلة الخاصة بنظام التشغيل خلال تنفيذ هذه المهمة، مع أمثلة التعليمات البرمجية التي تستخدم أحد النماذج خيارات الضبط المقترَحة:
الويب:
أجهزة Android:
iOS
تفاصيل المهمة
يصف هذا القسم الإمكانات والمدخلات والمخرجات والإعدادات. الخيارات لهذه المهمة.
الميزات
تحتوي واجهة برمجة التطبيقات للاستنتاج اللغوي الكبير (LLM) على الميزات الرئيسية التالية:
- إنشاء نص إلى نص: يمكنك إنشاء نص استنادًا إلى طلب إدخال نص.
- اختيار النموذج اللغوي الكبير: يمكنك تطبيق نماذج متعددة لتخصيص التطبيق بما يتناسب مع حالات استخدام محددة. ويمكنك أيضًا إعادة تدريب ترجيحات مخصصة وتطبيقها على الأمثل.
- دعم LoRA: توسيع نطاق ميزة "النموذج اللغوي الكبير" (LLM) وتخصيصه باستخدام نموذج LoRA إما بالتدريب على جميع مجموعات البيانات الخاصة بك، أو اتخاذ LoRA معدة مسبقًا النماذج من منتدى البرامج مفتوحة المصدر (النماذج الأصلية فقط).
إدخالات المهام | نتائج المهام |
---|---|
تقبل واجهة برمجة تطبيقات الاستنتاج اللغوي الكبير (LLM) البيانات التالية:
|
تُخرج واجهة برمجة التطبيقات للاستنتاج اللغوي الكبير (LLM) النتائج التالية:
|
خيارات الإعدادات
تتضمّن هذه المهمة خيارات الضبط التالية:
اسم الخيار | الوصف | نطاق القيمة | القيمة الافتراضية |
---|---|---|---|
modelPath |
المسار إلى مكان تخزين النموذج ضمن دليل المشروع. | المسار | لا ينطبق |
maxTokens |
الحد الأقصى لعدد الرموز المميزة (الرموز المميزة للإدخال + الرموز المميزة للمخرجات) التي يتعامل معها النموذج. | عدد صحيح | 512 |
topK |
يشير ذلك المصطلح إلى عدد الرموز المميّزة التي يأخذها النموذج في الاعتبار في كل خطوة من خطوات الإنشاء. يحدد هذا الخيار التوقعات الخاصة بأعلى ألف رمز من المرجح أن يكون أكثر ترجيحًا. | عدد صحيح | 40 |
temperature |
مقدار العشوائية التي تم تقديمها أثناء الإنشاء. ارتفاع تؤدي درجة الحرارة إلى مزيد من الإبداع في النص الذي يتم إنشاؤه، بينما ودرجة الحرارة المنخفضة ينتج عنها قدر أكبر من التنبؤ. | عائم | 0.8 |
randomSeed |
القيمة العشوائية المستخدمة أثناء إنشاء النص. | عدد صحيح | 0 |
loraPath |
المسار المطلق لنموذج LoRA محليًا على الجهاز. ملاحظة: لا يتوافق هذا إلا مع طُرز وحدة معالجة الرسومات. | المسار | لا ينطبق |
resultListener |
تعيين أداة معالجة النتيجة لتلقي النتائج بشكل غير متزامن. ينطبق فقط عند استخدام طريقة الإنشاء غير المتزامن. | لا ينطبق | لا ينطبق |
errorListener |
تضبط هذه السياسة أداة معالجة للأخطاء اختيارية. | لا ينطبق | لا ينطبق |
النماذج
تحتوي واجهة برمجة التطبيقات LLM Inference API على توافق مُضمّن مع عمليات تحويل النص إلى نص الكبيرة التي يمكن فصلها. نماذج لغوية تم تحسينها لتعمل على المتصفحات والأجهزة الجوّالة. هذه يمكن تنزيل نماذج بسيطة لإجراء الاستنتاجات على الجهاز فقط.
قبل إعداد واجهة برمجة تطبيقات استنتاج النموذج اللغوي الكبير (LLM)، يجب تنزيل أحد النماذج المتوافقة تخزين الملف داخل دليل المشروع الخاص بك.
جيما 2B
Gemma 2B هي جزء من عائلة نماذج خفيفة وحديثة مفتوحة تم إنشاؤها من نفس الأبحاث تكنولوجيا مستخدَمة لإنشاء نماذج Gemini. تشير رسالة الأشكال البيانية يحتوي النموذج على معلمات 2B وترجيحات مفتوحة. هذا النموذج مناسب تمامًا مجموعة متنوعة من مهام إنشاء النص، بما في ذلك الإجابة على الأسئلة والتلخيص والاستنتاج.
تتوفّر طُرز Gemma 2B بأربعة خيارات مختلفة:
- gemma-2b-it-cpu-int4: نموذج Gemma 2B 4 بت مع التوافق مع وحدة المعالجة المركزية (CPU)
- 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 وتخصيصها، يُرجى الاطّلاع على Tuning Gemma. بعد تنزيل Gemma من Kaggle Models، يكون النموذج بالتنسيق المناسب للاستخدام مع MediaPipe.
في حال تنزيل Gemma 2B من Hugging الوجه، يجب تحويله. النموذج إلى تنسيق متوافق مع MediaPipe. واجهة برمجة تطبيقات استنتاج النماذج اللغوية الكبيرة مطلوب تنزيل الملفات التالية وتحويلها:
model-00001-of-00002.safetensors
model-00002-of-00002.safetensors
tokenizer.json
tokenizer_config.json
جيما 7B
Gemma 7B هو نموذج Gemma أكبر حجمًا بنموذج 7B. المعاملات والأوزان المفتوحة. هذا النموذج أكثر فعاليةً في مجموعة متنوعة من النصوص. إنشاء المهام، بما في ذلك الإجابة على الأسئلة والتلخيص والاستنتاج. لا تتوفّر Gemma 7B إلا على الويب.
يتوفّر نموذج Gemma 7B بإصدار واحد:
- gemma-1.1-7b-it-gpu-int8: طراز Gemma 7B 8 بت مع التوافق مع وحدة معالجة الرسومات
في حال تنزيل Gemma 7B من تطبيق Hugging Face: يجب عليك تحويل النموذج إلى تنسيق متوافق مع MediaPipe. تشير رسالة الأشكال البيانية تتطلب واجهة برمجة التطبيقات للاستنتاج اللغوي الكبير (LLM) تنزيل الملفات التالية وتحويلها:
model-00001-of-00004.safetensors
model-00002-of-00004.safetensors
model-00003-of-00004.safetensors
model-00004-of-00004.safetensors
tokenizer.json
tokenizer_config.json
صقر 1B
Falcon-1B هو نموذج مكوَّن من مليار معلمة في برنامج فك الترميز السببي فقط وتم تدريبه على 350 مليار. رموز مميزة من RefinedWeb:
تتطلب واجهة برمجة التطبيقات للاستدلال من النموذج اللغوي الكبير (LLM) تنزيل الملفات التالية وتخزينها محليًا:
tokenizer.json
tokenizer_config.json
pytorch_model.bin
بعد تنزيل ملفات نموذج Falcon، يصبح النموذج جاهزًا للتحويل إلى تنسيق MediaPipe. اتّبِع الخطوات الواردة في تحويل النموذج إلى MediaPipe .
StableLM 3B
StableLM-3B هي 3 مليار معلَمة نموذج لغوي تم تدريبها مسبقًا على برنامج فك الترميز فقط. تريليون رمز مميز من مجموعات بيانات متنوعة باللغة الإنجليزية والرموز لمدة 4 حقبة.
تتطلب واجهة برمجة التطبيقات للاستدلال من النموذج اللغوي الكبير (LLM) تنزيل الملفات التالية وتخزينها محليًا:
tokenizer.json
tokenizer_config.json
model.safetensors
بعد تنزيل ملفات نموذج StableLM، يصبح النموذج جاهزًا للتحويل. إلى تنسيق MediaPipe. اتّبِع الخطوات الواردة في تحويل النموذج إلى MediaPipe .
Phi-2
يمثل Phi-2 نموذج محوّل يحتوي على 2.7 مليار معلَمة. تم تدريبه باستخدام أنواع نصوص معالجة اللغات الطبيعية ومواقع الويب التي تمت تصفيتها. النموذج هو الأنسب للمطالبات باستخدام تنسيق Question-Answer والمحادثة والتعليمات.
تتطلب واجهة برمجة التطبيقات للاستدلال من النموذج اللغوي الكبير (LLM) تنزيل الملفات التالية وتخزينها محليًا:
tokenizer.json
tokenizer_config.json
model-00001-of-00002.safetensors
model-00002-of-00002.safetensors
بعد تنزيل ملفات نموذج Phi-2، يصبح النموذج جاهزًا للتحويل إلى تنسيق MediaPipe. اتّبِع الخطوات الواردة في تحويل النموذج إلى MediaPipe .
النماذج التي تم تصديرها من خلال AI Edge
AI Edge هو عرض من Google يتيح لك تحويل النماذج التي يعرضها المستخدمون. إلى نماذج TensorFlow Lite ذات التوقيعات المتعددة. لمزيد من التفاصيل حول تعيين تصدير النماذج، والانتقال إلى AI Edge Torch صفحة GitHub.
بعد تصدير النموذج إلى تنسيق TFLite، يصبح النموذج جاهزًا وتحويلها إلى تنسيق MediaPipe. لمزيد من المعلومات، راجع تحويل النموذج إلى تنسيق MediaPipe
تحويل النموذج إلى تنسيق MediaPipe
إحالة ناجحة من نموذج مدمج مع المحتوى
عند استخدام نموذج لغوي كبير (LLM) خارجي (Phi-2 أو Falcon أو StableLM) أو نموذج غير Kaggle من Gemma، استخدم النصوص البرمجية للتحويل لتنسيق النموذج متوافق مع MediaPipe
تتطلب عملية تحويل النموذج توفُّر حزمة 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 للتخزين المؤقت، أحدهما للنموذج الأساسي والآخر لنموذج LoRA.
المعلمة | الوصف | القيم المقبولة |
---|---|---|
input_ckpt |
المسار إلى ملف model.safetensors أو pytorch.bin . يُرجى العِلم أنّه في بعض الأحيان يتم تقسيم تنسيق أدوات أمان النموذج إلى عدة ملفات، على سبيل المثال: model-00001-of-00003.safetensors ، model-00001-of-00003.safetensors يمكنك تحديد نمط للملف، مثل model*.safetensors . |
المسار |
ckpt_format |
تمثّل هذه السمة تنسيق ملف النموذج. | {"safetensors", "pytorch"} |
model_type |
جارٍ تحويل النموذج اللغوي الكبير. | {"PHI_2", "FALCON_RW_1B", "STABLELM_4E1T_3B", "GEMMA_2B"} |
backend |
المعالج (المُفوَّض) المستخدَم لتشغيل النموذج. | {"cpu", "gpu"} |
output_dir |
المسار إلى دليل الإخراج الذي يستضيف ملفات الوزن لكل طبقة. | المسار |
output_tflite_file |
المسار إلى ملف الإخراج. على سبيل المثال، "model_cpu.bin" أو "model_gpu.bin". هذا الملف متوافق فقط مع واجهة برمجة التطبيقات للاستنتاج اللغوي الكبير (LLM)، ولا يمكن استخدامه كملف "tflite" عام. | المسار |
vocab_model_file |
المسار إلى الدليل الذي يخزن tokenizer.json
tokenizer_config.json ملفًا. بالنسبة إلى Gemma، أشِر إلى ملف tokenizer.model واحد. |
المسار |
lora_ckpt |
المسار إلى ملف LoRA ckpt الخاص بأدوات السلامة التي تخزن وزن محوّل LoRA. | المسار |
lora_rank |
عدد صحيح يمثّل رتبة LoRA ckpt. مطلوبة لتحويل ترجيحات lora. إذا لم يتم تقديمها، يفترض المُحول أنه ليست هناك ترجيحات LoRA. ملاحظة: لا تدعم خلفية وحدة معالجة الرسومات فقط LoRA. | عدد صحيح |
lora_output_tflite_file |
إخراج اسم ملف tflite لأوزان LoRA. | المسار |
تحويل نموذج AI Edge
في حال استخدام نموذج لغوي كبير تم ربطه بنموذج TFLite من خلال AI Edge، استخدِم نص برمجي لإنشاء حزمة مهام. تضم عملية التجميع مع بيانات وصفية إضافية (مثل معلَمات أداة إنشاء الرموز المميّزة) مطلوبة لتنفيذ الاستنتاج الشامل.
تتطلب عملية تجميع النموذج توفر حزمة 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 |
المسار إلى AI Edge الذي تم تصدير نموذج TFLite | المسار |
tokenizer_model |
المسار إلى نموذج أداة إنشاء الرموز المميّزة لـ SentencePiece | المسار |
start_token |
الرمز المميّز للبدء الخاص بالنموذج. يجب أن يكون رمز البدء موجودًا في نموذج أداة إنشاء الرموز المميزة. | سلسلة |
stop_tokens |
رموز محطات التوقف الخاصة بالنموذج. يجب أن تكون رموز التوقف موجودة في نموذج أداة إنشاء الرموز المميزة. | القائمة[STRING] |
output_filename |
اسم ملف حزمة مهام الإخراج. | المسار |
تخصيص LoRA
يمكن ضبط واجهة برمجة تطبيقات استدلال الوسائط اللغوية الكبيرة (LLM) لدعم التوافق منخفض الترتيب (LoRA). للنماذج اللغوية الكبيرة. وباستخدام نماذج LoRA محسّنة، يستطيع المطورون تخصيص سلوك النماذج اللغوية الكبيرة من خلال عملية تدريب فعّالة من حيث التكلفةيتوافق استخدام LoRA مع واجهة برمجة تطبيقات الاستنتاج اللغوي الكبير (LLM) لنماذج Gemma-2B وPhi-2 الواجهة الخلفية لوحدة GPU، مع تطبيق ترجيحات LoRA على طبقات الانتباه فقط. هذا النمط يعمل التنفيذ الأولي بمثابة واجهة برمجة تطبيقات تجريبية للتطويرات المستقبلية مع خطط لدعم المزيد من النماذج وأنواع الطبقات المختلفة في المستقبل التحديثات.
إعداد نماذج LoRA
اتّبِع التعليمات المتعلقة بتطبيق HuggingFace لتدريب نموذج LoRA مضبوط بشكلٍ دقيق على مجموعة بياناتك باستخدام أنواع النماذج المتوافقة، مثل Gemma-2B أو Phi-2. يتوفّر كل من نموذجَي Gemma-2B وPhi-2 على HuggingFace بتنسيق أدوات السلامة. بما أنّ واجهة برمجة تطبيقات الاستنتاج اللغوي الكبير (LLM) لا تتوافق إلا مع LoRA في طبقات الانتباه، يجب تحديد طبقات الانتباه فقط أثناء إنشاء LoraConfig
على النحو التالي:
# For Gemma-2B
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"],
)
لأغراض الاختبار، تتوفّر على HuggingFace نماذج LoRA محسّنة ومتاحة للجميع تتناسب مع واجهة LLM Inference API. على سبيل المثال، 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 باستخدام حزمة MediaPipe Python. يجب أن تحدِّد ConversionConfig
خيارات النموذج الأساسي بالإضافة إلى خيارات LoRA الإضافية. يُرجى العلم أنّه يجب ضبط الخلفية على 'gpu'
لأنّ واجهة برمجة التطبيقات لا تتوافق إلا مع استنتاج LoRA باستخدام وحدة معالجة الرسومات.
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 للتخزين المؤقت، أحدهما للنموذج الأساسي والآخر لنموذج LoRA.
استنتاج نموذج لوRA
تم تعديل واجهة برمجة التطبيقات LLM للنماذج اللغوية الكبيرة على الويب وAndroid وiOS لإتاحة استنتاج نموذج LoRA. يتوافق الويب مع LoRA الديناميكية التي يمكنها تبديل نماذج LoRA المختلفة أثناء وقت التشغيل. يدعم Android وiOS تنسيق LoRA الثابت، الذي يستخدم قيم LoRA نفسها خلال مدة المهمة.
يتوافق Android مع LoRA الثابتة أثناء الإعداد. لتحميل نموذج LoRA، يحدِّد المستخدمون مسار نموذج LoRA بالإضافة إلى النموذج اللغوي الكبير (LLM) الأساسي.// 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)
لتطبيق استنتاج يستند إلى النموذج اللغوي الكبير (LLM) من خلال LoRA، استخدِم طريقة generateResponse()
أو generateResponseAsync()
نفسها المستخدَمة في النموذج الأساسي.