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

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

جرِّبها الآن

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

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

البدء

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

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

يوضّح هذا القسم إمكانات هذه المهمة ومدخلاتها ومخرجاتها وخيارات الضبط.

الميزات

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

  1. إنشاء نص من نص: يمكنك إنشاء نص استنادًا إلى طلب نصي.
  2. اختيار النموذج اللغوي الكبير: يمكنك تطبيق نماذج متعددة لتخصيص التطبيق بما يتناسب مع حالات الاستخدام المحدّدة. يمكنك أيضًا إعادة تدريب النموذج وتطبيق أوزان مخصّصة عليه.
  3. إتاحة LoRA: يمكنك توسيع نطاق إمكانات النموذج اللغوي الكبير وتخصيصها باستخدام نموذج LoRA إما من خلال التدريب على جميع مجموعات البيانات أو من خلال الاستفادة من نماذج LoRA الجاهزة والمعدّة مسبقًا من منتدى المصادر المفتوحة (غير متوافق مع النماذج المحوّلة باستخدام AI Edge Torch Generative API).
مدخلات المهام مخرجات المهام
تقبل LLM Inference API المدخلات التالية:
  • طلب نصي (مثل سؤال أو موضوع رسالة إلكترونية أو مستند يجب تلخيصه)
تُخرج LLM Inference API النتائج التالية:
  • نص من إنشاء الذكاء الاصطناعي استنادًا إلى الطلب الذي أدخلته (مثل إجابة عن السؤال أو مسودة رسالة إلكترونية أو ملخّص للمستند)

خيارات الإعدادات

تتضمّن هذه المهمة خيارات الضبط التالية:

اسم الخيار الوصف نطاق القيم القيمة التلقائية
modelPath مسار مكان تخزين النموذج داخل دليل المشروع المسار لا ينطبق
maxTokens الحد الأقصى لعدد الرموز المميزة (رموز الإدخال + رموز الإخراج) التي يمكن للنموذج التعامل معها عدد صحيح 512
topK عدد الرموز المميزة التي يأخذها النموذج في الاعتبار في كل خطوة من خطوات الإنشاء يقتصر التوقّع على أهم k رموز مميّزة محتملة. عدد صحيح 40
temperature مقدار العشوائية التي يتم إدخالها أثناء الإنشاء يؤدي ارتفاع معدّل ابتكار الردود إلى زيادة الإبداع في النص الذي يتم إنشاؤه، بينما يؤدي انخفاضه إلى إنتاج ردود أكثر قابلية للتوقّع. عدد عائم 0.8
randomSeed تمثّل هذه السمة قيمة البداية العشوائية المستخدَمة أثناء إنشاء النص. عدد صحيح 0
loraPath المسار المطلق إلى نموذج LoRA على الجهاز ملاحظة: لا يتوافق هذا الخيار إلا مع طُرز وحدة معالجة الرسومات. المسار لا ينطبق
resultListener تضبط هذه السمة أداة معالجة النتائج لتلقّي النتائج بشكل غير متزامن. لا ينطبق ذلك إلا عند استخدام طريقة الإنشاء غير المتزامن. لا ينطبق لا ينطبق
errorListener تضبط هذه السمة أداة معالجة الأخطاء الاختيارية. لا ينطبق لا ينطبق

النماذج

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

قبل تهيئة واجهة LLM Inference API، نزِّل نموذجًا وخزِّن الملف في دليل مشروعك. يمكنك استخدام نموذج تم تحويله مسبقًا من مستودع LiteRT Community على HuggingFace، أو تحويل نموذج إلى تنسيق متوافق مع MediaPipe باستخدام أداة AI Edge Torch Generative Converter.

إذا لم يكن لديك نموذج لغوي كبير لاستخدامه مع LLM Inference API، يمكنك البدء بأحد النماذج التالية.

Gemma-3n

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

تستخدم نماذج Gemma 3n تكنولوجيا التفعيل الانتقائي للمعلمات لتقليل متطلبات الموارد. تسمح هذه التقنية للنماذج بالعمل بحجم فعّال يبلغ ملياري و4 مليارات مَعلمة، وهو أقل من العدد الإجمالي للمَعلمات التي تحتوي عليها.

تنزيل Gemma-3n E2B

تنزيل Gemma-3n E4B

يتوفّر طرازا Gemma-3n E2B وE4B من HuggingFace بتنسيق .litertlm، وهما جاهزان للاستخدام مع LLM Inference API لنظام التشغيل Android والويب.

Gemma-3 1B

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

تنزيل Gemma-3 1B

يتوفّر نموذج Gemma-3 1B من HuggingFace بالتنسيق .task/.litertlm، وهو جاهز للاستخدام مع واجهة 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 مع حجم السياق المضمّن في النموذج. يمكن الإشارة إلى ذلك أيضًا باسم ذاكرة التخزين المؤقت لمفتاح القيمة أو طول السياق.
  • numResponses: يجب أن تكون القيمة 1 دائمًا. يتوفّر هذا الخيار على الويب فقط.

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

Gemma-2 2B

Gemma-2 2B هي نسخة من Gemma-2 تضم ملياري مَعلمة، وتعمل على جميع المنصات.

تنزيل Gemma-2 2B

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

تحويل نموذج PyTorch

يمكن تحويل نماذج الذكاء الاصطناعي التوليدي في PyTorch إلى تنسيق متوافق مع MediaPipe باستخدام AI Edge Torch Generative API. يمكنك استخدام واجهة برمجة التطبيقات لتحويل نماذج 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/.litertlm) من ملف tflite وأداة تقسيم النموذج إلى رموز مميزة.

لا يحوّل Torch Generative إلا لوحدة المعالجة المركزية، ويتطلّب جهاز Linux مزوّدًا بذاكرة وصول عشوائي بسعة 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 المسار
tokenizer_model مسار نموذج أداة الترميز SentencePiece المسار
start_token الرمز المميّز لبدء النموذج يجب أن تكون الرمز المميز للبدء متوفّرة في نموذج الترميز المميز المقدَّم. سلسلة
stop_tokens رموز الإيقاف الخاصة بالنموذج يجب أن تكون رموز الإيقاف متوفّرة في نموذج الترميز المميز المقدَّم. LIST[STRING]
output_filename اسم ملف حزمة مهمة الإخراج. المسار

تخصيص LoRA

يمكن ضبط واجهة برمجة التطبيقات للاستدلال على النماذج اللغوية الكبيرة في Mediapipe لتتوافق مع تقنية Low-Rank Adaptation (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 المستخدَمة في تحويل النموذج.

في الخطوة التالية، عليك تحويل أوزان النموذج إلى Flatbuffer في TensorFlow Lite باستخدام حزمة 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

تم تعديل واجهة برمجة التطبيقات Web وAndroid وiOS LLM Inference API لتتوافق مع استنتاج نموذج 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)

لتنفيذ استنتاج LLM باستخدام LoRA، استخدِم الطريقتَين generateResponse() أو generateResponseAsync() نفسيهما كما في النموذج الأساسي.