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) је донео учење на уређају и подршку за десетине нових слојева неуронских мрежа. 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-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-у.

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) са калибрационим скупом података, током конверзије кроз 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
КорисникПрограмер апликацијеПрограмер / Data scientist

Често постављана питања

Шта је 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 Profiler у Xcode-у омогућава проналажење уских грла модела и њихову оптимизацију заменом слојева.

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође