עוזר AI נייד על Llama: אינטגרציה במכשיר ובשרת
שילוב Llama באפליקציה ניידת מסתכם בשתי שאלות: להריץ את המודל מקומית או דרך שרת? הבחירה קובעת את כל הארכיטקטורה—מגודל הבינארי ועד לעלויות התמיכה. עברנו את הדרך הזו עם עשרות פרויקטים, מסוכני צ'אט רפואיים ועד ליועצים פיננסיים. להלן הפרטים הטכניים שיחסכו לכם חודשים של ניסויים.
איך לבחור בין Llama במכשיר לבין Llama בשרת?
במכשיר — המודל חי בזיכרון הטלפון, וההסקה עובדת ללא אינטרנט. אפשרי עבור Llama 3.2 1B ו-3B בקוונטיזציה INT4. Llama 3.2 3B INT4 תופס כ-2 GB RAM ובאייפון 15 Pro מספק 15–25 אסימונים/שנייה. זו האופציה לאפליקציות עם דרישות פרטיות מחמירות (נתונים רפואיים לעולם לא עוזבים את המכשיר) או לשימוש לא מקוון.
Llama בשרת — המודל רץ על שרת ה-GPU שלכם (או שכור), והלקוח הנייד מתקשר דרך API. מאפשר שימוש ב-Llama 3.3 70B או Llama 3.1 405B—מודלים בגודל מלא שאינם ניתנים להבחנה באיכותם מ-GPT-4. רוב הפרויקטים המסחריים בוחרים בגישת השרת: קל יותר לעדכן את המודל, ואין מגבלת גודל RAM.
למה במכשיר עדיין רלוונטי?
לתרחישים הדורשים פרטיות קריטית (עסקאות בנקאיות, המלצות רפואיות) או אינטרנט לא יציב, מודל מקומי הוא האופציה היחידה. יתרה מכך, אתם נמנעים מתשתית שרת ועלויות בקשות API. החיסכון בהוצאות השרת עם פריסה מקומית יכול להיות משמעותי. עם זאת, איכות התגובה נמוכה יותר בשל גודל המודל המוגבל. לדוגמה, באפליקציית ייעוץ רפואי לרופאים, פרסנו Llama 3.2 3B Q4_K_M על iPad. ההסקה רצה ב-12 אסימונים/שנייה דרך Core ML, מה שהבטיח שנתוני מטופלים לעולם לא עזבו את המכשיר וביטל עלויות שרת. הלקוח ראה הפחתה של פי 4 בהוצאות התשתית החודשיות בהשוואה לצינור ה-NLP הענני שלהם.
פרטי קוונטיזציה וביצועים
זמן ריצה במכשיר: llama.cpp, Core ML, ExecuTorch
llama.cpp הוא זמן הריצה הבוגר ביותר עבור מודלי GGUF. ב-iOS: מורכב כספריית C++, נקרא דרך קובץ גישור Objective-C++. באנדרואיד: דרך JNI. המורכבות טמונה בבנייה לארכיטקטורות שונות (arm64-v8a למודרניות, armeabi-v7a למיושנות). מאגר llama.cpp הרשמי מכיל סקריפטים מוכנים לבנייה.
// iOS — минимальная обёртка над llama.cpp
class LlamaContext {
private var context: OpaquePointer?
init(modelPath: String) {
var params = llama_context_default_params()
params.n_ctx = 4096
params.n_threads = 4 // меньше потоков — меньше нагрев
let model = llama_load_model_from_file(modelPath, llama_model_default_params())
context = llama_new_context_with_model(model, params)
}
func generate(prompt: String, maxTokens: Int = 256) -> AsyncStream<String> {
// tokenize → sample loop → detokenize
}
}Apple MLX / Core ML — אפל מספקת ממיר רשמי של Llama לפורמט Core ML. יתרון: מנוע העצבים (Neural Engine) מנוצל אוטומטית, וההסקה מהירה וקרירה יותר מאשר דרך CPU. מגבלה: iOS 17+ בלבד.
ExecuTorch — זמן הריצה של פייסבוק לנייד, תומך רשמית ב-Llama 3. בנייה מורכבת יותר אך אינטגרציה טובה יותר עם Android Neural Networks API.
השוואת זמני ריצה במכשיר
| זמן ריצה | iOS | אנדרואיד | ביצועים | מורכבות |
|---|---|---|---|---|
| llama.cpp | + | + | גבוהים | בינונית |
| Core ML | + (17+) | - | גבוהים מאוד | נמוכה |
| ExecuTorch | + | + | גבוהים | גבוהה |
קוונטיזציה: בחירת דיוק
| סוג | גודל (3B) | איכות | מהירות |
|---|---|---|---|
| FP16 | ~6 GB | קו בסיס | איטית |
| Q8_0 | ~3.3 GB | ≈FP16 | בינונית |
| Q4_K_M | ~2.0 GB | טובה | מהירה |
| Q2_K | ~1.3 GB | גרועה יותר באופן ניכר | מהירה מאוד |
עבור רוב המשימות הניידות, Q4_K_M הוא האיזון האופטימלי. ניתן לשקול Q2_K למכשירים עם 4 GB RAM.
Llama בשרת: Ollama ו-vLLM
לפריסת שרת — Ollama (פשטות) או vLLM (ביצועים). Ollama מספק API תואם OpenAI: // iOS — минимальная обёртка над llama.cpp class LlamaContext { private var context: OpaquePointer? init(modelPath: String) { var params = llama_context_default_params() params.n_ctx = 4096 params.n_threads = 4 // меньше потоков — меньше нагрев let model = llama_load_model_from_file(modelPath, llama_model_default_params()) context = llama_new_context_with_model(model, params) } func generate(prompt: String, maxTokens: Int = 256) -> AsyncStream<String> { // tokenize → sample loop → detokenize } } , פורמט הבקשה זהה ל-OpenAI Chat Completions. לקוח נייד שנכתב עבור OpenAI עובד עם Ollama ללא שינויים—רק צריך לשנות את כתובת ה-URL הבסיסית.
vLLM עדיף לייצור תחת עומס: אצווה רציפה (continuous batching), מקביליות טנזורית על מספר GPUs, ותפוקה גבוהה פי כמה מזו של Ollama.
כיוונון עדין: מתי ואיך
כיוונון עדין נחוץ כאשר Llama הבסיסי נכשל במשימות מתמחות: טרמינולוגיה רפואית, סגנון משפטי, מומחיות תעשייתית. LoRA/QLoRA היא הגישה הסטנדרטית לכיוונון עדין על GPU יחיד. מתאמים מאומנים (~50–100 MB) נטענים על גבי המודל הבסיסי. פריסה במכשיר מפחיתה עלויות תפעול עבור מחשוב ענן.
מה כלול בעבודה
- ניתוח דרישות ובחירת ארכיטקטורה: במכשיר או בשרת, בחירת מודל וקוונטיזציה.
- אינטגרציית זמן ריצה: בניית llama.cpp/ExecuTorch ל-iOS/אנדרואיד, מעטפת API.
- הקמת שרת: פריסת Ollama/vLLM, איזון עומסים, ניטור.
- בדיקות: מדדי השהיה, צריכת זיכרון, איכות תגובה.
- תיעוד והדרכה: איך לעדכן את המודל, לשנות פרמטרים.
- תמיכה לאחר השקה: אחריות אינטגרציה, ייעוץ לשינויים.
תהליך היישום: שלב אחר שלב
- ביקורת דרישות: מקרי שימוש, מכשירי יעד, תקציב.
- בחירת מודל וזמן ריצה.
- אינטגרציה ובנייה.
- פריסת חלק השרת (אם נדרש).
- בדיקת מדדים.
- תיעוד ומסירה.
- תמיכה באחריות.
הערכות זמן
Llama בשרת עם Ollama ולקוח נייד — 1–2 שבועות. במכשיר דרך llama.cpp עם בניות ל-iOS/אנדרואיד — 3–5 שבועות. כיוונון עדין + פריסה — מוערך בנפרד. קבלו ייעוץ לפרויקט שלכם. השאירו פנייה—ננתח את המשימה ונציע את הפתרון האופטימלי.







