Core ML: архітектура фреймворку та інтеграція моделей

Автор: IT Sectr Опубліковано: 2026-07-17 Час читання: 10 хв

Core ML — це фреймворк машинного навчання від Apple, який дозволяє інтегрувати попередньо навчені ML-моделі безпосередньо в додатки iOS, iPadOS, macOS, watchOS та tvOS. Фреймворк підтримує нейронні мережі, дерева рішень, лінійні регресії та ансамблеві методи, а також конвертацію моделей з TensorFlow, PyTorch, Keras та ONNX у власний формат Apple. Згідно з Apple Machine Learning Research (2025), Core ML виконує інференцію повністю на пристрої, забезпечуючи конфіденційність даних та затримку менше ніж 10 мілісекунд для більшості моделей.

Головне

  • Core ML — власницький фреймворк Apple для виконання ML-моделей на пристрої без серверної обробки.
  • Підтримує конвертацію моделей з TensorFlow, PyTorch, Keras, ONNX та інших популярних форматів.
  • Інференція виконується на Neural Engine, GPU або CPU з автоматичним вибором оптимального обчислювального бекенду.
  • Фреймворк включає оптимізації: квантизація (Float16, Int8), прунінг, злиття шарів для прискорення.
  • Core ML 5 (2024) додав підтримку пакетів .mlpackage, динамічних нейронних мереж та керованого навчання на пристрої.

Що таке Core ML?

Core ML — це ключовий компонент екосистеми машинного навчання Apple, представлений на WWDC 2017. До Core ML розробники iOS використовували сторонні бібліотеки (TensorFlow Mobile, Caffe2) або користувацькі рішення для запуску ML-моделей на пристрої. Core ML надав єдиний уніфікований інтерфейс для всіх типів моделей — від класичних регресій до глибоких нейронних мереж — та взяв на себе низькорівневу оптимізацію для конкретного пристрою.

Історія розвитку

Перша версія Core ML (2017) підтримувала лише статичні моделі з фіксованими розмірами вхідних даних. Core ML 2 (2018) додав підтримку пакетного прогнозування та оновлень моделей на лету. Core ML 3 (2019) приніс навчання на пристрої та підтримку десятків нових шарів нейронних мереж. Core ML 4 (2021) представив підтримку моделей з кількома виходами та покращену обробку зображень. Core ML 5 (2024) додав підтримку динамічних нейронних мереж та керованого навчання на пристрої використовуючи нові ML-шари.

ML на пристрої: переваги

Виконання машинного навчання на пристрої дає три ключові переваги: конфіденційність — дані ніколи не покидають пристрій (відповідає вимогам GDPR та HIPAA), швидкість — інференція виконується за мілісекунди без мережевої затримки, офлайн-доступність — модель працює без підключення до Інтернету. Згідно з Apple Privacy Report (2025), понад 90% ML-інференцій на платформах Apple виконується на пристрої завдяки Core ML.

Архітектура Core ML та обчислювальні бекенди

Архітектура Core ML побудована за багатошаровим принципом: на верхньому рівні — API для розробника (MLModel, MLFeatureProvider, MLPredictionOptions), на середньому — модель у форматі .mlpackage, на нижньому — обчислювальні бекенди: Apple Neural Engine (ANE), GPU (Metal Shaders) та CPU (BNNS, Accelerate framework). Core ML автоматично обирає найкращий бекенд залежно від моделі та апаратного забезпечення пристрою.

БекендПристроїПродуктивність
Neural EngineiPhone Xs+, iPad A12+, Mac M1+Максимальна (TOPS)
GPU (Metal)Усі пристрої AppleВисока (паралельні обчислення)
CPU (BNNS)Усі пристрої AppleБазова (сумісність)

Apple Neural Engine

Neural Engine (ANE) — це спеціалізований нейропроцесор, вбудований в чипи Apple A12+ та M1+. ANE оптимізований для операцій згорткових нейронних мереж (CNN) та матричних множників з продуктивністю до 15.8 TOPS на A17 Pro та 38 TOPS на M4. Core ML автоматично визначає, чи можна виконати модель на ANE, і якщо так, завантажує її туди. Якщо модель містить операції, не підтримувані ANE, Core ML розподіляє обчислення між GPU та CPU.

Metal Performance Shaders

Для обчислень на GPU Core ML використовує Metal Performance Shaders Graph (MPSGraph) — фреймворк для побудови та виконання обчислювальних графів на GPU. MPSGraph бере граф нейронної мережі з Core ML та компілює його в Metal Shaders, оптимізовані для конкретної архітектури GPU (7-ядерний A17 GPU або 40-ядерний M4 Ultra GPU). Автоматичні оптимізації MPSGraph включають злиття шарів, усунення надлишкових операцій та вибір оптимального формату даних.

Підтримувані типи моделей та формати

