LiteRT-LM היא ספרייה חוצת פלטפורמות שנועדה להפעיל ביעילות צינורות של מודלים של שפה במגוון רחב של מכשירים, מטלפונים ניידים ועד מערכות מוטמעות. הוא מספק למפתחים את הכלים ליצירה ולפריסה של תהליכי עבודה מתוחכמים של מודלים של שפה, ועכשיו עם שילוב חלק של NPU.
הפעלת מודלים גדולים של שפה (LLM) במעבד (CPU) ובמעבד גרפי (GPU)
הוראות מפורטות לפיתוח חוצה פלטפורמות ולהאצת חומרה של CPU/GPU זמינות במאגר LiteRT-LM ב-GitHub.
הפעלת מודלים גדולים של שפה (LLM) ב-NPU
יחידות עיבוד עצביות (NPU) מציעות בלוקים מיוחדים של חומרה שעברו אופטימיזציה לעומסי עבודה של למידה עמוקה. הן זמינות יותר ויותר במערכות מודרניות על שבב (SoC), במיוחד בניידים. הביצועים הגבוהים שלהם הופכים אותם למתאימים מאוד להסקת מסקנות של LLM.
ספקי NPU
LiteRT-LM תומך בהרצת מודלים גדולים של שפה (LLM) באמצעות האצת NPU עם הספקים הבאים. בוחרים את ההוראות בהתאם לספק שרוצים לנסות:
התחלה מהירה
- פועלים לפי הדרישות המוקדמות כדי להגדיר את הסביבה ואת המאגר.
- מוודאים שהתוסף
adbמותקן ומכשיר מחובר. - אפשר לעיין במאמר מדריך למתחילים וב
litert_lm_mainהדגמה של שורת הפקודה.
Qualcomm AI Engine Direct
שלב 1: הורדה של מודל .litertlm
מורידים קובץ .litertlm שמתאים ל-SoC (דוגמאות בהמשך). אפשר לשלוח שאילתה לגבי ה-SoC של המכשיר:
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 | קוונטיזציה | גודל ההקשר | גודל המודל (MB) | הורדה |
|---|---|---|---|---|---|
| Gemma3-1B | SM8750 | 4 ביט לכל ערוץ | 1280 | 658 | הורדה |
| Gemma3-1B | SM8650 | 4 ביט לכל ערוץ | 1280 | 658 | הורדה |
| Gemma3-1B | SM8550 | 4 ביט לכל ערוץ | 1280 | 657 | הורדה |
שלב 2: הורדה וחילוץ של ספריות QAIRT
מורידים את QAIRT SDK, מחלצים אותו ומגדירים את QAIRT_ROOT:
unzip <your_file.zip> -d ~/
QAIRT_ROOT=~/qairt/2.34.0.250424
שלב 3: בניית ספריות או זמן ריצה של LiteRT-LM
מתקינים את Android NDK r28b+ ויוצרים:
bazel build --config=android_arm64 //runtime/engine:litert_lm_main
bazel build --config=android_arm64 \
@litert//litert/vendors/qualcomm/dispatch:dispatch_api_so
שלב 4: מריצים את המודל במכשיר
מגדירים את נתיב המכשיר ושולחים נכסים:
export DEVICE_FOLDER=/data/local/tmp/
adb shell mkdir -p $DEVICE_FOLDER
export MODEL_PATH=<path-to-model.litertlm>
adb push $MODEL_PATH $DEVICE_FOLDER/model.litertlm
adb push $QAIRT_ROOT/lib/aarch64-android/* $DEVICE_FOLDER/
adb push bazel-bin/runtime/engine/litert_lm_main $DEVICE_FOLDER/
adb shell chmod +x $DEVICE_FOLDER/litert_lm_main
הפעלה:
adb shell "cd $DEVICE_FOLDER && \
QAIRT_ROOT=$DEVICE_FOLDER \
./litert_lm_main --model=model.litertlm \
--prompt='Explain the history of LiteRT in 3 bullet points' \
--device=qualcomm_npu --rounds=1"
MediaTek NeuroPilot
סקירה כללית של השלבים
התהליך ב-MediaTek דומה לזה ב-Qualcomm: משתמשים ב-.litertlm שנוצר עבור ה-SoC, כוללים ספריות זמן ריצה של NeuroPilot, יוצרים litert_lm_main, מעבירים נכסים ומריצים עם --device=mediatek_npu.