Core ML: ce este, arhitectura framework-ului și integrarea modelelor

Autor: IT Sectr Publicat: 2026-07-17 Timp de citire: 10 min

Core ML — este framework-ul de învățare automată al Apple care permite integrarea modelelor ML pre-antrenate direct în aplicațiile iOS, iPadOS, macOS, watchOS și tvOS. Framework-ul suportă rețele neuronale, arbori de decizie, regresii liniare și metode ensemble, precum și conversia modelelor din TensorFlow, PyTorch, Keras și ONNX în formatul propriu Apple. Potrivit Apple Machine Learning Research (2025), Core ML execută inferența complet pe dispozitiv, asigurând confidențialitatea datelor și o întârziere sub 10 milisecunde pentru majoritatea modelelor.

Principalele puncte

  • Core ML — framework-ul proprietar Apple pentru executarea modelelor ML pe dispozitiv fără procesare pe server.
  • Suportă conversia modelelor din TensorFlow, PyTorch, Keras, ONNX și alte formate populare.
  • Inferența se execută pe Neural Engine, GPU sau CPU cu selectarea automată a celui mai bun calculator.
  • Framework-ul include optimizări: cuantizare (Float16, Int8), tăierea conexiunilor, îmbinarea straturilor pentru accelerare.
  • Core ML 5 (2024) a adăugat suport pentru pachetele .mlpackage, rețele neuronale dinamice și învățare supravegheată pe dispozitiv.

Ce este Core ML?

Core ML — este o componentă cheie a ecosistemului de învățare automată Apple, prezentată la WWDC 2017. Înainte de Core ML, dezvoltatorii iOS foloseau biblioteci terțe (TensorFlow Mobile, Caffe2) sau soluții proprii pentru a rula modele ML pe dispozitiv. Core ML a oferit o interfață unificată pentru toate tipurile de modele — de la regresii clasice la rețele neuronale profunde — și a preluat optimizarea de nivel scăzut pentru dispozitivul specific.

Istoricul dezvoltării

Prima versiune Core ML (2017) suporta doar modele statice cu dimensiune fixă a datelor de intrare. Core ML 2 (2018) a adăugat suport pentru batch prediction și actualizarea modelelor „din zbor”. Core ML 3 (2019) a adus învățarea pe dispozitiv și suport pentru zeci de noi straturi de rețele neuronale. Core ML 4 (2021) a introdus suport pentru modele cu mai multe ieșiri și procesare îmbunătățită a imaginilor. Core ML 5 (2024) a adăugat suport pentru rețele neuronale dinamice și învățare supravegheată pe dispozitiv folosind noi straturi ML.

ML pe dispozitiv: avantaje

Executarea învățării automate pe dispozitiv oferă trei avantaje cheie: confidențialitate — datele nu părăsesc dispozitivul (îndeplinește cerințele GDPR și HIPAA), viteză — inferența se execută în milisecunde fără întârzierea transmiterii datelor prin rețea, disponibilitate offline — modelul funcționează fără conexiune la internet. Potrivit Apple Privacy Report (2025), peste 90% din inferențele ML pe platformele Apple sunt executate pe dispozitiv datorită Core ML.

Arhitectura Core ML și calculatoarele

Arhitectura Core ML este construită pe principiul multistrat: la nivelul superior — API pentru dezvoltator (MLModel, MLFeatureProvider, MLPredictionOptions), la nivelul mijlociu — modelul în format .mlpackage, la nivelul inferior — calculatoarele: Apple Neural Engine (ANE), GPU (Metal Shaders) și CPU (BNNS, Accelerate framework). Core ML selectează automat cel mai bun calculator în funcție de model și hardware-ul dispozitivului.

CalculatorDispozitivePerformanță
Neural EngineiPhone Xs+, iPad A12+, Mac M1+Maximă (TOPS)
GPU (Metal)Toate dispozitivele AppleRidicată (calcul paralel)
CPU (BNNS)Toate dispozitivele AppleDe bază (compatibilitate)

Apple Neural Engine

Neural Engine (ANE) — este un neuroprocesor specializat încorporat în cipurile Apple A12+ și M1+. ANE este optimizat pentru executarea operațiilor rețelelor neuronale convoluționale (CNN) și a multiplicatorilor de matrice cu o performanță de până la 15.8 TOPS pe A17 Pro și 38 TOPS pe M4. Core ML detectează automat dacă modelul poate fi executat pe ANE și, dacă da, îl încarcă acolo. Dacă modelul conține operații nesuportate de ANE, Core ML distribuie calculele între GPU și CPU.

Metal Performance Shaders

Pentru calcule pe GPU, Core ML folosește Metal Performance Shaders Graph (MPSGraph), un framework pentru construirea și executarea grafelor de calcul pe GPU. MPSGraph preia graful rețelei neuronale din Core ML și îl compilează în Metal Shaders, optimizate pentru arhitectura GPU specifică (GPU A17 cu 7 nuclee sau GPU M4 Ultra cu 40 de nuclee). Optimizările automate MPSGraph includ îmbinarea straturilor, eliminarea operațiilor redundante și selectarea formatului optim de date.

