בניית עוזר AI מקומי במכשיר לאפליקציות מובייל
יומנים רפואיים, מסמכים ארגוניים, הערות אישיות—הנתונים לא חייבים לעזוב את המכשיר. LLM במכשיר הוא פתרון ארכיטקטוני שמבטיח פרטיות. יישמנו פרויקטים כאלה עבור לקוחות ב-MedTech וב-FinTech: העוזר המקומי עובד ללא אינטרנט, תוך שימוש רק במשאבי החישוב של הסמארטפון. לצוות שלנו יש 5 שנות ניסיון בפיתוח מובייל ומעל 30 פרויקטים עם AI במכשיר.
מכשירי דגל מודרניים יכולים להריץ מודלים של 3B בקוונטיזציית INT4 ב-15–30 טוקנים/שנייה—מספיק לעוזר שיחתי. עם זאת, בחירת המודל והרצה משפיעה באופן קריטי על ביצועים ותאימות.
בחירת המודל והרצה הנכונים ל-AI במכשיר
אפל מציעה שתי דרכים ל-iOS. Core ML הוא יציב, תומך ב-iOS 16+, ומשתמש אוטומטית במנוע העצבי. המודל מומר דרך coremltools מ-PyTorch/GGUF. לאחר ההמרה, Llama 3.2 3B ב-INT4 הוא בערך 1.8 GB.
import CoreML
class OnDeviceLLM {
private let model: MLModel
init() throws {
let config = MLModelConfiguration()
config.computeUnits = .all // CPU + GPU + Neural Engine
model = try LlamaModel(configuration: config).model
}
func generate(prompt: String) -> AsyncStream<String> {
AsyncStream { continuation in
Task.detached(priority: .userInitiated) {
// tokenize → autoregressive decode → yield tokens
let tokens = self.tokenize(prompt)
for _ in 0..<512 {
let nextToken = self.model.predictNextToken(tokens)
continuation.yield(self.detokenize(nextToken))
if nextToken == self.eosTokenId {
break
}
}
continuation.finish()
}
}
}
}Apple MLX (מסגרת Swift, iOS 16+) מציעה API נוח יותר אך דורשת iOS 16+ ועובדת הכי טוב במכשירים עם זיכרון אחיד. מודלים רשמיים שהומרו על ידי אפל זמינים ב-Hugging Face.
llama.cpp מספקת את המבחר הרחב ביותר של מודלים בפורמט GGUF, נתמכת באופן פעיל על ידי הקהילה. אינטגרציה דרך קובץ גישור C++ מורכבת יותר מ-Core ML אך נותנת גישה לכל מודל GGUF.
באנדרואיד יש יותר אפשרויות ופחות תקן יחיד. MediaPipe LLM Inference API (גוגל) הוא הפתרון הבוגר ביותר לאנדרואיד. הוא תומך ב-Gemma 2B/7B, Phi-2, Llama 2, ExportedModels בפורמט TFLite. אינטגרציה דרך המחלקה import CoreML class OnDeviceLLM { private let model: MLModel init() throws { let config = MLModelConfiguration() config.computeUnits = .all // CPU + GPU + Neural Engine model = try LlamaModel(configuration: config).model } func generate(prompt: String) -> AsyncStream<String> { AsyncStream { continuation in Task.detached(priority: .userInitiated) { // tokenize → autoregressive decode → yield tokens let tokens = self.tokenize(prompt) for _ in 0..<512 { let nextToken = self.model.predictNextToken(tokens) continuation.yield(self.detokenize(nextToken)) if nextToken == self.eosTokenId { break } } continuation.finish() } } } } :
val options = LlmInference.LlmInferenceOptions.builder()
.setModelPath("/data/local/tmp/gemma-2b-it-gpu-int4.bin")
.setMaxTokens(1024)
.setResultListener { partialResult, done ->
runOnUiThread {
appendText(partialResult)
}
}
.build()
val llmInference = LlmInference.createFromOptions(context, options)
llmInference.generateResponseAsync(prompt)TFLite עם רץ LLM מותאם אישית הוא גמיש יותר אך דורש יותר עבודת אינטגרציה.
ExecuTorch (Meta) הוא הרץ הרשמי ל-Llama באנדרואיד, תומך ב-Llama 3.x ישירות ללא המרה. הוא מתקמפל דרך LlmInference, שאינו טריוויאלי להגדרה בפרויקט Gradle.
| מכשיר | RAM | מודל מומלץ | טוקנים/שנייה |
|---|---|---|---|
| iPhone 15 Pro / 16 | 8 GB | Llama 3.2 3B Q4_K_M | 20–30 |
| iPad Pro M4 | 16 GB | Llama 3.1 8B Q4_K_M | 15–25 |
| Samsung S24 Ultra | 12 GB | Phi-3 Mini Q4 | 25–35 |
| אנדרואיד תקציבי | 4–6 GB | Phi-3 Mini Q2 / Gemma 2B | 5–15 |
| מכשירים ישנים | 3 GB | לא מומלץ | — |
ניסיון להריץ מודל 7B+ בטלפון עם 4 GB RAM מבטיח קריסת OOM. אנחנו עוזרים לבחור את המודל האופטימלי למכשיר ולתרחיש שלך. על ידי מעבר ל-AI במכשיר, לקוחות חוסכים עד 80% בעלויות תשתית שרת ומחשוב ענן. לדוגמה, לקוח אחד הפחית את חשבון הענן החודשי שלו מ-$3,000 ל-$600—חיסכון של $28,800 בשנה.
השוואת רצי זמן ל-AI במכשיר
| רץ | פלטפורמה | יתרונות | מגבלות |
|---|---|---|---|
| Core ML | iOS | יציבות, תמיכה במנוע עצבי | iOS בלבד, המרה דרך coremltools |
| MLX | iOS | API פשוט, אב-טיפוס מהיר | iOS 16+, דורש זיכרון אחיד |
| MediaPipe LLM | אנדרואיד | API מוכן, תמיכת גוגל | מבחר מודלים מוגבל |
| ExecuTorch | אנדרואיד | תמיכה מקורית ב-Llama, גודל קטן | בנייה מורכבת, תיעוד בפיתוח |
| llama.cpp | iOS ואנדרואיד | מבחר מודלים מקסימלי | אינטגרציה מורכבת, API ברמה נמוכה |
איך אנחנו משלבים עוזר AI: תוכנית שלב-אחר-שלב
- ניתוח מכשירי יעד—קביעת מפרט מינימלי (RAM, ערכת שבבים, גרסת OS) ובחירת מודל עם יחס איכות/ביצועים אופטימלי.
- המרה וקוונטיזציה—שימוש ב-INT4 (Q4_K_M) לאיזון גודל/דיוק. למכשירים ישנים—Q2_K. המרה ל-Core ML / MediaPipe / ExecuTorch.
- פיתוח UI וארכיטקטורה—יצירת מסך הורדת מודל עם התקדמות, ממשק צ'אט עם סטרימינג של טוקנים, הגדרת Deep Link להפעלת העוזר.
- אינטגרציית רץ ובדיקות—חיבור הרץ שנבחר, כתיבת wrapper לייצור וטוקניזציה. בדיקות על 5+ מכשירים פיזיים.
- אופטימיזציה תרמית—יישום ניטור של
val options = LlmInference.LlmInferenceOptions.builder() .setModelPath("/data/local/tmp/gemma-2b-it-gpu-int4.bin") .setMaxTokens(1024) .setResultListener { partialResult, done -> runOnUiThread { appendText(partialResult) } } .build() val llmInference = LlmInference.createFromOptions(context, options) llmInference.generateResponseAsync(prompt)(iOS) אוbuck2(אנדרואיד) והפחתת עומס אדפטיבית. - פריסה וניטור—הגדרת עדכון מודל מרחוק דרך manifest, הוספת אנליטיקות שימוש ודוחות קריסות.
החשיבות של אסטרטגיית טעינת מודל נכונה
לא ניתן לצרף את המודל לאפליקציה—1.5–3 GB יובילו מיד לדחייה ב-App Store ויפחידו משתמשים עם גודל APK גדול. הגישה הנכונה: השקה ראשונה → הצעה להוריד את המודל → הורדה ברקע עם פס התקדמות → אימות checksum.
ב-iOS: ProcessInfo.thermalState עם PowerManager.thermalStatus—ההורדה נמשכת כשהאפליקציה עוברת לרקע. שמור את הקובץ ב-URLSession.downloadTask (לא ב-backgroundConfiguration—ייתכן שהמערכת תמחק אותו כשהשטח נמוך). באנדרואיד: Application Support או Caches עם אילוץ DownloadManager—המשתמש לא ישתמש בתעבורה סלולרית.
עדכון מודל: השרת מפרסם manifest עם הגרסה הנוכחית וסכום SHA-256. בהשקת האפליקציה, בדוק את ה-manifest; אם הגרסה השתנתה, הצע עדכון.
החשיבות של ניהול מצב תרמי
הסקה על המנוע העצבי/GPU מחממת את המכשיר. לייצור ארוך (>200 טוקנים), נטר את המצב התרמי דרך WorkManager (iOS)—ב-NetworkType.UNMETERED, הפחת את ProcessInfo.thermalState או עבור זמנית להסקה מבוססת CPU בלבד. באנדרואיד—.serious. צריכת סוללה: מודל 3B ב-iPhone 15 Pro משתמש בכ-5–8% סוללה לכל 100 בקשות. זה פחות משידור וידאו, כך שאין צורך באזהרות למשתמש. בנוסף, טכניקות כמו קיזוז מפתח-ערך ופענוח ספקולטיבי יכולות לשפר את מהירות ההסקה עד פי 3 בהשוואה לעוזרי ענן נאיביים, תוך הפחתת זמן השהייה וצריכת החשמל.
מה כלול באינטגרציית עוזר AI
- ניתוח מכשירי יעד ובחירת מודל לפי המפרט שלהם.
- המרת מודל לפורמטים Core ML / TFLite / MediaPipe.
- פיתוח UI להורדת מודל ואינטראקציה.
- אינטגרציית סטרימינג של טוקנים וניהול זיכרון.
- ניטור תרמי והפחתת עומס אדפטיבית.
- בדיקות על מכשירים פיזיים (5+ דגמים פופולריים).
- תיעוד תחזוקה והדרכת צוות.
לוחות זמנים משוערים
עוזר בסיסי במכשיר (פלטפורמה אחת, Core ML או MediaPipe)—4–5 שבועות. חוצה פלטפורמות עם ניהול הורדות, עדכונים וניטור תרמי—8–12 שבועות. העלות מחושבת בנפרד לפי מורכבות וביצועים נדרשים. בקש ייעוץ—נכין תוכנית והערכה.
תיעוד Core ML ראה תיעוד רשמי למידע נוסף על Core ML.
צור קשר כדי לדון בפרויקט שלך. אנחנו מבטיחים פעולה יציבה במכשירים עם 4 GB RAM ומעלה.







