دليل استنتاج النموذج اللغوي الكبير

تتيح لك واجهة برمجة التطبيقات LLM Inference API تشغيل النماذج اللغوية الكبيرة (LLM) بالكامل على الجهاز، ويمكنك استخدامها لتنفيذ مجموعة كبيرة من المهام، مثل إنشاء النصوص واسترداد المعلومات بتنسيق لغة طبيعية و تلخيص المستندات. توفّر المهمة دعمًا مضمّنًا لعدة نماذج لغوية كبيرة لتحويل النص إلى نص، ما يتيح لك تطبيق أحدث نماذج الذكاء الاصطناعي التوليدي على الأجهزة فقط على تطبيقاتك ومنتجاتك.

ننصحك بتجربة الميزة.

توفّر المهمة دعمًا مضمّنًا لمجموعة متنوعة من لغات النمذجة الكبيرة. تتوفّر النماذج المستضافة على صفحة LiteRT Community بتنسيق متوافق مع MediaPipe ولا تتطلّب أي خطوات إضافية لتحويلها أو compiling.

يمكنك استخدام AI Edge Torch لتصدير نماذج PyTorch إلى نماذج LiteRT (tflite) متعددة التوقيعات، والتي يتم تجميعها مع مَعلمات أداة تقسيم النصوص لإنشاء حِزم مهام. إنّ النماذج التي تم تحويلها باستخدام IDE Torch متوافقة مع واجهة برمجة التطبيقات LLM Inference API ويمكن تشغيلها على المعالج المتقدّم في الخلفية، ما يجعلها مناسبة لتطبيقات Android وiOS.

البدء

ابدأ باستخدام هذه المهمة باتّباع أحد أدلة التنفيذ هذه ل منصّتك المستهدفة. ترشدك هذه الأدلة الخاصة بالمنصات إلى تنفيذ أساسي لهذه المهمة، مع أمثلة على الرموز البرمجية التي تستخدِم نموذجًا متاحًا وخيارات الضبط المقترَحة:

تفاصيل المهمة

يصف هذا القسم ميزات هذه المهمة ومدخلاتها ومخرجاتها وخيارات الضبط.

الميزات

تتضمّن واجهة برمجة التطبيقات LLM Inference API الميزات الرئيسية التالية:

  1. إنشاء نص من نص: يمكنك إنشاء نص استنادًا إلى طلب نصي.
  2. اختيار النماذج اللغوية الكبيرة: يمكنك تطبيق نماذج متعددة لتخصيص التطبيق لحالات الاستخدام المحدّدة. يمكنك أيضًا إعادة تدريب النموذج وتطبيق أوزان مخصّصة عليه.
  3. إتاحة 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، نزِّل نموذجًا واحفظ الملف داخل دليل مشروعك. يمكنك استخدام نموذج تم تحويله مسبقًا من مستودع LiteRT Community في HuggingFace، أو تحويل نموذج إلى تنسيق متوافق مع MediaPipe باستخدام محوِّل AI Edge Torch Generative.

إذا لم يكن لديك نموذج لغوي كبير (LLM) لاستخدامه مع واجهة برمجة التطبيقات LLM Inference API، ابدأ باستخدام أحد النماذج التالية:

Gemma-3 1B

Gemma-3 1B هو أحدث نماذج Gemma المتاحة للجميع، وهو نموذج خفيف ومتطوّر تم إنشاؤه بالاستناد إلى الأبحاث والتكنولوجيا نفسها المستخدَمة في إنشاء نماذج Gemini. يحتوي النموذج على مليار معلَمة ومَعلمات مفتوحة. يُعدّ الإصدار 1B أخفّ طراز في عائلة Gemma، ما يجعله مثاليًا للعديد من حالات الاستخدام على الجهاز.

تنزيل Gemma-3 1B

يتوفّر نموذج Gemma-3 1B من HuggingFace بتنسيق .task، وهو جاهز للاستخدام مع واجهة برمجة التطبيقات LLM Inference API لتطبيقات Android والويب.

