הפעלת מודלי שפה גדולים ב-NPU באמצעות LiteRT-LM

יחידות לעיבוד עצבי (NPU) מציעות בלוקים מיוחדים של חומרה שעברו אופטימיזציה לעומסי עבודה של למידה עמוקה. הן זמינות יותר ויותר במערכות מודרניות על שבב (SoC), במיוחד בניידים. הביצועים הגבוהים שלהם הופכים אותם למתאימים מאוד להסקת מסקנות של LLM.

LiteRT-LM היא ספריית C++‎ שנועדה להפעיל ביעילות צינורות של מודלים של שפה במגוון רחב של מכשירים, מטלפונים ניידים ועד מערכות מוטמעות. הוא מספק למפתחים את הכלים ליצירה ולפריסה של תהליכי עבודה מתוחכמים של מודלים לשפה, ועכשיו עם שילוב חלק של NPU.

ספקי NPU

‫LiteRT-LM תומך בהרצת מודלים גדולים של שפה (LLM) באמצעות האצת NPU עם הספקים הבאים. בוחרים את ההוראות בהתאם לספק שרוצים לנסות:

התחלה מהירה

  1. פועלים לפי הדרישות המוקדמות כדי להגדיר את הסביבה ואת המאגר.
  2. מוודאים שהתוסף adb מותקן ומכשיר מחובר.
  3. אפשר לעיין במדריך למתחילים וב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.