تتيح لك واجهة برمجة التطبيقات اللغوية الكبيرة (LLM) تشغيل النماذج اللغوية الكبيرة (LLM) بالكامل على الجهاز فقط. ويمكنك استخدامها لتنفيذ مجموعة كبيرة من المهام، مثل إنشاء النص واسترجاع المعلومات بتنسيق لغة طبيعية وتلخيص المستندات. توفِّر هذه المهمّة دعمًا مضمَّنًا لعدة نماذج لغوية كبيرة لتحويل النص إلى نص، كي تتمكّن من تطبيق أحدث نماذج الذكاء الاصطناعي التوليدي على الجهاز على تطبيقاتك ومنتجاتك.
وتدعم المهمة Gemma 2B و7B، وهي جزء من مجموعة من النماذج المفتوحة والخفيفة والمتطوّرة التي تم تصميمها باستخدام تكنولوجيا البحث والتكنولوجيا نفسها المستخدَمة في إنشاء نماذج Gemini. كما يتوافق مع النماذج الخارجية التالية: Phi-2 وFalcon-RW-1B وStableLM-3B
بالإضافة إلى النماذج المتوفّرة في الأصل، يمكن للمستخدمين ربط نماذج أخرى باستخدام عروض AI Edge من Google (بما في ذلك ربط نماذج PyTorch). يسمح ذلك للمستخدمين بتصدير نموذج معيّن إلى نماذج TensorFlow Lite ذات التوقيعات المتعددة، والتي يتم دمجها مع معلَمات أداة إنشاء الرموز المميّزة لإنشاء "حزمة مهام".
البدء
ابدأ في استخدام هذه المهمة باتباع أحد أدلة التنفيذ هذه للنظام الأساسي المستهدف. ترشدك هذه الأدلة الخاصة بنظام التشغيل خلال التنفيذ الأساسي لهذه المهمة، مع أمثلة على التعليمات البرمجية التي تستخدم نموذجًا متاحًا وخيارات التهيئة الموصى بها:
الويب:
أجهزة Android:
iOS
تفاصيل المهمة
يصف هذا القسم الإمكانات والمدخلات والمخرجات وخيارات الضبط لهذه المهمة.
الميزات
تتضمّن واجهة برمجة التطبيقات LLM Inference API الميزات الرئيسية التالية:
- إنشاء تحويل النص إلى نص - يمكنك إنشاء نص استنادًا إلى طلب إدخال نص.
- اختيار النموذج اللغوي الكبير: يمكنك تطبيق نماذج متعدّدة لتخصيص التطبيق بما يتناسب مع حالات استخدامك المحدّدة. يمكنك أيضًا إعادة تدريب الأوزان المخصصة وتطبيقها على النموذج.
- 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-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-1.1-7b-it-gpu-int8: نموذج Gemma 7B 8 بت متوافق مع وحدة معالجة الرسومات.
إذا نزّلت فيلم 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.
تتطلّب واجهة برمجة التطبيقات LLM Inference API تنزيل الملفات التالية وتخزينها محليًا:
tokenizer.json
tokenizer_config.json
pytorch_model.bin
بعد تنزيل ملفات نموذج Falcon، يكون النموذج جاهزًا للتحويل إلى تنسيق MediaPipe. اتّبِع الخطوات الواردة في تحويل النموذج إلى تنسيق MediaPipe.
شركة StableLM 3B
نظام StableLM-3B هو نموذج لغوي يستخدم 3 مليار معلَمات فقط لفك الترميز فقط تم تدريبه مسبقًا على 1 تريليون رمز من مجموعات بيانات اللغة الإنجليزية والرموز البرمجية المتنوعة في 4 حقبات.
تتطلّب واجهة برمجة التطبيقات LLM Inference API تنزيل الملفات التالية وتخزينها محليًا:
tokenizer.json
tokenizer_config.json
model.safetensors
بعد تنزيل ملفات نموذج StableLM، يكون النموذج جاهزًا للتحويل إلى تنسيق MediaPipe. اتّبِع الخطوات الواردة في تحويل النموذج إلى تنسيق MediaPipe.
Phi-2
Phi-2 هو نموذج محول 2.7 مليار معلَمة. وقد تم تدريبه باستخدام نصوص اصطناعية متنوعة من خلال برنامج NLP ومواقع ويب تمت تصفيتها. يُعد النموذج هو الأنسب للمطالبات باستخدام تنسيق Question-Answer والمحادثة والرمز.
تتطلّب واجهة برمجة التطبيقات 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()
نفسها المستخدَمة في النموذج الأساسي.