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 екосистема машинског учења, представљена на WWDC 2017. Пре Core ML-а, iOS програмери су користили библиотеке трећих страна (TensorFlow Mobile, Caffe2) или сопствена решења за покретање ML модела на уређају. Core ML је пружио јединствени уједињени интерфејс за све типове модела — од класичних регресија до дубоких неуронских мрежа — и преузео нисконивоосну оптимизацију за одређени уређај.
Прва верзија Core ML (2017) је подржавала само статичке моделе са фиксном величином улазних података. Core ML 2 (2018) је додао подршку за batch prediction и ажурирање модела “у лету”. Core ML 3 (2019) је донео учење на уређају и подршку за десетине нових слојева неуронских мрежа. Core ML 4 (2021) је увео подршку за моделе са више излаза и побољшано процесирање слика. Core ML 5 (2024) је додао подршку за динамичке неуронске мреже и надзирано учење на уређају коришћењем нових ML слојева.
Извршавање машинског учења на уређају пружа три кључне предности: поверљивост — подаци не напуштају уређај (испуњава GDPR и HIPAA захтеве), брзина — инференца се извршава у милисекундама без кашњења због преноса података путем мреже, офлајн доступност — модел ради без интернет везе. Према Apple Privacy Report (2025), више од 90% ML инференци на Apple платформама се извршава на уређају захваљујући Core ML-у.
Архитектура Core ML је изграђена по вишеслојном принципу: на горњем нивоу — API за програмера (MLModel, MLFeatureProvider, MLPredictionOptions), на средњем — модел у .mlpackage формату, на доњем — извршиоци: Apple Neural Engine (ANE), GPU (Metal Shaders) и CPU (BNNS, Accelerate framework). Core ML аутоматски бира најбољи извршиоц у зависности од модела и хардвера уређаја.
| Извршиоц | Уређаји | Перформанса |
|---|---|---|
| Neural Engine | iPhone Xs+, iPad A12+, Mac M1+ | Максимална (TOPS) |
| GPU (Metal) | Сви Apple уређаји | Висока (паралелна израчунавања) |
| CPU (BNNS) | Сви Apple уређаји | Основна (компатибилност) |
Neural Engine (ANE) — је специјализовани неуропроцесор уграђен у Apple A12+ и M1+ чипове. ANE је оптимизован за извршавање операција конволуционих неуронских мрежа (CNN) и множења матрица са перформансом до 15.8 TOPS на A17 Pro и 38 TOPS на M4. Core ML аутоматски утврђује да ли се модел може извршити на ANE-у и, ако може, учитава га тамо. Ако модел садржи операције које ANE не подржава, Core ML расподељује израчунавања између GPU-а и CPU-а.
За израчунавања на GPU-u, 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-у.
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 врши се помоћу 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.
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 модела је процес смањивања величине модела и повећања брзине инференце без значајног губитка тачности. Apple пружа неколико алата за оптимизацију уграђених у coremltools и Xcode: квантизацију (смањење прецизности тежина), прунинг (уклањање незначајних неурона), уклањање сувишних слојева и спајање слојева (fusion) за смањење израчуначког графа.
Квантизација смањује величину модела отприлике 2 пута (Float16) или 4 пута (Int8) у поређењу са Float32. Core ML подржава три начина квантизације: квантизација након обуке (PTQ) са калибрационим скупом података, током конверзије кроз coremltools и обука са узимањем у обзир квантизације (QAT). За већину модела рачунарске визије, PTQ на Float16 даје губитак тачности мањи од 0.5% уз двоструко повећање брзине инференце.
Xcode пружа Core ML Model Profiler алат, који омогућава мерење перформанси модела на различитим уређајима у симулатору или на стварном уређају. Профилер приказује време извршавања сваког слоја, оптерећење извршиоца (ANE/GPU/CPU), врхну потрошњу меморије и уске грла модела. Према Apple Performance Optimization Guide, више од 80% модела има бар један слој који ради значно спорије од осталих (аномалија слоја), који се може оптимизовати заменом или спајањем.
Размотримо интеграцију обученог Core ML модела у iOS апликацију на Swift-у. Након додавања .mlpackage датотеке у Xcode пројекат (превлачењем или путем Swift Package Manager-а), Xcode аутоматски генерише класу модела на Swift-у, која укључује типизоване улазе и излазе. Програмер не мора ручно да парсира улазне податке — генерисана класа прихвата UIImage, MLMultiArray, String или друге типове у зависности од метаподатака модела.
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 верзија), недостатка меморије или оштећења датотеке модела. Препоручује се имплементација fallback логике: ако се модел није учитао у квантизованом Int8 формату, учитајте Float16 верзију, а ако се ни она не учита — Float32. Према Apple Crash Analytics, више од 5% падова ML апликација је позвечено неисправним учитавањем модела.
Core ML и Create ML су два комплементарна алата Apple ML екосистема. Core ML је задужен за извршавање модела на уређају (инференца), док је Create ML задужен за обуку модела (тренирање). Модели креирани у Create ML-у се извозе управо у Core ML формат (.mlpackage) за каснију интеграцију у апликације. Ако направимо поређење са веб развојем, Core ML је прегледач (извршавање), а Create ML је IDE за писање кода (обука).
| Параметар | Core ML | Create ML |
|---|---|---|
| Намена | Извршавање модела (инференца) | Обука модела (тренирање) |
| Платформа | iOS, iPadOS, macOS, watchOS, tvOS | macOS (само) |
| Формат | .mlpackage (користи) | .mlpackage (ствара) |
| Код | Swift / Objective-C API | UI (Xcode) или Swift API |
| Корисник | Програмер апликације | Програмер / Data scientist |
Често постављана питања
Core ML — је оквир машинског учења од Apple-а за извршавање претходно обучених ML модела на iOS, iPadOS, macOS, watchOS и tvOS уређајима. Подржава неуронске мреже, дрва одлучивања и регресије, аутоматски бирајући оптимални извршиоц (Neural Engine, GPU или CPU).
TensorFlow — је универзални оквир за обуку и извршавање модела на серверима и мобилним уређајима. Core ML — је специјализовани погонски мотор за извршавање (није обуку) модела искључиво на Apple уређајима са максималном перформансом захваљујући оптимизацији за одређени хардвер (ANE, GPU, Metal). TensorFlow Mobile више није подржан на iOS-у — Apple препоручује Core ML за све ML задатке на својим платформама.
Конверзија се врши помоћу coremltools библиотеке у Python-у: извезите PyTorch модел у TorchScript (torch.jit.trace), затим користите ct.converters.pytorch.convert() за креирање .mlpackage-а. coremltools аутоматски пресликава PyTorch слојеве у подржане Core ML слојеве и оптимизује граф за ANE.
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+ верзију.
Савремени формат — .mlpackage (директоријум који садржи модел, метаподатке и опис улаза/излаза). Стари формат — .mlmodel (једна бинарна датотека). Xcode аутоматски конвертује .mlmodel у .mlpackage приликом компилирања, али за нове пројекте се препоручује директно .mlpackage.
Закључак
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође