פריסת מודל Gemma 270m שעבר כוונון עדין באמצעות Google AI Edge stack

במדריך הזה נסביר איך לפרוס מודל Gemma מותאם אישית באפליקציית דוגמה ל-Android.

במדריך הזה נסביר:

  1. התחלה עם מודל שעבר כוונון עדין
  2. המרת המודל שעבר כוונון באמצעות ספריית AI Edge Torch
    1. הפעולה הזו תמיר את נקודת הבדיקה של HuggingFace לקובץ ‎ .litertlm
  3. הערכת האיכות של המודל שעבר כוונון עדין
  4. מריצים את פקודות ה-adb כדי להעביר את המודל המותאם אישית למכשיר בדיקה
    1. הפעולה הזו תדחוף את המודל בפורמט ‎ .litertlm למכשיר Android לצורך בדיקה מקומית
  5. מריצים את אפליקציית הדוגמה Pirate Gemma
    1. הפעולה הזו תשתמש בספריית Kotlin של LiteRT-LM כדי להריץ הסקה במודל שעבר כוונון עדין באפליקציית Android לדוגמה

שלב 1: מתחילים עם מודל שעבר כוונון עדין

במדריך הזה נתחיל עם מודל שעבר כוונון עדין. כדי להראות הבדל ברור בין מודל בסיסי למודל שעבר התאמה עדינה, לקחנו מודל בסיסי של Gemma270m והתאמנו אותו לדבר כמו פיראט.

אפשר למצוא את מודל Pirate Gemma שעבר כוונון עדין מראש בכתובת https://huggingface.co/erintwalsh/pirate-gemma

מידע נוסף על כוונון עדין של מודל זמין במדריכים Gemma Cookbook ו-Unsloth.

שלב 2: ממירים ומריצים את המודל המותאם אישית בשורת הפקודה

אחרי שמפרסמים מודל מותאם אישית ב-HuggingFace, אפשר להשתמש בספריית AI Edge Torch כדי להוריד את המודל ולהמיר אותו לפורמט .litertlm.

דרישות מוקדמות

חשוב לוודא שuv tool ו-Python 3.11 ואילך מותקנים במכשיר.

המרת מודל

uv tool install litert-torch-nightly

litert-torch export_hf \
  --model=[YOUR-HF-USERNAME]/pirate-gemma \
  --output_dir=/tmp/pirate-gemma \
  --externalize_embedder

הפעלת המודל באופן מקומי

uv tool install litert-lm

litert-lm run  \
  /tmp/pirate-gemma/model.litertlm \
  --prompt="Where is the nearest buried treasure?"

שלב 3: הערכת איכות המודל

הערכת האיכות של הכוונון העדין

אחרי שהמודל יפעל באופן מקומי, תוכלו להשתמש בכלי ה-CLI ‏AI Edge evaluation כדי לנתח את איכות המודל LiteRT-LM של הכוונון העדין. הכלי הזה מציע אימות מובנה של שוויון באיכות אחרי ההמרה בין מודל HF המקורי לבין מודל LiteRT-LM שהומר עם מערכי נתונים ציבוריים. בנוסף למערכי נתונים ציבוריים, אתם יכולים ליצור משימות הערכה בהתאמה אישית באמצעות נתונים משלכם ומדדים ספציפיים. בדוגמה הזו למשימה בהתאמה אישית אפשר לראות איך להעריך את המודל הזה שעבר כוונון עדין באמצעות LLM כשופט.

uv tool install ai-edge-eval

GEMINI_API_KEY="your_actual_api_key_here"
ai_edge_eval \
  --framework custom \
  --runner litert-lm \
  --model-path /path/to/your/model.litertlm \
  --custom-tasks-file pirate_gemma_custom_task.py \
  --tasks pirate_gemma_eval \
  --output-dir /tmp/results

שלב 4: מעבירים את המודל המקומי למכשיר הבדיקה

משתמשים בהוראות adb האלה כדי להעביר את המודל שהרצתם למכשיר Android הפיזי.

adb shell rm -r /data/local/tmp/llm/ # Remove any previously loaded models

adb shell mkdir -p /data/local/tmp/llm/

adb push /tmp/pirate-gemma/model.litertlm  /data/local/tmp/llm/pirate-gemma.litertlm

שלב 5: מריצים הסקה במודל המותאם אישית באמצעות אפליקציית הדוגמה Captain Gemma

Captain Gemma היא אפליקציה שמדגימה את הממשק עם המודל במכשיר. אפשר למצוא אותו ב-GitHub ולשכפל את המאגר כדי להריץ אותו ב-Android Studio.

פותחים את אפליקציית הדוגמה Captain Gemma ומריצים אותה במכשיר. זו אפליקציה שמשתמשת ברכיבי Android Compose כדי להדגים הפעלת הסקה במודל שעבר שיפור במכשיר Android. האפליקציה מקבלת קלט טקסט ממשתמש, ומחזירה את החוכמה של פיראט ממודל Gemma שעבר כוונון עדין.

מריצים את האפליקציה במכשיר הבדיקה שאליו העברתם את קובץ ה-.litertlm. מזינים שאילתה ורואים את הפלט של המודל בתיבת הדיבור הלבנה.

המסך הראשי של אפליקציית הדוגמה

קוד לדוגמה

בדוגמת הקוד של Captain Gemma אפשר לראות דוגמאות להגדרת המודל ולהפעלת הסקה באמצעות ממשקי LiteRT-LM API.

שלב 6: פריסת המודל

אחרי שמסיימים לבדוק באופן מקומי את המודל המותאם אישית ומוכנים לפריסה, יש אפשרויות לאירוח המודל, כמו:

  • אפשר להעלות את קובץ .litertlm למאגר המודלים של HuggingFace שיצרתם קודם, ולהוריד אותו באפליקציה באמצעות ממשקי ה-API של HuggingFace.
  • אתם יכולים להשתמש בשירות אירוח כמו Firebase, שמספק ממשקי API לאפליקציה כדי לאחזר את כתובת ה-URL של המודל ולהוריד אותו ל-Android או ל-iOS.