LiteRT Torch Generative API היא ספרייה עם ביצועים גבוהים שנועדה ליצירה ולהמרה של מודלים מבוססי-טרנספורמר של PyTorch לפורמט LiteRT/LiteRT-LM. כך מפתחים יכולים לפרוס בקלות מודלים של AI גנרטיבי, ובמיוחד מודלים גדולים של שפה (LLM), כדי ליצור טקסט ותמונות במכשיר.
Torch Generative API תומך בהמרת מודלים עבור CPU, GPU ו-NPU. אם משלבים את Torch Generative API עם LiteRT-LM, אפשר ליצור אפליקציות רספונסיביות שמתמקדות בפרטיות ומריצות מודלים גנרטיביים באופן מלא במכשיר.
המרה מספריית Hugging Face Transformer
תוסף Hugging Face Export של LiteRT Torch מספק דרך פשוטה להמיר מודלים של AI גנרטיבי ישירות מספריית הטרנספורמרים של Hugging Face לפורמט LiteRT-LM. בהשוואה ל-LiteRT Torch Generative APIs שמספקים לכם אבני בניין של pytorch כדי לבנות ולבצע אופטימיזציה של מודלים בהתאמה אישית, הכלי הזה מטפל במורכבויות של הורדת משקלים, תרגום ארכיטקטורות של מודלים של PyTorch והחלת טכניקות אופטימיזציה כמו אופטימיזציות של גרפים וכימות בתהליך עבודה יחיד. הפלט הוא קובץ .litertlm שעבר אופטימיזציה להסקת מסקנות במכשיר במעבד, במעבד גרפי וב-NPU באמצעות סביבת ההרצה LiteRT-LM.
דרישות מוקדמות
לפני שמשתמשים בתוסף לייצוא, צריך לוודא שההגדרה הבאה בוצעה:
- מתקינים את חבילת Python של LiteRT Torch. תוסף הייצוא של Hugging Face מוטמע ישירות בחבילה
litert-torch. - (אופציונלי) כדי לבצע קומפילציה של NPU, מתקינים את התוספים של LiteRT NPU SDK באמצעות
pip install ai-edge-litert[npu-sdk]. פרטים נוספים זמינים במאמר LiteRT NPU AOT Compilation Colab. - סביבת Hugging Face מוגדרת אם אתם מתכוונים לטעון ישירות מ-Hugging Face Hub. הכלי export_hf משתמש במנגנוני האימות הרגילים של transformers, כמו
HF_TOKENאו CLI. לדוגמה:
כדי להוריד מודלים עם גישה מוגבלת (כמו Gemma או Llama), צריך לבצע אימות ב-Hugging Face באמצעות CLI או משתנה סביבה:
# Set your Hugging Face token as an environment variable
export HF_TOKEN="your_hugging_face_token"
# Or use the Hugging Face CLI login
hf auth login
שימוש בסיסי
אפשר להשתמש ב-export_hf באמצעות שורת הפקודה או API בשפת Python. הכלי יוריד את המודל מ-Hugging Face באופן אוטומטי או יטען את המודל מנתיב מקומי שצוין, יבצע מעקב אחריו, יחיל עליו אופטימיזציות שמוגדרות כברירת מחדל וימיר אותו לקובץ .litertlm שתואם להסקת מסקנות במעבד ובמעבד גרפי.
ממשק שורת הפקודה (CLI)
משתמשים בפקודה litert-torch export_hf. צריך לספק את מזהה המודל של Hugging Face ואת ספריית הפלט שנבחרה.
litert-torch export_hf \
--model=google/gemma-3-270m-it \
--output_dir=/tmp/gemma3-270m-it-litertlm
כדי לייצא מודל מקומי או מודל בהתאמה אישית, אפשר גם להעביר את הנתיב לנקודת הבדיקה של safetensor:
litert-torch export_hf \
--model=/path/to/safetensor/dir \
--output_dir=/my_custom_litertlm
Python API
כדי לשלב את המודול בסקריפטים או ב-notebooks של Python, מייבאים את המודול export מ-litert_torch.generative.export_hf.
from litert_torch.generative.export_hf import export
export.export(
model='google/gemma-3-270m-it',
output_dir='/tmp/gemma3-270m-it-litertlm',
)
פריסה במכשיר באמצעות LiteRT-LM
אחרי שמייצאים את המודל לקובץ .litertlm, אפשר לפרוס אותו ישירות במכשיר באמצעות LiteRT-LM לביצועים גבוהים גם ב-CPU וגם ב-GPU. פרטים נוספים זמינים במאמר בנושא איך משתמשים ב-LiteRT-LM API. למידע על האצת NPU, אפשר לעיין במדריך לקומפילציה של NPU AOT.
ארכיטקטורות נתמכות
הכלי export_hf מאמת את הארכיטקטורות הבאות של מודלים של טרנספורמרים.
כדי לבדוק את זה, צריך לעיין בשדה model_type ב-config.json.
- Gemma 3 (
Gemma3ForCausalLM) - Gemma 3n (
Gemma3nForCausalLM) - Gemma 4 (
Gemma4ForCausalLM) - Llama (
LlamaForCausalLM) - Mistral (
MistralForCausalLM) - Qwen 2/2.5 (
Qwen2ForCausalLM) - Qwen 3 (
Qwen3ForCausalLM) - SmolLM 3 (
SmolLM3ForCausalLM)
הגדרות מתקדמות
אתם יכולים לבדוק את האפשרויות המתקדמות שזמינות בדגלי התוסף, אבל הנה כמה אפשרויות נפוצות שתוכלו לנסות.
מודלים של שפה לראייה ממוחשבת
במודלים נתמכים, אפשר להגדיר את --task=image_text_to_text ואת --export_vision_encoder כדי לטעון ולייצא את מודל מקודד הראייה.
ארכיטקטורות נתמכות:
- Gemma 3 (
Gemma3ForConditionalGeneration) - Gemma 4 (
Gemma4ForConditionalGeneration)
הגדרת קוונטיזציה
מודלים של AI גנרטיבי הם לרוב גדולים מדי כדי להפעיל אותם ביעילות במכשירי קצה בלי לבצע אופטימיזציה. כברירת מחדל, export_hf מחיל את dynamic_wi8_afp32
המתכון לקוונטיזציה באמצעות AI Edge Quantizer,
שמבצע קוונטיזציה של משקלים ל-INT8 לכל ערוץ, תוך שמירה על הפעלות ב-FP32.
כדי לשנות את התנהגות ברירת המחדל הזו, אפשר להשתמש בדגל --quantization_recipe (או בפרמטר quantization_recipe ב-Python).
אפשר לספק את השם של מתכון מובנה מתוך AI Edge Quantizer או לציין את הנתיב למתכון JSON בהתאמה אישית.
דוגמה:
litert-torch export_hf \
--model=google/gemma-3-270m-it \
--output_dir=/tmp/gemma3-270m-it-litertlm \
--quantization_recipe=/path/to/my/quantization_recipe.json
שינוי של תבנית Jinja
יכול להיות שתבנית ה-Jinja שמגיעה עם מודל הטרנספורמרים לא תהיה תואמת ל-LiteRT-LM (למשל, מודלים של Gemma4). במקרה כזה, אפשר להגדיר את הדגל use_jinja_template לערך False או להשתמש באפשרות jinja_chat_template_override כדי לבטל את התבנית.
דוגמה:
litert-torch export_hf \
--model=google/gemma-4-E2B-it \
--output_dir=/tmp/gemma4_2b_litertlm \
--externalize_embedder \
--jinja_chat_template_override=litert-community/gemma-4-E2B-it-litert-lm
הידור AOT של NPU
בנוסף ל-CPU ול-GPU, אפשר גם לטרגט מאיצי NPU נתמכים כשמייצאים את המודלים, על ידי ציון האפשרויות הספציפיות ל-NPU.
Google Tensor
דרישות מוקדמות: כדי להגדיר את סביבת הפיתוח, פועלים לפי ההוראות בדף Google Tensor SDK.
כדי לייצא מודלים מסוג LLM שמיועדים ל-TPU של Google Tensor, צריך לפעול לפי הדוגמה של הדגלים הנוספים שנדרשים לקומפילציה של TPU.
דוגמה:
litert-torch export-hf \
--model=google/gemma-3-270m-it \
--output_dir=/tmp/gemma3-270m-google-tensor-g5 \
--split_cache \
--externalize_embedder \
--prefill_lengths=128, \
--cache_length=1280 \
--quantization_recipe="weight_only_wi8_afp32"
--aot_backend=GOOGLE \
--aot_soc_model=Tensor_G5 \
--aot_compilation_config_dict='{"google_tensor_enable_large_model_support": True}'
מידע נוסף זמין במאמר בנושא קומפילציה של מודלים באמצעות Google Tensor SDK.
Qualcomm AI Runtime:
דרישות מוקדמות: פועלים לפי ההוראות לשילוב של LiteRT Qualcomm כדי להגדיר את ה-SDK ולבדוק אילו מכשירים נתמכים.
דוגמה:
litert-torch export-hf \
--model=google/gemma-3-270m-it \
--output_dir=/tmp/gemma3-270m-google-tensor-g5 \
--split_cache \
--externalize_embedder \
--quantization_recipe='' \
--aot_backend=qualcomm \
--aot_soc_model=SM8750
MediaTek NeuroPilot:
דרישות מוקדמות: פועלים לפי ההוראות לשילוב LiteRT MediaTek כדי להגדיר את ה-SDK ולבדוק אילו מכשירים נתמכים.
דוגמה:
litert-torch export-hf \
--model=google/gemma-3-270m-it \
--output_dir=/tmp/gemma3-270m-google-tensor-g5 \
--split_cache \
--externalize_embedder \
--aot_backend=mediatek \
--aot_soc_model=MT8189
Intel OpenVINO
דרישות מוקדמות: פועלים לפי ההוראות להגדרת LiteRT Intel OpenVINO SDK ולרשימת המכשירים הנתמכים.
דוגמה:
litert-torch export-hf \
--model=google/gemma-3-270m-it \
--output_dir=/tmp/gemma3-270m-google-tensor-g5 \
--split_cache \
--externalize_embedder \
--aot_backend=intel_openvino \
--aot_soc_model=PTL
כתיבה מחדש והמרה באמצעות LiteRT Torch Generative API
LiteRT Torch Generative API מספק גם אבני בניין ליצירה ולאופטימיזציה של מודלים מותאמים אישית של PyTorch, כולל, בין היתר, שכבות נורמליזציה, מנגנוני תשומת לב ומודולים בסיסיים אחרים. אם המודל שלכם לא נתמך על ידי התוסף LiteRT Torch Hugging Face Export, אתם יכולים ליצור מודלים משלכם שיהיו תואמים ל-LiteRT ול-LiteRT-LM.
יש דוגמאות למודלים, כולל מודלים של LLM, מודלים של דיפוזיה ומודלים של ASR. אתם יכולים לעיין בהם ולהטמיע מודל משלכם.
מידע נוסף מופיע במאגר GitHub של Generative Torch API.