פריסת AI במכשיר עם MLC: מדריך לנייד עבור iOS ואנדרואיד

כאשר משתמשים מאבדים גישה לאינטרנט, עוזר AI בתוך אפליקציה הופך לעיתים קרובות לתכונה חסרת תועלת. אנו משלבים את MLC LLM כך שמודלי שפה רצים ישירות על המכשיר—במהירות ובפרטיות. הצוות שלנו מספק את הפרויקט במפתח מלא, החל מהידור המודל ועד לפריסה ותמיכה מתמשכת.

פיתוח ותמיכה בכל סוגי היישומים הניידים:

יישומים ניידים למידע ובידור
אפליקציות חדשות, משחקים, מדריכים, קטלוגים מקוונים, אפליקציות מזג אוויר, אפליקציות כושר ובריאות, אפליקציות נסיעות, אפליקציות חינוכיות, רשתות חברתיות ומסנג'רים, חידונים, בלוגים ופודקאסטים, פורומים, אגרגטורים
יישומים ניידים למסחר אלקטרוני
חנויות מקוונות, אפליקציות B2B, מרקטפלייסים, בורסות מקוונות, שירותי קאשבק, בורסות, פלטפורמות דרופשיפינג, תוכניות נאמנות, משלוחי מזון ומוצרים, מערכות תשלום.
יישומים ניידים לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, ניהול פרויקטים, כלים לצוותי מכירות, ניהול פיננסי, ניהול ייצור, ניהול לוגיסטיקה ומשלוחים, ניהול משאבי אנוש, מערכות ניטור נתונים
יישומים ניידים לשירותים אלקטרוניים
פלטפורמות מודעות מסווגות, בתי ספר מקוונים, בתי קולנוע מקוונים, פלטפורמות שירות אלקטרוניות, פלטפורמות קאשבק, אירוח וידאו, פורטלים נושאיים, פלטפורמות הזמנות ותזמון מקוונות, פלטפורמות מסחר מקוונות

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

השירותים שאנו מציעים
מציג 1 מתוך 1כל 1734 השירותים
פריסת AI במכשיר עם MLC: מדריך לנייד עבור iOS ואנדרואיד
מורכב
~2-4 שבועות

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית מובייל עבור FEEDME
    פיתוח אפליקציית מובייל עבור FEEDME
    971
  • פיתוח אפליקציית מובייל עבור XOOMER
    פיתוח אפליקציית מובייל עבור XOOMER
    869
  • פיתוח אפליקציית מובייל עבור RHL
    פיתוח אפליקציית מובייל עבור RHL
    1289
  • פיתוח אפליקציית מובייל עבור ZIPPY
    פיתוח אפליקציית מובייל עבור ZIPPY
    1143
  • פיתוח אפליקציית מובייל עבור Affhome
    פיתוח אפליקציית מובייל עבור Affhome
    1076
  • פיתוח אפליקציית מובייל עבור חברת FLAVORS
    פיתוח אפליקציית מובייל עבור חברת FLAVORS
    677

פריסת AI על-גבי המכשיר עם MLC: מדריך לנייד עבור iOS ואנדרואיד

תארו לעצמכם: משתמש ברכבת התחתית פותח את האפליקציה שלכם ומקבל תשובה מפורטת מעוזר AI ללא אינטרנט. אין נתונים שנשלחים לשרת, אין השהיית רשת. זה אפשרי עם מסגרת MLC LLM — פרסנו מחסנית זו במספר פרויקטים מסחריים. לצוות שלנו יש ניסיון של למעלה מעשור בייצור בפיתוח נייד, עם יותר מ-40 אינטגרציות מוצלחות של ML על-גבי המכשיר.

מה זה MLC LLM ולמה זה חשוב

MLC LLM הוא פרויקט מצוות TVM שמהדר מודלי שפה ישירות ליעד חומרה ספציפי. בניגוד ל-llama.cpp, שרץ דרך backend אוניברסלי של C++, MLC מייצר קוד Metal מותאם לאייפון או Vulkan לאנדרואיד בזמן הידור המודל. זה מניב האצת מהירות ניכרת, במיוחד על Apple Silicon. המהדר מיישם איחוי קרנלים ואופטימיזציות זיכרון משותף כדי להפחית עסקאות זיכרון, מה שמגביר עוד יותר את התפוקה.

הבדלים עיקריים מ-llama.cpp

Llama.cpp מפרש את גרף GGUF בזמן ריצה, תוך שימוש ב-Metal דרך נתיב משותף. MLC LLM משתמש בהידור AOT (Ahead-Of-Time): סקריפט Python מייצר .metal/.vulkan shaders ספציפיים למודל ולמכשיר. המחיר הוא זמן הכנה ארוך יותר עבור shaders יעילים יותר.

