Розробка машинного навчання (Core ML) в iOS-додатку

Інтеграція машинного навчання в iOS-додаток часто натрапляє на несумісність форматів і повільний інференс. Ми розробляємо Core ML-рішення, які працюють на пристрої, забезпечуючи високу швидкодію та конфіденційність даних. Наша команда реалізує проєкт під ключ — від конвертації моделей до оптимізації та підтримки.

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Розробка машинного навчання (Core ML) в iOS-додатку
Складний
~1-2 тижні
Часті запитання

Чому Core ML замість хмарного інференсу?

Конвертуєте модель із Python-середовища в мобільний продакшн — і одразу стикаєтеся з несумісністю форматів, латентністю інференсу та відсутністю механізму оновлення без релізу в App Store.

Core ML розв'язує ці проблеми нативно, але лише якщо його правильно вбудувати в архітектуру застосунку. Ми вже виконали понад 50 інтеграцій Core ML і гарантуємо стабільну роботу на пристроях, починаючи з iPhone 8.

Інференс на пристрої виключає затримки мережі та зберігає конфіденційність даних користувача. Докладніше про можливості Core ML читайте в офіційній документації Apple.

Як уникнути типових помилок під час інтеграції Core ML?

Найпоширеніша помилка — конвертація моделі без урахування цільового обладнання. coremltools дозволяє вказати minimum_deployment_target і тип compute unit: cpuOnly, cpuAndGPU, cpuAndNeuralEngine.

Якщо не вказати cpuAndNeuralEngine для A12+, модель не потрапить на Neural Engine і працюватиме на CPU, що в 5–10 разів повільніше для згорткових мереж. Наші інженери сертифіковані Apple і завжди вибирають оптимальну конфігурацію.

Другий момент — вхідний формат. Core ML очікує CVPixelBuffer з конкретним kCVPixelFormatType. Якщо застосунок отримує UIImage з камери через AVCapturePhotoOutput, потрібна проміжна конвертація через CIImage → CVPixelBuffer.

Робити це в головному потоці — вірний шлях до пропущених кадрів. Увесь ланцюжок захоплення та інференсу має проходити через DispatchQueue з QoS .userInteractive або через фреймворк Vision, який сам керує буферами.

Vision + CoreML — правильна комбінація для більшості завдань: VNCoreMLRequest бере на себе масштабування, нормалізацію та керування буфером. Але якщо потрібна послідовність інференсів на відеопотоці, краще використовувати VNSequenceRequestHandler — він кешує стан між кадрами.

Як ми гарантуємо швидкість інференсу?

Починаємо з аудиту вихідної моделі: формат (ONNX, TensorFlow SavedModel, PyTorch TorchScript), розмір ваг, кількість операцій. Для конвертації використовуємо coremltools 7.x, для квантованих моделей — ct.optimize.coreml з LinearQuantizer або PalettizationConfig.

Квантизація до 8-bit зменшує розмір моделі у 4 рази без помітної втрати точності на більшості класифікаторів.

Приклад із практики: фінтех-клієнт хотів виявлення підроблення документів на пристрої. Початкова TFLite-модель (MobileNetV3, 12 MB) давала 280 ms на iPhone 12.

Після конвертації в .mlpackage з computeUnits = .cpuAndNeuralEngine і Float16-компресією — 34 ms на тому самому пристрої. Додатково обгорнули інференс у MLModelConfiguration з allowLowPrecisionAccumulationOnGPU = true. Економія на серверній інфраструктурі становила до 70%.

Параметр До оптимізації Після оптимізації
Розмір моделі 12 MB 3 MB (Float16)
Час інференсу 280 ms 34 ms
Використовуваний процесор CPU Neural Engine

Дані з офіційного прикладу Apple Core ML Optimization Guide Якщо ви хочете таку саму оптимізацію, зв’яжіться з нами для аудиту вашої моделі.

Технічні деталі конвертації

Окрім квантизації, ми застосовуємо прунінг і профілювання через Xcode Instruments (Core ML Instrument). Для моделей із динамічними розмірами входів використовуємо MLMultiArrayConstraint з shapeFlexibility. Увесь ML-шар ізолюємо в окремий Swift Package з протоколом MLInferenceService.

Що дає квантизація моделі?

Квантизація в 8-bit за допомогою LinearQuantizer скорочує розмір моделі в 4 рази та прискорює інференс до 2 разів на підтримуваному обладнанні. Для задач класифікації точність падає менш ніж на 1%.

Якщо потрібна максимальна точність, використовуємо половинну точність (Float16) — розмір зменшується вдвічі без втрати точності. Наш досвід показує, що більшість моделей можна безпечно квантизувати в 8-bit.

Як ми оновлюємо моделі без релізу?

Для оновлення моделей без релізу налаштовуємо завантаження через CloudKit або власне S3-сумісне сховище. MLModel(contentsOf:) приймає локальний URL — модель завантажується у фоні, верифікується за SHA-256, атомарно підмінюється через FileManager.replaceItem. Стара версія зберігається як fallback.

Архітектурно весь ML-шар ізолюємо в окремий модуль (Swift Package) із протоколом MLInferenceService. Це дає змогу підміняти реалізацію в тестах і перевикористовувати між кількома таргетами.

Що входить у роботу

  1. Аудит вихідної моделі та вибір шляху конвертації.
  2. Конвертація в .mlmodel / .mlpackage через coremltools.
  3. Оптимізація: квантизація, прунінг, вибір compute units.
  4. Інтеграція через Vision або прямий MLModel API.
  5. Налаштування OTA-оновлення моделей (CloudKit / S3).
  6. Unit-тести інференсу з еталонними входами/виходами.
  7. Профілювання через Xcode Instruments (Core ML Instrument).

Отримайте консультацію щодо інтеграції Core ML вже сьогодні. Зв’яжіться з нами для аудиту вашої моделі — ми розрахуємо терміни та вартість після аудиту.

Терміни

Інтеграція готової сконвертованої моделі в наявний застосунок — від 3 до 5 робочих днів. Якщо потрібна конвертація, оптимізація й налаштування OTA-оновлення з нуля — 1–2 тижні. Вартість розраховується індивідуально після аналізу вимог і вихідної моделі.

Наші компетенції:

Останні роботи

  • Розробка мобільного додатка для компанії FEEDME
    Розробка мобільного додатка для компанії FEEDME
    1009
  • Розробка мобільного додатку для компанії XOOMER
    Розробка мобільного додатку для компанії XOOMER
    902
  • Розробка мобільного додатку для компанії RHL
    Розробка мобільного додатку для компанії RHL
    1332
  • Розробка мобільного додатку для компанії ZIPPY
    Розробка мобільного додатку для компанії ZIPPY
    1179
  • Розробка мобільного додатку для компанії Affhome
    Розробка мобільного додатку для компанії Affhome
    1106
  • Розробка мобільного додатку для компанії FLAVORS
    Розробка мобільного додатку для компанії FLAVORS
    713