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) добавил поддержку batch prediction и обновления моделей "на лету". Core ML 3 (2019) принёс on-device обучение и поддержку десятков новых слоёв нейронных сетей. Core ML 4 (2021) ввёл поддержку моделей с несколькими выходами и улучшенную обработку изображений. Core ML 5 (2024) добавил поддержку динамических нейронных сетей и контролируемого обучения на устройстве с использованием новых ML-слоёв.

On-Device 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, Decision Trees) и регрессионные модели (линейная регрессия, 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 предоставляет механизм custom layer — возможность написать реализацию слоя на 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() для автоматического сравнения. Если расхождение превышает норму, возможно проблема в неподдерживаемых операциях — их необходимо заменить custom layers или упростить модель.

Оптимизация производительности Core ML

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

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

Квантизация уменьшает размер модели примерно в 2 раза (Float16) или 4 раза (Int8) по сравнению с Float32. Core ML поддерживает три режима квантизации: послеобучающая квантизация (PTQ — Post-Training Quantization) с калибровочным набором данных, во время конвертации через 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])

Обработка ошибок и fallback

При интеграции Core ML необходимо предусмотреть обработку ошибок: модель может не загрузиться из-за несовместимости с устройством (слишком старая версия iOS), недостатка памяти или повреждения файла модели. Рекомендуется реализовать fallback-логику: если модель не загрузилась в квантизированном 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 APIUI (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 для on-device машинного обучения, работающий на всех платформах экосистемы.
  • Поддерживает конвертацию из 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 года. Мы проконсультируем вас и предложим наилучшее решение.

Обсудить проект

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