באייפון 14 Pro עם Llama-3.2-3B Q4: llama.cpp מספק 10–14 t/s, בעוד MLC LLM משיג 16–22 t/s — עד 50% מהר יותר תיעוד רשמי של MLC LLM. הניסיון שלנו מאשר שיפור זה במכשירי Apple העדכניים. MLC LLM מספק האצה של פי 1.5–2 על פני llama.cpp במכשירי Apple Silicon.

הידור עבור iOS ואנדרואיד

ההידור הוא השלב המרכזי. אנו מחזיקים בסיס של למעלה מ-10 מודלים מהודרים מראש, אך אנו יכולים גם להדר עבור יעדים ספציפיים בעת הצורך.

# Установка mlc-llm
pip install mlc-llm

# Компиляция модели под iPhone (Metal)
mlc_llm convert_weight \
    ./Llama-3.2-3B-Instruct/ \
    --quantization q4f16_1 \
    --output mlc-llm-weights/

mlc_llm gen_config \
    ./Llama-3.2-3B-Instruct/ \
    --quantization q4f16_1 \
    --conv-template llama-3 \
    --output mlc-llm-config/

mlc_llm compile \
    mlc-llm-config/mlc-chat-config.json \
    --device iphone \
    --output dist/libs/Llama-3.2-3B-Instruct-q4f16_1-iphone.tar

התוצאה היא ארכיון עם # Установка mlc-llm pip install mlc-llm # Компиляция модели под iPhone (Metal) mlc_llm convert_weight \ ./Llama-3.2-3B-Instruct/ \ --quantization q4f16_1 \ --output mlc-llm-weights/ mlc_llm gen_config \ ./Llama-3.2-3B-Instruct/ \ --quantization q4f16_1 \ --conv-template llama-3 \ --output mlc-llm-config/ mlc_llm compile \ mlc-llm-config/mlc-chat-config.json \ --device iphone \ --output dist/libs/Llama-3.2-3B-Instruct-q4f16_1-iphone.tar ו-shaders של Metal. הטמיעו אותו בפרויקט Xcode שלכם. עבור אנדרואיד, השתמשו ב-.dylib:

mlc_llm compile \
    mlc-llm-config/mlc-chat-config.json \
    --device android \
    --output dist/libs/Llama-3.2-3B-Instruct-q4f16_1-android.tar

אינטגרציית SDK

MLC LLM מספק Swift Package רשמי (mlc-swift) ו-SDK של Kotlin. בנינו wrappers שמוסיפים טיפול בשגיאות וטעינה מחדש לאחר פינוי עקב לחץ זיכרון.

iOS באמצעות Swift

import MLCSwift

// Инициализация движка
let engine = MLCEngine()

// Загрузка модели (асинхронно)
try await engine.reload(
    modelPath: Bundle.main.path(forResource: "Llama-3.2-3B", ofType: nil)!,
    modelLib: "Llama-3.2-3B-Instruct-q4f16_1-iphone" // имя .dylib без расширения
)

// Стриминг через async/await
let messages: [ChatCompletionMessage] = [
    .init(role: .system, content: "You are a helpful assistant."),
    .init(role: .user, content: "Объясни что такое RAG в машинном обучении")
]

let request = ChatCompletionRequest(messages: messages, stream: true)

for await chunk in try await engine.chat.completions.create(request) {
    if let delta = chunk.choices.first?.delta.content {
        // Добавляем дельту к UI в реальном времени
        await MainActor.run {
            self.responseText += delta
        }
    }
}

ה-API משקף את ה-API של Chat Completions של OpenAI, מה שמפשט שימוש חוזר בקוד.

אנדרואיד באמצעות Kotlin

import ai.mlc.mlcllm.MLCEngine

class LLMViewModel(application: Application) : AndroidViewModel(application) {
    private val engine = MLCEngine()

    suspend fun loadModel(modelPath: String, modelLib: String) {
        engine.reload(modelPath, modelLib)
    }

    fun chat(userMessage: String): Flow<String> = flow {
        val messages = listOf(
            ChatCompletionMessage(
                role = MessageRole.user,
                content = userMessage
            )
        )
        val request = ChatCompletionRequest(messages = messages, stream = true)
        engine.chat.completions.create(request).collect { chunk ->
            chunk.choices.firstOrNull()?.delta?.content?.let { delta ->
                emit(delta)
            }
        }
    }.flowOn(Dispatchers.IO)
}

--device android מבטיח שהסקה לא חוסמת את ה-thread הראשי.