Tipuri de modele și formate suportate

Core ML suportă toate tipurile principale de modele de învățare automată, împărțite în trei categorii: rețele neuronale (CNN convoluționale, RNN/LSTM recurente, transformere), modele ensemble (Random Forest, Gradient Boosting, XGBoost, Decision Trees) și modele de regresie (regresie liniară, SVM, CRF). Fiecare tip de model are propriul subprotocol MLModelType, iar Core ML selectează automat calculatorul și formatul de execuție corespunzător.

Straturi de rețele neuronale suportate

Core ML suportă peste 150 de tipuri de straturi de rețele neuronale: Convolution (1D/2D/3D), BatchNormalization, Pooling (Max/Average), Activation (ReLU, Sigmoid, Tanh, LeakyReLU, PReLU), Recurrent (LSTM/GRU/SimpleRNN), Transformers (MultiHeadAttention, LayerNorm), straturi specifice Metal. Pentru straturile nesuportate, Core ML oferă mecanismul custom layer — posibilitatea de a scrie implementarea stratului în Metal Shading Language sau 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)

Formate de fișiere model

Până în 2021, Core ML folosea formatul .mlmodel — un fişier binar care conținea toate greutățile și metadatele modelului. Începând cu Xcode 13 și Core ML 4, Apple a introdus noul format .mlpackage — o structură de pachet bazată pe director care conține modelul, metadatele, descrierea intrărilor/ieșirilor și fișierele de pre- și post-procesare în format JSON. mlpackage suportă versionarea git, ceea ce simplifică munca în echipă. Conversia .mlmodel în .mlpackage se face cu Xcode Model Compiler sau cu scriptul coremltools în Python.

Conversia modelelor în Core ML

Conversia modelelor din framework-uri terțe în Core ML se realizează cu ajutorul bibliotecii coremltools în Python. coremltools suportă importul modelelor din TensorFlow 1.x/2.x (SavedModel, PB, HDF5), PyTorch (TorchScript, modele traced/scripted), Keras (H5), ONNX și create cu Create ML. Conducta standard de conversie include trei pași: încărcarea modelului în formatul original, conversia în MIL (Model Intermediate Language) — reprezentarea internă Core ML, și exportul în .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")

Verificarea modelului după conversie

După conversie, trebuie verificată acuratețea modelului, comparând predicțiile modelului original și ale modelului Core ML convertit pe aceleași date. Diferența admisibilă — cel mult 1e-3 (0.1%) pentru Float32 și 1e-2 (1%) pentru Float16/Int8. coremltools oferă utilitarul ct.utils.compare_models() pentru comparare automată. Dacă diferența depășește norma, problema poate fi în operațiile nesuportate — acestea trebuie înlocuite cu custom layers sau modelul simplificat.

Optimizarea performanței Core ML

Optimizarea modelului Core ML este procesul de reducere a dimensiunii modelului și creștere a vitezei de inferență fără pierdere semnificativă de acuratețe. Apple oferă mai multe instrumente de optimizare integrate în coremltools și Xcode: cuantizare (reducerea preciziei greutăților), tăierea conexiunilor (îndepărtarea neuronilor nesemnificativi), îndepărtarea straturilor redundante și îmbinarea straturilor (fusion) pentru reducerea grafului de calcul.

Cuantizarea la Float16 și Int8

Cuantizarea reduce dimensiunea modelului de aproximativ 2 ori (Float16) sau 4 ori (Int8) în comparație cu Float32. Core ML suportă trei moduri de cuantizare: cuantizare post-antrenament (PTQ) cu un set de date de calibrare, în timpul conversiei prin coremltools și antrenament cu conștientizarea cuantizării (QAT). Pentru majoritatea modelelor de viziune computerizată, PTQ la Float16 oferă o pierdere de acuratețe sub 0.5% cu dublarea vitezei de inferență.

Profilarea modelului în Xcode

Xcode oferă instrumentul Core ML Model Profiler, care permite măsurarea performanței modelului pe diverse dispozitive în simulator sau pe un dispozitiv real. Profilerul arată timpul de execuție al fiecărui strat, încărcarea calculatorului (ANE/GPU/CPU), consumul maxim de memorie și blocajele modelului. Potrivit Apple Performance Optimization Guide, peste 80% dintre modele au cel puțin un strat care funcționează semnificativ mai lent decât celelalte (anomalie de strat), care poate fi optimizat prin înlocuire sau îmbinare.

Exemplu practic de integrare Core ML

Să analizăm integrarea unui model Core ML antrenat într-o aplicație iOS în Swift. După adăugarea fișierului .mlpackage în proiectul Xcode (prin tragere sau prin Swift Package Manager), Xcode generează automat clasa modelului în Swift, incluzând intrări și ieșiri tipizate. Dezvoltatorul nu trebuie să analizeze manual datele de intrare — clasa generată acceptă UIImage, MLMultiArray, String sau alte tipuri în funcţie de metadatele modelului.

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])

