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

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

تجربة الميزة

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

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

البدء

ابدأ في استخدام هذه المهمة باتباع أحد أدلة التنفيذ هذه للنظام الأساسي المستهدف. ترشدك هذه الأدلة الخاصة بنظام التشغيل خلال التنفيذ الأساسي لهذه المهمة، مع أمثلة على التعليمات البرمجية التي تستخدم نموذجًا متاحًا وخيارات التهيئة الموصى بها:

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

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

الميزات

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

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

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

تتضمن هذه المهمة خيارات الإعداد التالية:

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

النماذج

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

قبل إعداد LLM Inference API، يمكنك تنزيل أحد النماذج المتوافقة وتخزين الملف في دليل مشروعك.

جيما 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 بت متوافق مع وحدة المعالجة المركزية (CPU).
  • gemma-2b-it-gpu-int4: نموذج Gemma 2B 4 بت متوافق مع وحدة معالجة الرسومات.
  • gemma-2b-it-gpu-int8: نموذج Gemma 2B مقاس 8 بت متوافق مع وحدة معالجة الرسومات.

يمكنك أيضًا ضبط النموذج وإضافة ترجيح جديدة قبل إضافته إلى التطبيق. لمزيد من المعلومات حول ضبط Gemma وتخصيصها، يُرجى الاطّلاع على ضبط Gemma. بعد تنزيل Gemma من نماذج Kaggle، يكون النموذج بالتنسيق المناسب لاستخدامه مع MediaPipe.

إذا نزّلت تطبيق Gemma 2B من Hugging Face، عليك تحويل النموذج إلى تنسيق متوافق مع MediaPipe. تتطلّب واجهة برمجة التطبيقات LLM Inference API تنزيل الملفات التالية وتحويلها:

  • 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 Inference API) تنزيل الملفات التالية وتحويلها:

  • 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

فالكون 1ب

Falcon-1B هو نموذج من نموذج واحد لفك الترميز سببي يبلغ مليار معلَمة فقط تم تدريبه على 350 مليار رمز مميّز من RefinedWeb.

تنزيل Falcon 1B

تتطلّب واجهة برمجة التطبيقات LLM Inference API تنزيل الملفات التالية وتخزينها محليًا:

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

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

شركة StableLM 3B

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

تنزيل StableLM 3B

تتطلّب واجهة برمجة التطبيقات LLM Inference API تنزيل الملفات التالية وتخزينها محليًا:

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

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

Phi-2

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

تنزيل Phi-2

تتطلّب واجهة برمجة التطبيقات LLM Inference API تنزيل الملفات التالية وتخزينها محليًا:

  • 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 متعددة التوقيعات. لمزيد من التفاصيل حول نماذج الربط والتصدير، يمكنك الانتقال إلى صفحة GitHub في AI Edge.

بعد تصدير النموذج إلى تنسيق 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 الإضافية. يُرجى ملاحظة أنّه يجب ضبط الخلفية على '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.

المَعلمة الوصف القيم المقبولة
input_ckpt المسار إلى الملف model.safetensors أو pytorch.bin تجدر الإشارة إلى أنّه في بعض الأحيان يتم تقسيم تنسيق أدوات أمان النموذج إلى ملفات متعدّدة، مثل model-00001-of-00003.safetensors وmodel-00001-of-00003.safetensors. يمكنك تحديد نمط ملف، مثل model*.safetensors. PATH
ckpt_format تمثّل هذه السمة تنسيق ملف النموذج. {"safethenors", "pytorch"}
model_type جارٍ تحويل النموذج اللغوي الكبير. {"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 ckpt لملفوحدة الأمان الذي يخزِّن وزن محوّل LoRA. PATH
lora_rank عدد صحيح يمثّل ترتيب LoRA ckpt. مطلوب لتحويل أوزان لورا. إذا لم يتم تقديمها، يفترض المحول عدم وجود ترجيحات LoRA. ملاحظة: لا تتوافق الخلفية مع LoRA إلا مع الواجهة الخلفية لوحدة معالجة الرسومات. عدد صحيح
lora_output_tflite_file إخراج اسم ملف tflite لأوزان LoRA. PATH

تحويل نموذج AI Edge

في حال استخدام نموذج لغوي كبير (LLM) تم ربطه بنموذج TFLite من خلال AI Edge، استخدِم نص التجميع لإنشاء مجموعة مهام. تقوم عملية التجميع بتعبئة النموذج المعين ببيانات وصفية إضافية (مثل معلمات Tokenizer) اللازمة لإجراء استنتاج شامل.

تتطلب عملية تجميع النموذج حزمة 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 المسار إلى نموذج برنامج إنشاء الرموز المميّزة لـ CentencePiece. PATH
start_token الرمز المميّز للبدء الخاص بالنموذج. يجب أن يكون رمز البدء متوفرًا في نموذج أداة إنشاء الرموز المميّزة الذي تم تقديمه. سلسلة
stop_tokens رموز محطة توقف خاصة بالنموذج. يجب أن تكون رموز التوقف مضمَّنة في نموذج أداة إنشاء الرموز المميّزة الذي تمّ توفيره. القائمة[STRING]
output_filename اسم ملف حزمة مهام المخرجات PATH

تخصيص LoRA

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

تتوافق LoRA مع واجهة برمجة التطبيقات LLM Inference API مع طرازَي Gemma-2B وPhi-2 للخلفية الخلفية لوحدة معالجة الرسومات، مع توفُّر ترجيحات LoRA على طبقات الانتباه فقط. ويعمل هذا التنفيذ الأولي بمثابة واجهة برمجة تطبيقات تجريبية للتطويرات المستقبلية التي تتضمّن خططًا لإتاحة المزيد من النماذج وأنواعًا مختلفة من الطبقات في التحديثات القادمة.

إعداد نماذج LoRA

اتّبِع التعليمات الواردة على HuggingFace لتدريب نموذج LoRA الذي تم ضبطه بدقة على مجموعة البيانات الخاصة بك باستخدام أنواع النماذج المتوافقة، مثل Gemma-2B أو Phi-2. يتوفّر كلٌّ من طرازَي Gemma-2B وPhi-2 على HuggingFace بتنسيق آمن للمَهمّة. بما أنّ واجهة برمجة التطبيقات LLM Inference API لا تتيح استخدام 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"],
)

لأغراض الاختبار، تتوفّر نماذج 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 الدقيق. ملف Safetenors هو نقطة مراجعة LoRA المستخدمة في تحويل النموذج.

الخطوة التالية هي تحويل أوزان النموذج إلى TensorFlow Lite Flatbuffer باستخدام حزمة MediaPipe Python. يجب أن تحدد السمة ConversionConfig خيارات الطراز الأساسي بالإضافة إلى خيارات نموذج RAID الإضافية. يُرجى ملاحظة أنّه يجب ضبط الخلفية على '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.

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

تم تعديل واجهة برمجة التطبيقات Web, Android وiOS لاستنتاج النموذج اللغوي الكبير (LLM) لإتاحة استنتاج نموذج 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)

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