Core ML підтримує всі основні типи моделей машинного навчання, поділені на три категорії: нейронні мережі (згорткові CNN, рекурентні RNN/LSTM, трансформери), ансамблеві моделі (Random Forest, Gradient Boosting, XGBoost, дерева рішень) та регресійні моделі (лінійна регресія, SVM, CRF). Кожен тип моделі має свій підпротокол MLModelType, і Core ML автоматично обирає відповідний бекенд та формат виконання.

Підтримувані шари нейронних мереж

Core ML підтримує понад 150 типів шарів нейронних мереж: Convolution (1D/2D/3D), BatchNormalization, Pooling (Max/Average), Activation (ReLU, Sigmoid, Tanh, LeakyReLU, PReLU), Recurrent (LSTM/GRU/SimpleRNN), Transformers (MultiHeadAttention, LayerNorm), шари специфічні для Metal. Для непідтримуваних шарів Core ML надає механізм користувацького шару — можливість написати реалізацію шару на Metal Shading Language або Swift.

swift
let model = try MLModel(contentsOf: modelURL)
let input = try MLMultiArray(shape: [1, 224, 224, 3], dataType: .float32)
let prediction = try model.prediction(from: input)

Формати файлів моделей

До 2021 року Core ML використовував формат .mlmodel — бінарний файл, що містить всі ваги та метадані моделі. Починаючи з Xcode 13 та Core ML 4, Apple представила новий формат .mlpackage — пакетну структуру на основі каталогу, що містить модель, метадані, описи входів/виходів та файли попередньої та післядуючої обробки у форматі JSON. mlpackage підтримує версіонування git, що спрощує командну розробку. Конвертація .mlmodel в .mlpackage виконується за допомогою утиліти Xcode Model Compiler або скрипта coremltools на Python.

Конвертація моделей в Core ML

Конвертація моделей з сторонніх фреймворків в Core ML виконується за допомогою бібліотеки coremltools на Python. coremltools підтримує імпорт моделей з TensorFlow 1.x/2.x (SavedModel, PB, HDF5), PyTorch (TorchScript, traced/scripted моделі), Keras (H5), ONNX та створених за допомогою Create ML. Стандартний конвеєр конвертації включає три кроки: завантаження моделі в оригінальному форматі, конвертація в MIL (Model Intermediate Language) — внутрішнє подання Core ML — та експорт у .mlpackage.

python
import coremltools as ct

model = ct.converters.pytorch.convert(
    source = "model.pt",
    inputs = [ct.TensorType(shape=(1, 3, 224, 224))]
)
model.author = "IT Sectr"
model.short_description = "Image classifier"
model.save("MyModel.mlpackage")

Перевірка моделі після конвертації

Після конвертації необхідно перевірити точність моделі, порівнюючи прогнози оригінальної моделі та конвертованої Core ML-моделі на однакових даних. Допустиме відхилення не перевищує 1e-3 (0.1%) для Float32 та 1e-2 (1%) для Float16/Int8. coremltools надає утиліту ct.utils.compare_models() для автоматичного порівняння. Якщо відхилення перевищує норму, можлива проблема з непідтримуваними операціями — їх необхідно замінити користувацькими шарами або спростити модель.

Оптимізація продуктивності Core ML

Оптимізація моделі Core ML — це процес зменшення розміру моделі та збільшення швидкості інференції без значної втрати точності. Apple надає кілька інструментів оптимізації, вбудованих в coremltools та Xcode: квантизація (зниження точності ваг), прунінг (видалення незначних нейронів), видалення надлишкових шарів та злиття шарів для зменшення обчислювального графа.

Квантизація до Float16 та Int8

Квантизація зменшує розмір моделі приблизно в 2 рази (Float16) або 4 рази (Int8) порівняно з Float32. Core ML підтримує три режими квантизації: післянавчальну квантизацію (PTQ) з калібрувальним набором даних, під час конвертації через coremltools та навчання з урахуванням квантизації (QAT). Для більшості моделей комп’ютерного зору PTQ до Float16 дає втрату точності менше ніж 0.5% при подвоєнні швидкості інференції.

Профілювання моделі в Xcode

Xcode надає інструмент Core ML Model Profiler, який дозволяє виміряти продуктивність моделі на різних пристроях в симуляторі або на реальному пристрої. Профілятор показує час виконання кожного шару, навантаження бекенду (ANE/GPU/CPU), пікове споживання пам’яті та вузькі місця моделі. Згідно з Apple Performance Optimization Guide, понад 80% моделей мають хоча бодин шар, який працює значно повільніше за інші (аномалія шару), який можна оптимізувати заміною або злиттям.

Практичний приклад інтеграції Core ML

Розглянемо інтеграцію навченої моделі Core ML в iOS-додаток на Swift. Після додавання файлу .mlpackage в проект Xcode (перетягуванням або через Swift Package Manager), Xcode автоматично генерує клас моделі Swift з типізованими входами та виходами. Розробнику не потрібно вручну парсити вхідні дані — згенерований клас приймає UIImage, MLMultiArray, String або інші типи залежно від метаданих моделі.

