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 ms.
Основни точки
Core ML — е рамка за машинно обучение, представена от Apple на WWDC 2017 като част от екосистемата за разработка за iPhone, iPad, Mac, Apple Watch и Apple TV. Core ML предоставя среда за изпълнение на 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 ms | 2018 |
| A14 Bionic | 11 | 9 ms | 2020 |
| M1 Max | 22 | 4 ms | 2021 |
| M4 Ultra | 35 | 2 ms | 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 ms в зависимост от модела.
За оптимизиране на времето за стартиране, Core ML компилира модела при първа употреба. Предварителната компилация (precompiled model) намалява студения старт от 2–3 секунди до 100–200 ms. Препоръчва се компилацията на модела да се извършва на етапа на изграждане в 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 ms (ANE) | 80–200 ms (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 г. Ще ви консултираме и ще предложим най-доброто решение.
Прочетете също