Core ML — фреймворк машинного обучения от Apple, оптимизированный для запуска ML-моделей непосредственно на устройствах iOS, macOS, watchOS и tvOS. В отличие от облачных ML-сервисов, Core ML использует аппаратные ускорители Apple: Neural Engine, GPU и CPU, обеспечивая минимальную задержку при обработке данных. По данным Apple Core ML Documentation (2026), фреймворк поддерживает модели PyTorch, TensorFlow и Create ML в едином формате .mlpackage со средним временем инференса 5–50 мс.
Главное
Core ML — это фреймворк машинного обучения, представленный Apple на WWDC 2017 как часть экосистемы разработки для iPhone, iPad, Mac, Apple Watch и Apple TV. Core ML обеспечивает runtime для выполнения ML-моделей на устройстве, абстрагируя разработчика от деталей аппаратной оптимизации. Фреймворк автоматически выбирает лучший вычислительный движок — Neural Engine на A12+ чипах, GPU или CPU — для каждой операции модели.
Ключевое преимущество Core ML — глубокая интеграция с Apple Silicon. Нейросетевые операции выполняются на выделенном Neural Engine, который не нагружает основные ядра процессора. По данным Apple (WWDC 2025), модели Core ML работают в 6 раз быстрее по сравнению с тем же TensorFlow Lite на аналогичных устройствах Android.
Core ML поддерживает широкий спектр задач машинного обучения: классификацию изображений, обнаружение объектов, семантическую сегментацию, обработку естественного языка, анализ звука и табличные данные. Фреймворк работает с моделями различных типов: нейронные сети (сверточные, рекуррентные, трансформеры), ансамбли деревьев, линейные регрессии и гауссовы процессы.
Core ML принимает на вход обученную модель в формате .mlpackage, компилирует её в оптимизированный машинный код для конкретного устройства и запускает инференс через единый API. Весь конвейер — от загрузки модели до получения результата — занимает 3–5 строк кода на Swift.
.mlpackage — это контейнерный формат, введённый Apple в 2020 году для замены устаревшего .mlmodel. Пакет представляет собой директорию с JSON-манифестом, файлом модели в бинарном формате MLProgram, метаданными (автор, версия, описание) и ресурсами, такими как метки классов. По данным Apple, .mlpackage уменьшает размер модели на 30–50% по сравнению с .mlmodel за счёт оптимизации весов.
Apple Neural Engine (ANE) — выделенный нейропроцессор, встроенный в чипы Apple начиная с A12 Bionic (2018). ANE обрабатывает матричные операции в десятки раз эффективнее CPU при том же энергопотреблении. Производительность ANE выросла с 5 TOPS на A12 до 35 TOPS на M4 Ultra (2025), что позволяет запускать модели с миллиардами параметров. ANE используется автоматически для всех Core ML моделей с нейросетевой архитектурой.
Важная особенность Core ML — поддержка квантования моделей до FP16 и INT8 без потери точности. Квантование уменьшает размер модели в 2–4 раза и ускоряет инференс на 40–60% на ANE. Apple предоставляет инструмент Xcode Model Quantization для автоматического подбора оптимальной точности: разработчик загружает модель, указывает допустимую потерю качества (обычно 0.1–0.5%), и Xcode подбирает наилучший формат представления весов.
| Чип | TOPS (ANE) | Инференс ResNet-50 | Год |
|---|---|---|---|
| A12 Bionic | 5 | 18 мс | 2018 |
| A14 Bionic | 11 | 9 мс | 2020 |
| M1 Max | 22 | 4 мс | 2021 |
| M4 Ultra | 35 | 2 мс | 2025 |
Большинство ML-моделей создаётся в PyTorch или TensorFlow и требует конвертации в формат .mlpackage для использования в Core ML. Apple предоставляет утилиту coremltools — Python-пакет для конвертации, оптимизации и валидации моделей.
coremltools — это официальная утилита Apple для конвертации ML-моделей. Она поддерживает импорт из PyTorch (через torch.onnx или напрямую), TensorFlow (SavedModel, H5, Frozen Graph) и ONNX. После конвертации можно включить квантование FP16 или INT8, что уменьшает размер модели в 2–4 раза без существенной потери точности.
Рассмотрим конвертацию обученной модели PyTorch в формат Core ML с использованием coremltools версии 8.0. Процесс занимает 2–3 шага на Python.
import torch
import coremltools as ct
# Загрузка обученной модели PyTorch
model = torch.load('model.pth')
model.eval()
# Трассировка модели с примером входа
example_input = torch.randn(1, 3, 224, 224)
traced_model = torch.jit.trace(model, example_input)
# Конвертация в Core ML .mlpackage
mlmodel = ct.convert(
traced_model,
convert_to='mlprogram',
inputs=[ct.TensorType(shape=(1, 3, 224, 224))]
)
mlmodel.save('Model.mlpackage')
Код загружает обученную PyTorch-модель, выполняет JIT-трассировку с примерным входом и конвертирует её в формат mlprogram (бинарный формат Core ML). Полученный .mlpackage можно перетащить в Xcode и сразу использовать в Swift-коде.
После конвертации модели её интеграция в iOS-приложение на Swift выполняется в несколько строк. Xcode автоматически генерирует Swift-класс для модели на основе метаданных .mlpackage.
Рассмотрим пример классификации изображения с помощью Core ML и Vision фреймворка. Vision автоматически преобразует изображение в требуемый размер и формат пикселей.
import CoreML
import Vision
// Загрузка модели Core ML
guard let model = try? VNCoreMLModel(
for: MobileNetV2.configuration.model
) else { return }
// Создание VNCoreMLRequest
let request = VNCoreMLRequest(model: model) { request, error in
guard let results = request.results
as? [VNClassificationObservation]
else { return }
// Вывод топ-3 предсказаний
for result in results.prefix(3) {
print("\(result.identifier):
\(result.confidence)")
}
}
// Запуск обработки изображения
let handler = VNImageRequestHandler(
url: imageURL
)
try? handler.perform([request])
Swift-код загружает модель MobileNetV2 через Vision фреймворк, создаёт запрос классификации и обрабатывает результат — массив объектов VNClassificationObservation с метками классов и уверенностью в процентах. Весь пайплайн от загрузки до вывода результата занимает 5–50 мс в зависимости от модели.
Для оптимизации времени запуска Core ML компилирует модель при первом использовании. Предварительная компиляция (precompiled model) сокращает холодный старт с 2–3 секунд до 100–200 мс. Рекомендуется выполнять компиляцию модели на этапе сборки в Xcode, а не при первом запуске приложения. Это особенно важно для приложений с несколькими ML-моделями — например, детекция объектов + классификация + NLP.
Core ML и ML Kit решают схожие задачи on-device ML, но ориентированы на разные экосистемы. Core ML глубоко интегрирован с Apple Silicon и поддерживает только платформы Apple. ML Kit от Google — кроссплатформенное решение для Android и iOS.
| Характеристика | Core ML | ML Kit |
|---|---|---|
| Платформы | iOS, macOS, watchOS, tvOS | Android, iOS |
| Готовые API | Через Vision, Natural Language | 15+ встроенных API |
| Кастомные модели | .mlpackage (PyTorch, TF) | TFLite (через адаптер) |
| Аппаратное ускорение | ANE, GPU, CPU | GPU (Android), CPU |
| Простота старта | Требует конвертации модели | Готовые API без Data Science |
| Производительность | 2–50 мс (ANE) | 80–200 мс (CPU/GPU) |
Выбирайте Core ML, если ваша экосистема — исключительно Apple и вам нужна максимальная производительность через ANE. Если требуется кроссплатформенность или готовые API без конвертации — ML Kit будет практичнее.
На практике многие проекты используют оба фреймворка: на iOS Core ML для высокой производительности, а на Android — ML Kit или TensorFlow Lite. Единая модель PyTorch конвертируется в .mlpackage для Apple и в .tflite для Android, что позволяет поддерживать одинаковое качество ML-функций на обеих платформах. Такой подход требует чуть больше усилий на DevOps, но даёт максимальное покрытие аудитории.
При выборе между Core ML и альтернативами учитывайте стоимость разработки: Core ML требует меньше кода для интеграции (3–5 строк Swift против 15–20 строк с TFLite), но требует Mac и Xcode для сборки. ML Kit, напротив, работает на любой платформе, но даёт меньшую производительность на iOS из-за отсутствия доступа к Apple Neural Engine.
Часто задаваемые вопросы
iOS 11+ для базовых моделей, iOS 14+ для .mlpackage формата. Для работы Apple Neural Engine требуется чип A12 Bionic и новее. Core ML поддерживает все iPhone, iPad и Mac с 2017 года.
Да, через инструмент coremltools. TensorFlow-модели конвертируются в .mlpackage с сохранением точности. Поддерживаются TensorFlow 2.x, SavedModel, H5 и Frozen Graph форматы.
.mlpackage — современный контейнерный формат, представляющий собой директорию с метаданными, бинарным файлом MLProgram и ресурсами. Он в 2–3 раза компактнее старого .mlmodel и поддерживает квантование.
Все вычисления выполняются строго на устройстве. Core ML не отправляет данные на сервер Apple. Фреймворк работает в авиарежиме и не требует подключения к интернету для инференса.
Swift — основной язык для интеграции Core ML в iOS/macOS приложения. Python используется для конвертации моделей через coremltools. Objective-C также поддерживается для обратной совместимости.
Итоги
Мы разработаем мобильное приложение под ключ
IT Sectr создаёт приложения для iOS и Android для стартапов и бизнеса с 2017 года. Мы проконсультируем вас и предложим наилучшее решение.
Читайте также