swift
import CoreML
import Vision

guard let model = try? VNCoreMLModel(
    for: MyImageClassifier().model
) else { return }

let request = VNCoreMLRequest(model: model) { request, error in
    guard let results = request.results
        as? [VNClassificationObservation]
    else { return }

    if let topResult = results.first {
        print("Class: \(topResult.identifier)")
        print("Confidence: \(topResult.confidence)")
    }
}

let handler = VNImageRequestHandler(
    cgImage: image.cgImage!,
    options: [:]
)
try handler.perform([request])

Обробка помилок та запас

При інтеграції Core ML необхідно передбачити обробку помилок: модель може не завантажитися через несумісність з пристроєм (занадто стара версія iOS), нестачу пам’яті або пошкодження файлу моделі. Рекомендується реалізувати логіку запасу: якщо модель не завантажилася в квантованому форматі Int8, завантажити версію Float16, а якщо й вона не завантажиться — Float32. Згідно з Apple Crash Analytics, понад 5% збоїв ML-додатків викликані неправильним завантаженням моделі.

Core ML vs Create ML: різниця

Core ML та Create ML — це два взаємодоповнюючі інструменти екосистеми Apple ML. Core ML відповідає за виконання моделей на пристрої (інференцію), тоді як Create ML відповідає за навчання моделей. Створені в Create ML моделі експортуються саме в формат Core ML (.mlpackage) для подальшої інтеграції в додатки. Якщо провести аналогію з веб-розробкою, Core ML — це браузер (виконання), а Create ML — це IDE для написання коду (навчання).

ПараметрCore MLCreate ML
ПризначенняВиконання моделей (інференція)Навчання моделей
ПлатформаiOS, iPadOS, macOS, watchOS, tvOSmacOS (лише)
Формат.mlpackage (споживає).mlpackage (створює)
КодSwift / Objective-C APIІнтерфейс Xcode або Swift API
КористувачРозробник додаткаРозробник / Дата-сайентист

Часто задавані питання

Що таке Core ML?

Core ML — це фреймворк машинного навчання Apple для виконання попередньо навчених ML-моделей на пристроях iOS, iPadOS, macOS, watchOS та tvOS. Він підтримує нейронні мережі, дерева рішень та регресії, автоматично обираючи оптимальний обчислювальний бекенд (Neural Engine, GPU або CPU).

Чим Core ML відрізняється від TensorFlow?

TensorFlow — це універсальний фреймворк для навчання та виконання моделей на серверах та мобільних пристроях. Core ML — спеціалізований рушій для виконання (не навчання) моделей виключно на пристроях Apple з максимальною продуктивністю завдяки оптимізації під конкретне обладнання (ANE, GPU, Metal). TensorFlow Mobile більше не підтримується на iOS — Apple рекомендує Core ML для всіх ML-завдань на своїх платформах.

Як конвертувати модель PyTorch в Core ML?

Конвертація виконується за допомогою бібліотеки coremltools на Python: експортуйте модель PyTorch в TorchScript (torch.jit.trace), потім використайте ct.converters.pytorch.convert() для створення .mlpackage. coremltools автоматично зіставляє шари PyTorch з підтримуваними шарами Core ML та оптимізує граф для ANE.

Чи працює Core ML на всіх iPhone?

Core ML працює на всіх iPhone з iOS 11 та новішими. Однак продуктивність залежить від апаратного забезпечення: iPhone 5s/6 — лише CPU (повільна інференція), iPhone 8/X — GPU (Metal), iPhone Xs та новіші — Neural Engine (максимальна продуктивність до 15.8 TOPS на A17 Pro). Для найкращої продуктивності рекомендується встановити мінімальну версію iOS 12+.

Який формат використовують моделі Core ML?

Сучасний формат — .mlpackage (каталог, що містить модель, метадані та описи входів/виходів). Застарілий формат — .mlmodel (один бінарний файл). Xcode автоматично конвертує .mlmodel в .mlpackage під час збірки, але для нових проектів рекомендується використовувати .mlpackage безпосередньо.

Підсумки

  • Core ML — стандартний фреймворк Apple для машинного навчання на пристрої, який працює на всіх платформах екосистеми.
  • Підтримує конвертацію з TensorFlow, PyTorch, Keras та ONNX через бібліотеку coremltools на Python.
  • Інференція виконується на Neural Engine (iPhone Xs+), GPU (Metal) або CPU з автоматичним вибором бекенду.
  • Квантизація до Float16 та Int8 зменшує розмір моделі в 2-4 рази з мінімальною втратою точності.
  • Create ML генерує моделі для Core ML, а Core ML лише виконує їх — це різні інструменти.
  • Формат .mlpackage замінив застарілий .mlmodel, надаючи версіонування та метадані в JSON.
  • Профілятор Core ML в Xcode допомагає виявити вузькі місця та оптимізувати їх заміною шарів.

Ми розробимо мобільний застосунок під ключ

IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект

Читайте також