LiteRT-LM هي مكتبة متوافقة مع عدة منصات ومصمَّمة لتشغيل مسارات نماذج اللغة بكفاءة على مجموعة كبيرة من الأجهزة، بدءًا من الهواتف الجوّالة وصولاً إلى الأنظمة المضمَّنة. توفّر هذه الأداة للمطوّرين الأدوات اللازمة لإنشاء عمليات سير عمل متطورة لنماذج اللغة ونشرها، وهي تتضمّن الآن ميزة التكامل السلس مع وحدة المعالجة العصبية (NPU).
تشغيل نماذج اللغات الكبيرة على وحدة المعالجة المركزية ووحدة معالجة الرسومات
يمكنك الاطّلاع على مستودع LiteRT-LM على GitHub للحصول على تعليمات مفصّلة حول التطوير المتوافق مع عدة أنظمة أساسية وتسريع الأجهزة باستخدام وحدة المعالجة المركزية (CPU) أو وحدة معالجة الرسومات (GPU).
تشغيل النماذج اللغوية الكبيرة على وحدة المعالجة العصبية
توفّر وحدات المعالجة العصبية (NPU) وحدات أجهزة متخصّصة تم تحسينها لتناسب أحجام المعالجة في التعلّم العميق. وتتوفّر هذه الميزات بشكل متزايد في الأنظمة الحديثة على شريحة واحدة (SoC)، خاصةً على الأجهزة الجوّالة. وبفضل أدائها العالي، تُعدّ هذه الوحدات مناسبة جدًا لتنفيذ استنتاجات نماذج اللغات الكبيرة.
مورّدو وحدات المعالجة العصبية
يتيح LiteRT-LM تشغيل نماذج اللغات الكبيرة باستخدام تسريع وحدة المعالجة العصبية (NPU) مع المورّدين التاليين. اختَر التعليمات حسب المورّد الذي تريد تجربته:
البدء بسرعة
للبدء، اتّبِع أولاً تعليمات المتطلبات الأساسية لإعداد البيئة والمستودع.
للتفاعل مع جهاز Android، تأكَّد أيضًا من تثبيت Android Debug Bridge بشكل صحيح ومن توفُّر جهاز متصل يمكن الوصول إليه باستخدام adb.
للحصول على تعليمات أكثر تفصيلاً، يمكنك الاطّلاع على قسم البدء السريع في مستودع LiteRT-LM، والعثور على مزيد من المعلومات حول litert_lm_main
العرض التوضيحي لسطر الأوامر.
Qualcomm AI Engine Direct
في ما يلي خطوات تشغيل النماذج اللغوية الكبيرة على وحدة المعالجة العصبية من Qualcomm:
الخطوة 1: تنزيل نموذج .litertlm
تم تصميم وقت تشغيل LiteRT-LM للعمل مع النماذج بتنسيق .litertlm.
يمكنك العثور على الطُرز المتوافقة وتنزيلها في الجدول التالي.
| الطراز | منظومة على رقاقة (SoC) | التكميم | حجم الاستيعاب | حجم النموذج (ميغابايت) | رابط التنزيل |
|---|---|---|---|---|---|
| Gemma3-1B | SM8750 | 4 بت لكل قناة | 1280 | 658 | تنزيل |
| Gemma3-1B | SM8650 | 4 بت لكل قناة | 1280 | 658 | تنزيل |
| Gemma3-1B | SM8550 | 4 بت لكل قناة | 1280 | 657 | تنزيل |
عليك تنزيل النموذج المتوافق مع نظامك على الشريحة.
في ما يلي مثال على أمر يمكن أن يساعدك في الحصول على رابط Hugging Face الذي
يمكنه تنزيل النموذج الصحيح لنظامك على الشريحة في هاتفك (يُرجى العِلم أنّه عليك
تسجيل الدخول والموافقة على النموذج من أجل الحصول على إذن بتنزيل
الملف). يجب التأكّد من توفّر جهاز متصل يمكن الوصول إليه باستخدام adb.
SOC_MODEL=$(adb shell getprop ro.soc.model | tr '[:upper:]' '[:lower:]')
echo "https://huggingface.co/litert-community/Gemma3-1B-IT/blob/main/Gemma3-1B-IT_q4_ekv1280_${SOC_MODEL}.litertlm"
تأكَّد من إدراج $SOC_MODEL في جدول الأجهزة المتوافقة. لن يعمل الرابط الذي تم إنشاؤه مع الطُرز غير المتوافقة. تتم إضافة دعم لوحدات معالجة عصبية جديدة بانتظام، لذا يُرجى التحقّق مجددًا لاحقًا لمعرفة ما إذا كان جهازك متوافقًا.
الخطوة 2: تنزيل مكتبات QAIRT واستخراجها
لتشغيل النموذج باستخدام وحدة المعالجة العصبية (NPU) من Qualcomm، يجب توفُّر مكتبات وقت التشغيل المرتبطة على الجهاز. يمكن تنزيل حزمة تطوير البرامج (SDK) الخاصة بأداة QAIRT من خلال الرابط واستخراج الملف. اضبط المتغيّرQAIRT_ROOT (سيتم استخدامه في الخطوات اللاحقة) للإشارة إلى المجلد الذي تم فك ضغطه والذي يحتوي على رقم الإصدار، على سبيل المثال:
unzip <your_file.zip> -d ~/
QAIRT_ROOT=~/qairt/2.42.0.251225
الخطوة 3: إنشاء وقت التشغيل / المكتبات LiteRT-LM
التطوير في نظام التشغيل Linux
لتتمكّن من إنشاء ملف ثنائي لنظام التشغيل Android، عليك تثبيت الإصدار r28b من حزمة NDK أو إصدار أحدث من https://developer.android.com/ndk/downloads#stable-downloads. في ما يلي الخطوات المحدّدة:
- نزِّل ملف
zipمن https://developer.android.com/ndk/downloads#stable-downloads. - استخرِج ملف
zipإلى الموقع الجغرافي المفضّل لديك (مثلاً/path/to/AndroidNDK/). - استبدِل
ANDROID_NDK_HOMEبمسار دليل NDK. يجب أن يكون شيئًا مثل:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/
ملاحظات: تأكَّد من أنّ ANDROID_NDK_HOME يشير إلى الدليل الذي يتضمّن README.md.
بعد إعداد البيئة، جرِّب إنشاء حزمة litert_lm_main الثنائية:
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
بالإضافة إلى ذلك، يجب إنشاء مكتبة واجهة برمجة التطبيقات dispatch لكي يتفاعل وقت تشغيل LiteRT-LM مع وحدة المعالجة العصبية:
bazel build --config=android_arm64 \
@litert//litert/vendors/qualcomm/dispatch:dispatch_api_so
التطوير في نظام التشغيل macOS
تتضمّن أدوات سطر الأوامر في Xcode أداة clang. تشغيل xcode-select --install إذا لم يسبق تثبيته
لتتمكّن من إنشاء ملف ثنائي لنظام التشغيل Android، عليك تثبيت الإصدار r28b من حزمة NDK أو إصدار أحدث من https://developer.android.com/ndk/downloads#stable-downloads. في ما يلي الخطوات المحدّدة:
- نزِّل ملف
.dmgمن https://developer.android.com/ndk/downloads#stable-downloads. - افتح الملف
.dmgوانقل الملفAndroidNDK*إلى الموقع الجغرافي المفضّل لديك (مثلاً/path/to/AndroidNDK/). - استبدِل
ANDROID_NDK_HOMEبمسار دليل NDK. يجب أن يكون شيئًا مثل:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/AndroidNDK*.app/Contents/NDK/
ملاحظات: تأكَّد من أنّ ANDROID_NDK_HOME يشير إلى الدليل الذي يتضمّن README.md.
بعد إعداد البيئة، جرِّب إنشاء حزمة litert_lm_main الثنائية:
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
بالإضافة إلى ذلك، يجب إنشاء مكتبة واجهة برمجة التطبيقات dispatch لكي يتفاعل وقت تشغيل LiteRT-LM مع وحدة المعالجة العصبية:
bazel build --config=android_arm64 \
@litert//litert/vendors/qualcomm/dispatch:dispatch_api_so
الخطوة 4: تشغيل النموذج على الجهاز
بعد إنشاء الملف الثنائي بنجاح، يمكننا الآن محاولة تشغيل النموذج على الجهاز. تأكَّد من أنّ لديك إذن الوصول للكتابة فيDEVICE_FOLDER:
لتشغيل الملف الثنائي على جهاز Android، علينا نقل بعض مواد العرض والملفات الثنائية. أولاً، اضبط DEVICE_FOLDER وتأكَّد من أنّ لديك إذن الوصول للكتابة
إليه (يمكنك عادةً وضع عناصر ضمن /data/local/tmp/):
export DEVICE_FOLDER=/data/local/tmp/
adb shell mkdir -p $DEVICE_FOLDER
export MODEL_PATH=<path to your downloaded .litertlm >
ادفع ملف .litertlm. ملاحظة: عليك إرسال مواد العرض هذه مرة واحدة فقط.
adb push $MODEL_PATH $DEVICE_FOLDER/model.litertlm
ادفع مكتبات QAIRT. يمكنك العثور عليها في المجلد الذي تم فك ضغطه في الخطوة 2 $QAIRT_ROOT/lib/aarch64-android/. يُرجى العِلم أنّ QAIRT_ROOT يجب أن يحتوي على رقم الإصدار، مثل 2.42.0.251225.
adb push $QAIRT_ROOT/lib/aarch64-android/libQnnHtp*Stub.so $DEVICE_FOLDER
adb push $QAIRT_ROOT/lib/aarch64-android/libQnnHtp.so $DEVICE_FOLDER
adb push $QAIRT_ROOT/lib/aarch64-android/libQnnSystem.so $DEVICE_FOLDER
adb push $QAIRT_ROOT/lib/aarch64-android/libQnnHtpPrepare.so $DEVICE_FOLDER
adb push $QAIRT_ROOT/lib/hexagon-*/unsigned/libQnnHtp*Skel.so $DEVICE_FOLDER
أرسِل واجهة برمجة التطبيقات dispatch والملف الثنائي الرئيسي الذي تم تجميعه في الخطوة 3.
adb push bazel-bin/external/litert/litert/vendors/qualcomm/*/*.so \
$DEVICE_FOLDER
adb push prebuilt/android_arm64/*.so $DEVICE_FOLDER
adb push bazel-bin/runtime/engine/litert_lm_main $DEVICE_FOLDER
يمكنك الآن تنفيذ الملف الثنائي.
adb shell LD_LIBRARY_PATH=$DEVICE_FOLDER ADSP_LIBRARY_PATH=$DEVICE_FOLDER \
$DEVICE_FOLDER/litert_lm_main \
--backend=npu \
--model_path=$DEVICE_FOLDER/model.litertlm
MediaTek NeuroPilot
في ما يلي خطوات تشغيل نماذج اللغات الكبيرة على وحدة المعالجة العصبية من MediaTek:
الخطوة 1: تنزيل نموذج .litertlm
تم تصميم وقت تشغيل LiteRT-LM للعمل مع النماذج بتنسيق .litertlm.
يمكنك العثور على الطُرز المتوافقة وتنزيلها في الجدول التالي.
| الطراز | منظومة على رقاقة (SoC) | التكميم | حجم الاستيعاب | حجم النموذج (ميغابايت) | رابط التنزيل |
|---|---|---|---|---|---|
| Gemma3-1B | MT6989 | 4 بت لكل قناة | 1280 | 985 | تنزيل |
| Gemma3-1B | MT6991 | 4 بت لكل قناة | 1280 | 986 | تنزيل |
عليك تنزيل النموذج المتوافق مع نظامك على الشريحة.
في ما يلي مثال على أمر يمكن أن يساعدك في الحصول على رابط Hugging Face الذي
يمكنه تنزيل النموذج الصحيح لنظامك على الشريحة في هاتفك (يُرجى العِلم أنّه عليك
تسجيل الدخول والموافقة على النموذج من أجل الحصول على إذن بتنزيل
الملف). يجب التأكّد من توفّر جهاز متصل يمكن الوصول إليه باستخدام adb.
SOC_MODEL=$(adb shell getprop ro.soc.model | tr '[:upper:]' '[:lower:]')
echo "https://huggingface.co/litert-community/Gemma3-1B-IT/blob/main/Gemma3-1B-IT_q4_ekv1280_${SOC_MODEL}.litertlm"
تأكَّد من إدراج $SOC_MODEL في جدول الأجهزة المتوافقة. لن يعمل الرابط الذي تم إنشاؤه مع الطُرز غير المتوافقة. تتم إضافة دعم لوحدات معالجة عصبية جديدة بانتظام، لذا يُرجى التحقّق مجددًا لاحقًا لمعرفة ما إذا كان جهازك متوافقًا.
الخطوة 2:إنشاء وقت التشغيل / المكتبات LiteRT-LM
التطوير في نظام التشغيل Linux
لتتمكّن من إنشاء ملف ثنائي لنظام التشغيل Android، عليك تثبيت الإصدار r28b من حزمة NDK أو إصدار أحدث من https://developer.android.com/ndk/downloads#stable-downloads. في ما يلي الخطوات المحدّدة:
- نزِّل ملف
zipمن https://developer.android.com/ndk/downloads#stable-downloads. - استخرِج ملف
zipإلى الموقع الجغرافي المفضّل لديك (مثلاً/path/to/AndroidNDK/). - استبدِل
ANDROID_NDK_HOMEبمسار دليل NDK. يجب أن يكون شيئًا مثل:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/
ملاحظات: تأكَّد من أنّ ANDROID_NDK_HOME يشير إلى الدليل الذي يتضمّن README.md.
بعد إعداد البيئة، جرِّب إنشاء حزمة litert_lm_main الثنائية:
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
بالإضافة إلى ذلك، يجب إنشاء مكتبة واجهة برمجة التطبيقات dispatch لكي يتفاعل وقت تشغيل LiteRT-LM مع وحدة المعالجة العصبية:
bazel build --config=android_arm64 \
@litert//litert/vendors/mediatek/dispatch:dispatch_api_so
التطوير في نظام التشغيل macOS
تتضمّن أدوات سطر الأوامر في Xcode أداة clang. تشغيل xcode-select --install إذا لم يسبق تثبيته
لتتمكّن من إنشاء ملف ثنائي لنظام التشغيل Android، عليك تثبيت الإصدار r28b من حزمة NDK أو إصدار أحدث من https://developer.android.com/ndk/downloads#stable-downloads. في ما يلي الخطوات المحدّدة:
- نزِّل ملف
.dmgمن https://developer.android.com/ndk/downloads#stable-downloads. - افتح الملف
.dmgوانقل الملفAndroidNDK*إلى الموقع الجغرافي المفضّل لديك (مثلاً/path/to/AndroidNDK/). - استبدِل
ANDROID_NDK_HOMEبمسار دليل NDK. يجب أن يكون شيئًا مثل:
export ANDROID_NDK_HOME=/path/to/AndroidNDK/AndroidNDK*.app/Contents/NDK/
ملاحظات: تأكَّد من أنّ ANDROID_NDK_HOME يشير إلى الدليل الذي يتضمّن README.md.
بعد إعداد البيئة، جرِّب إنشاء حزمة litert_lm_main الثنائية:
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
بالإضافة إلى ذلك، يجب إنشاء مكتبة واجهة برمجة التطبيقات dispatch لكي يتفاعل وقت تشغيل LiteRT-LM مع وحدة المعالجة العصبية:
bazel build --config=android_arm64 \
@litert//litert/vendors/mediatek/dispatch:dispatch_api_so
الخطوة 3: تشغيل النموذج على الجهاز
بعد إنشاء الملف الثنائي بنجاح، يمكننا الآن محاولة تشغيل النموذج على الجهاز. تأكَّد من أنّ لديك إذن الوصول للكتابة فيDEVICE_FOLDER:
لتشغيل الملف الثنائي على جهاز Android، علينا نقل بعض مواد العرض والملفات الثنائية. أولاً، اضبط DEVICE_FOLDER وتأكَّد من أنّ لديك إذن الوصول للكتابة
إليه (يمكنك عادةً وضع عناصر ضمن /data/local/tmp/):
export DEVICE_FOLDER=/data/local/tmp/
adb shell mkdir -p $DEVICE_FOLDER
export MODEL_PATH=<path to your downloaded .litertlm >
ادفع ملف .litertlm. ملاحظة: عليك إرسال مواد العرض هذه مرة واحدة فقط.
adb push $MODEL_PATH $DEVICE_FOLDER/model.litertlm
أرسِل واجهة برمجة التطبيقات dispatch والثنائي الرئيسي الذي تم تجميعه في الخطوة 2.
adb push bazel-bin/external/litert/litert/vendors/mediatek/*/*.so \
$DEVICE_FOLDER
adb push prebuilt/android_arm64/*.so $DEVICE_FOLDER
adb push bazel-bin/runtime/engine/litert_lm_main $DEVICE_FOLDER
يمكنك الآن تنفيذ الملف الثنائي.
adb shell LD_LIBRARY_PATH=$DEVICE_FOLDER \
$DEVICE_FOLDER/litert_lm_main \
--backend=npu \
--model_path=$DEVICE_FOLDER/model.litertlm