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

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

جرِّبها.

وتتوافق المهمة مع الترميزَين Gemma 2B و7B، وهما جزء من وهي مجموعة من الطرازات الخفيفة الحديثة والمفتوحة التي تم إنشاؤها من التكنولوجيا والأبحاث المستخدمة لإنشاء Gemini النماذج. كما أنّها تتيح استخدام النماذج الخارجية التالية: Phi-2، Falcon-RW-1B StableLM-3B

وبالإضافة إلى النماذج المدعومة محليًا، يمكن للمستخدمين تعيين نماذج أخرى باستخدام ميزة AI Edge من Google (بما في ذلك ربط نماذج PyTorch يسمح ذلك للمستخدمين بتصدير نموذج تم ربطه إلى توقيع متعدد. طُرُز TensorFlow Lite المرفقة مع مَعلمات أداة إنشاء الرموز المميّزة لإنشاء حزمة مهام.

البدء

يمكنك بدء استخدام هذه المهمة باتّباع أحد أدلة التنفيذ التالية المنصة المستهدفة. ترشدك هذه الأدلة الخاصة بنظام التشغيل خلال تنفيذ هذه المهمة، مع أمثلة التعليمات البرمجية التي تستخدم أحد النماذج خيارات الضبط المقترَحة:

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

يصف هذا القسم الإمكانات والمدخلات والمخرجات والإعدادات. الخيارات لهذه المهمة.

الميزات

تحتوي واجهة برمجة التطبيقات للاستنتاج اللغوي الكبير (LLM) على الميزات الرئيسية التالية:

  1. إنشاء نص إلى نص: يمكنك إنشاء نص استنادًا إلى طلب إدخال نص.
  2. اختيار النموذج اللغوي الكبير: يمكنك تطبيق نماذج متعددة لتخصيص التطبيق بما يتناسب مع حالات استخدام محددة. ويمكنك أيضًا إعادة تدريب ترجيحات مخصصة وتطبيقها على الأمثل.
  3. دعم 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 بأربعة خيارات مختلفة:

  • 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 7B بإصدار واحد:

في حال تنزيل 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:

تنزيل Falcon 1B

تتطلب واجهة برمجة التطبيقات للاستدلال من النموذج اللغوي الكبير (LLM) تنزيل الملفات التالية وتخزينها محليًا:

  • tokenizer.json
  • tokenizer_config.json
  • pytorch_model.bin

بعد تنزيل ملفات نموذج Falcon، يصبح النموذج جاهزًا للتحويل إلى تنسيق MediaPipe. اتّبِع الخطوات الواردة في تحويل النموذج إلى MediaPipe .

StableLM 3B

StableLM-3B هي 3 مليار معلَمة نموذج لغوي تم تدريبها مسبقًا على برنامج فك الترميز فقط. تريليون رمز مميز من مجموعات بيانات متنوعة باللغة الإنجليزية والرموز لمدة 4 حقبة.

تنزيل StableLM 3B

تتطلب واجهة برمجة التطبيقات للاستدلال من النموذج اللغوي الكبير (LLM) تنزيل الملفات التالية وتخزينها محليًا:

  • tokenizer.json
  • tokenizer_config.json
  • model.safetensors

بعد تنزيل ملفات نموذج StableLM، يصبح النموذج جاهزًا للتحويل. إلى تنسيق MediaPipe. اتّبِع الخطوات الواردة في تحويل النموذج إلى MediaPipe .

Phi-2

يمثل Phi-2 نموذج محوّل يحتوي على 2.7 مليار معلَمة. تم تدريبه باستخدام أنواع نصوص معالجة اللغات الطبيعية ومواقع الويب التي تمت تصفيتها. النموذج هو الأنسب للمطالبات باستخدام تنسيق Question-Answer والمحادثة والتعليمات.

تنزيل Phi-2

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