AI та ML в мобільних додатках: CoreML, TFLite та on-device моделі
Різниця між «додатком з AI» та «додатком, який звертається до OpenAI» — принципова. Перший працює без інтернету, не відправляє дані користувача на сторонні сервери і відповідає за 50 мілісекунд. Другий залежить від затримки мережі та тарифних планів. Правильний вибір визначається на етапі архітектури.
On-device інференс: коли та як
CoreML — нативний фреймворк Apple для запуску ML-моделей на пристрої. Підтримує Neural Engine (починаючи з A11 Bionic), GPU та CPU як fallback. Моделі конвертуються в формат .mlmodel через coremltools з PyTorch, ONNX або TensorFlow. Конвертація — не завжди тривіальна: кастомні шари потребують написання MLCustomLayer, а квантизація до INT8 іноді помітно знижує точність на специфічних даних.
TensorFlow Lite — кроссплатформна альтернатива для Android та Flutter. На Android використовує NNAPI (Neural Networks API) як апаратне прискорення — з Android 10 NNAPI стабільніше, до цього краще явно використовувати GPU delegate через GpuDelegate. Типова помилка: модель навчена на нормалізованих даних у діапазоні [0,1], а в додатку на вхід подаються [0,255] — інференс працює, але з беззмістовними результатами без помилки.
Для задач класифікації зображень, детектування об'єктів та сегментації є готові оптимізовані моделі. YOLOv8 у форматі CoreML запускає детектування кадру 640×640 за 15-20 мс на iPhone 14 Neural Engine. MobileNetV3 на TFLite з GPU delegate — близько 8 мс на Pixel 7 при класифікації.
On-device LLM: phi-3, Gemma та що з цього виходить
Запуск невеликих мовних моделей на пристрої став реальністю у 2024 році. Apple Intelligence використовує власні моделі через Private Cloud Compute, але для сторонніх розробників доступні інші шляхи.
llama.cpp з Metal backend на iOS — робочий підхід для phi-3-mini (3.8B параметрів, 4-bit квантизація, ~2.3GB). Інференс: 15-25 токенів/секунду на iPhone 15 Pro. Для інтеграції у Swift використовуємо Swift Package llama.swift або обгортку через C-інтерфейс llama.h. Бінарник не додаємо з додатком — модель завантажується при першому запуску й зберігається в Application Support.
На Android аналог — Google AI Edge (раніше MediaPipe LLM Inference API) з підтримкою Gemma-2B. Працює через GPU delegate, на чипі Tensor G3 Pixel 8 Pro — близько 20 токенів/секунду.
Обмеження реальні: моделі більшим за 4B параметрів на мобільних пристроях 2024-2025 років — повільно. Для складних задач міркування on-device LLM програє GPT-4o у якості. Гібридний підхід — on-device для коротких задач і приватних даних, хмара для складних запитів — часто оптимальний.
Інтеграція OpenAI API та інших хмарних моделей
Для сценаріїв, де cloud inference допустимий, інтеграція OpenAI, Anthropic або Google Gemini — це HTTP-клієнт + streaming SSE. У Swift зручно через AsyncThrowingStream для потокових відповідей. У Kotlin — через Flow.
Критично важливо: API-ключі ніколи не зберігаються в bundlі додатку. Навіть обфускований ключ витягується з IPA за 10 хвилин через strings або frida. Правильна архітектура: мобільний додаток → власний backend → OpenAI API. Backend контролює rate limiting, логує запити, захищає ключ.
Типовий конвеєр проекту
Починаємо з вибору архітектури інференсу: затримка, приватність, розмір моделі, цільові пристрої. Прототипуємо модель у Python, оцінюємо точність на цільових даних, потім конвертуємо та тестуємо на пристрої — тут часто виясняється, що мобільна версія потребує додаткової дистиляції або квантизації.
Інтеграція в додаток: модель обгортається в сервісний шар, який приховує деталі фреймворку. Це дозволяє змінювати CoreML на TFLite або on-device на хмару без переписування бізнес-логіки.
Терміни: інтеграція готової CoreML/TFLite моделі в існуючий додаток — 1-2 тижні. Розробка кастомної моделі під задачу з мобільною оптимізацією — від 6 тижнів. On-device LLM чат з персоналізацією — 4-8 тижнів.