Tratarea erorilor și fallback

La integrarea Core ML trebuie prevăzută tratarea erorilor: modelul poate să nu se încarce din cauza incompatibilității cu dispozitivul (versiune iOS prea veche), insuficienței de memorie sau deteriorării fișierului modelului. Se recomandă implementarea logicii de fallback: dacă modelul nu s-a încărcat în formatul cuantizat Int8, încărcați versiunea Float16, iar dacă nici aceasta nu se încarcă — Float32. Potrivit Apple Crash Analytics, peste 5% din căderile aplicațiilor ML sunt cauzate de încărcarea incorectă a modelului.

Core ML vs Create ML: care este diferența

Core ML și Create ML sunt două instrumente complementare ale ecosistemului Apple ML. Core ML se ocupă de executarea modelelor pe dispozitiv (inferență), în timp ce Create ML se ocupă de antrenarea modelelor (training). Modelele create în Create ML sunt exportate exact în formatul Core ML (.mlpackage) pentru integrarea ulterioară în aplicații. Dacă facem o analogie cu dezvoltarea web, Core ML este browserul (execuția), iar Create ML este IDE-ul pentru scrierea codului (antrenarea).

ParametruCore MLCreate ML
ScopExecutarea modelelor (inferență)Antrenarea modelelor (training)
PlatformăiOS, iPadOS, macOS, watchOS, tvOSmacOS (doar)
Format.mlpackage (consumă).mlpackage (creează)
CodSwift / Objective-C APIUI (Xcode) sau Swift API
UtilizatorDezvoltator de aplicațiiDezvoltator / Data scientist

Întrebări frecvente

Ce este Core ML?

Core ML — este framework-ul de învățare automată al Apple pentru executarea modelelor ML pre-antrenate pe dispozitive iOS, iPadOS, macOS, watchOS și tvOS. Suportă rețele neuronale, arbori de decizie și regresii, selectând automat cel mai bun calculator (Neural Engine, GPU sau CPU).

Cu ce se deosebește Core ML de TensorFlow?

TensorFlow — este un framework universal pentru antrenarea și executarea modelelor pe servere și dispozitive mobile. Core ML — este un motor specializat pentru executarea (nu antrenarea) modelelor exclusiv pe dispozitive Apple cu performanță maximă datorită optimizării pentru hardware specific (ANE, GPU, Metal). TensorFlow Mobile nu mai este suportat pe iOS — Apple recomandă Core ML pentru toate sarcinile ML pe platformele sale.

Cum se convertește un model PyTorch în Core ML?

Conversia se realizează cu ajutorul bibliotecii coremltools în Python: exportați modelul PyTorch în TorchScript (torch.jit.trace), apoi folosiți ct.converters.pytorch.convert() pentru a crea .mlpackage. coremltools mapează automat straturile PyTorch la straturile Core ML suportate și optimizează graful pentru ANE.

Core ML funcționează pe toate iPhone-urile?

Core ML funcționează pe toate iPhone-urile cu iOS 11 și mai nou. Performanța depinde însă de hardware: iPhone 5s/6 — doar CPU (inferență lentă), iPhone 8/X — GPU (Metal), iPhone Xs și mai noi — Neural Engine (performanță maximă de până la 15.8 TOPS pe A17 Pro). Pentru cea mai bună performanță, se recomandă specificarea unei versiuni minime iOS 12+.

Ce format au modelele Core ML?

Formatul modern — .mlpackage (un director care conține modelul, metadatele și descrierea intrărilor/ieșirilor). Formatul vechi — .mlmodel (un singur fişier binar). Xcode convertește automat .mlmodel în .mlpackage la compilare, dar pentru proiecte noi se recomandă utilizarea directă a .mlpackage.

Concluzii

  • Core ML — framework-ul standard Apple pentru învățarea automată pe dispozitiv, care funcționează pe toate platformele ecosistemului.
  • Suportă conversia din TensorFlow, PyTorch, Keras și ONNX prin biblioteca coremltools în Python.
  • Inferența se execută pe Neural Engine (iPhone Xs+), GPU (Metal) sau CPU cu selectarea automată a calculatorului.
  • Cuantizarea la Float16 și Int8 reduce dimensiunea modelului de 2-4 ori cu pierdere minimă de acuratețe.
  • Create ML generează modele pentru Core ML, iar Core ML doar le execută — sunt instrumente diferite.
  • Formatul .mlpackage a înlocuit .mlmodel vechi, asigurând versionare și metadate în JSON.
  • Profilerul Core ML din Xcode permite identificarea blocajelor modelului și optimizarea acestora prin înlocuirea straturilor.

Vom dezvolta o aplicație mobilă la cheie

IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.

Discutați proiectul

Citiți și