عند تشغيل Gemma-3 1B باستخدام واجهة برمجة التطبيقات LLM Inference API، عليك ضبط الخيارات التالية وفقًا لذلك:

  • preferredBackend: استخدِم هذا الخيار للاختيار بين CPU أو GPU الخلفي. لا يتوفّر هذا الخيار إلا لأجهزة Android.
  • supportedLoraRanks: لا يمكن ضبط واجهة برمجة التطبيقات LLM Inference API لتتوافق مع Low-Rank Adaptation (LoRA) باستخدام نموذج Gemma-3 1B. لا تستخدِم الخيارين supportedLoraRanks أو loraRanks.
  • maxTokens: يجب أن تتطابق قيمة maxTokens مع حجم السياق المضمّن في النموذج. ويمكن أيضًا الإشارة إلى ذلك باسم ذاكرة التخزين المؤقت للمفتاح والقيمة (KV) أو طول السياق.
  • numResponses: يجب أن تكون دائمًا 1. لا يتوفّر هذا الخيار إلا على الويب.

عند تشغيل Gemma-3 1B على تطبيقات الويب، يمكن أن تؤدي عملية الإعداد إلى ازدحامٍ طويل في سلسلة المهام الحالية. إذا أمكن، يمكنك دائمًا تشغيل النموذج من سلسلت رسائل معالجة.

Gemma-2 2B

Gemma-2 2B هو أحد تصاميم Gemma-2 المخصّصة للأجهزة التي تعمل بنظام التشغيل 2B، ويعمل على جميع الأنظمة الأساسية.

تنزيل Gemma-2 2B

يحتوي النموذج على معلَمات 2B والأوزان المفتوحة. تشتهر Gemma-2 2B بتوفر مهارات التفكير المتقدّمة للنماذج في فئتها.

تحويل نموذج PyTorch

يمكن تحويل النماذج التوليدية في PyTorch إلى تنسيق متوافق مع MediaPipe باستخدام واجهة برمجة التطبيقات AI Edge Torch Generative. يمكنك استخدام واجهة برمجة التطبيقات لتحويل نماذج PyTorch إلى نماذج LiteRT (TensorFlow Lite) متعددة التوقيعات. لمزيد من التفاصيل حول تعيين النماذج وتصديرها، يُرجى الانتقال إلى صفحة GitHub الخاصة بتطبيق AI Edge Torch.

تتضمن خطوات تحويل نموذج PyTorch باستخدام واجهة برمجة التطبيقات AI Edge Torch Generative API:

  1. نزِّل نقاط التحقق لنموذج PyTorch.
  2. استخدِم واجهة برمجة التطبيقات AI Edge Torch Generative API لإنشاء النموذج وتحويله وتحويله إلى تنسيق ملف متوافق مع MediaPipe (.tflite).
  3. أنشئ حِزمة مهام (.task) من ملف tflite وبرنامج تقسيم النصوص في النموذج.

لا يحوّل محوِّل Torch Generative إلا باستخدام وحدة المعالجة المركزية (CPU) ويتطلّب جهاز Linux مزوّدًا بذاكرة وصول عشوائي (RAM) بسعة 64 غيغابايت على الأقل.

لإنشاء حِزمة مهام، استخدِم النص البرمجي لعمليات التجميع لإنشاء حِزمة مهام. تُجمِّع عملية التجميع النموذج المرتبط مع بيانات وصفية إضافية (مثل مَعلمات أداة تقسيم النصوص) اللازمة لإجراء عملية معالجة ذكية شاملة

تتطلّب عملية تجميع النماذج حزمة 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)

سيُنشئ المحوِّل ملفَّي Flatbuffer من TFLite، أحدهما للنموذج الأساسي والآخر لنموذج LoRA.

استنتاج نموذج LoRA

تم تعديل واجهة برمجة التطبيقات LLM Inference API للويب و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() نفسها المستخدَمة في النموذج الأساسي.