ניהול זיכרון והורדת מודל

רק מודל אחד בזיכרון בכל פעם הוא הכלל לנייד. פריקה:

await engine.unload() // Явная выгрузка освобождает Metal bufers и GPU memory
// После этого можно загрузить другую модель

ב-iOS, זיכרון Metal משותף עם אפליקציות אחרות. אם המשתמש עובר לאפליקציה כבדה, המערכת עלולה לפנות משאבי Metal — יש לטעון את המודל מחדש. אנו מטפלים בכך באמצעות מאזיני התראות.

משקלי המודל (כ-2 GB) אינם כלולים בחבילת האפליקציה (מגבלת App Store של 4 GB). הורדה בהפעלה ראשונה:

// Обработка вытеснения Metal ресурсов
NotificationCenter.default.addObserver(
    forName: .MLCEngineModelUnloaded, // или собственный механизм детекции
    object: nil,
    queue: .main
) { [weak self] _ in
    Task {
        try await self?.engine.reload(...)
    }
}

ההורדה אורכת בדרך כלל 1–3 דקות ב-Wi-Fi טוב. על ידי העברת הסקה על-גבי המכשיר, אתם מבטלים עלויות שרת: פריסה טיפוסית חוסכת $2,000–$5,000 לחודש בעמלות GPU בענן.

מתי להשתמש ב-MLC לעומת llama.cpp

קריטריון MLC LLM llama.cpp
מהירות מקסימלית במכשיר ספציפי כן, אופטימיזציית AOT לא, אינטרפרטציה
תמיכה בקוונטיזציות לא סטנדרטיות מוגבל (q4f16_1, q4f32_1 וכו') מגוון רחב (GGUF)
מכשירים ישנים (iPhone X, Android 10) דורש בדיקות לעיתים קרובות טוב יותר
דגימה מותאמת אישית בסיסי אפשרי דרך C++ API
קלות החלפת מודל דורש הידור מחדש רק קובץ GGUF חדש

בחרו ב-MLC LLM כאשר מהירות מקסימלית במכשיר ספציפי היא קריטית והיעדים ידועים. בחרו ב-llama.cpp לגמישות בקוונטיזציות ותמיכה במכשירים ישנים.

למה הצוות שלנו משיג תוצאות

הצוות שלנו: 10+ שנות ניסיון ב-ML נייד, 40+ פרויקטים מוצלחים. יישמנו מחסנית זו במספר פרויקטים מסחריים, מעוזר AI ללוגיסטיקה ועד מתרגם לא מקוון. החברה שלנו מספקת פתרונות ML ניידים מאז 2018, עם למעלה מ-40 פרויקטים מוצלחים. ייעלנו את זמן טעינת המודל מ-5 שניות ל-0.5 שניות באמצעות caching, הקמנו הידור אוטומטי מחדש, ויישמנו ניטור מקצה לקצה. תוצאה: פעולה יציבה על 97% מהמכשירים. אנו מספקים את כל תיעוד הבנייה והאינטגרציה ומכשירים את צוות הלקוח. אנו מבטיחים אינטגרציה חלקה ומספקים 6 חודשי תמיכה.

מה כלול

  • ניתוח מכשירי יעד ובחירת מודל
  • הידור MLC LLM עבור iOS ואנדרואיד
  • אינטגרציית Swift Package / Kotlin SDK
  • יישום ממשק צ'אט עם streaming
  • מערכת הורדת משקלים ו-caching
  • טיפול בפינוי זיכרון וטעינה מחדש
  • בדיקות עבור throttling תרמי ודליפות זיכרון
  • תיעוד והכשרת צוות

תקציב טיפוסי לאינטגרציה מתחיל ב-$5,000–$10,000 עבור פלטפורמה אחת; צרו קשר להצעת מחיר מלאה.

תהליך ולוח זמנים

  1. ניתוח: דיון במשימה, צי המכשירים, המודל הנדרש והפונקציונליות.
  2. עיצוב: הגדרת ארכיטקטורה, API וזרימת הורדה.
  3. הידור: בניית ספריות MLC עבור שני היעדים.
  4. אינטגרציה: הטמעת המנוע באפליקציה.
  5. בדיקות: אימות ביצועים, יציבות וייצור חום.
  6. פריסה: סיוע בפרסום בחנות.
היקף משך
פלטפורמה אחת, מודל אחד, צ'אט בסיסי 3–5 שבועות
שתי פלטפורמות, מספר מודלים, ניהול משקלים 7–11 שבועות

הערכות מדויקות ניתנות לאחר ראיון מקדים. צרו קשר כדי לדון בפרויקט שלכם.