Core ML: vad är det, ramverksarkitektur och modellintegration

Författare: IT Sectr Publicerad: 2026-07-17 Lästid: 10 min

Core ML — is het machine learning-framework van Apple waarmee vooraf getrainde ML-modellen rechtstreeks kunnen worden geïntegreerd in iOS-, iPadOS-, macOS-, watchOS- en tvOS-apps. Het framework ondersteunt neurale netwerken, beslissingsbomen, lineaire regressies en ensemblemethoden, evenals conversie van modellen uit TensorFlow, PyTorch, Keras en ONNX naar Apples eigen formaat. Volgens Apple Machine Learning Research (2025) voert Core ML inferentie volledig op het apparaat uit, met gegevensprivacy en een vertraging van minder dan 10 milliseconden voor de meeste modellen.

Belangrijkste punten

  • Core ML — het gepatenteerde Apple-framework voor het uitvoeren van ML-modellen op het apparaat zonder serververwerking.
  • Ondersteunt conversie van modellen uit TensorFlow, PyTorch, Keras, ONNX en andere populaire formaten.
  • Inferentie wordt uitgevoerd op Neural Engine, GPU of CPU met automatische selectie van de optimale rekenaar.
  • Het framework omvat optimalisaties: kwantisatie (Float16, Int8), pruning, fusie van lagen voor versnelling.
  • Core ML 5 (2024) voegde ondersteuning toe voor .mlpackage-pakketten, dynamische neurale netwerken en gecontroleerd leren op het apparaat.

Wat is Core ML?

Core ML — is een belangrijk onderdeel van het machine learning-ecosysteem van Apple, geïntroduceerd op WWDC 2017. Vóór Core ML gebruikten iOS-ontwikkelaars bibliotheken van derden (TensorFlow Mobile, Caffe2) of eigen oplossingen om ML-modellen op het apparaat uit te voeren. Core ML bood een uniforme interface voor alle modeltypen — van klassieke regressies tot diepe neurale netwerken — en nam de optimalisatie op laag niveau voor het specifieke apparaat over.

Ontwikkelingsgeschiedenis

De eerste versie van Core ML (2017) ondersteunde alleen statische modellen met een vaste invoergrootte. Core ML 2 (2018) voegde ondersteuning toe voor batch prediction en het “ter plekke” bijwerken van modellen. Core ML 3 (2019) bracht leren op het apparaat en ondersteuning voor tientallen nieuwe neurale netwerk lagen. Core ML 4 (2021) introduceerde ondersteuning voor modellen met meerdere uitvoeren en verbeterde beeldverwerking. Core ML 5 (2024) voegde ondersteuning toe voor dynamische neurale netwerken en gecontroleerd leren op het apparaat met behulp van nieuwe ML-lagen.

On-Device ML: voordelen

Het uitvoeren van machine learning op het apparaat biedt drie belangrijke voordelen: privacy — gegevens verlaten het apparaat niet (voldoet aan GDPR- en HIPAA-vereisten), snelheid — inferentie wordt in milliseconden uitgevoerd zonder vertraging door gegevensoverdracht via het netwerk, offline beschikbaarheid — het model werkt zonder internetverbinding. Volgens Apple Privacy Report (2025) wordt meer dan 90% van de ML-inferenties op Apple-platforms op het apparaat uitgevoerd dankzij Core ML.

Core ML-architectuur en rekenaars

De Core ML-architectuur is gebouwd volgens een gelaagd principe: op het hoogste niveau — API voor de ontwikkelaar (MLModel, MLFeatureProvider, MLPredictionOptions), op het middelste niveau — het model in .mlpackage-formaat, op het laagste niveau — de rekenaars: Apple Neural Engine (ANE), GPU (Metal Shaders) en CPU (BNNS, Accelerate framework). Core ML selecteert automatisch de beste rekenaar op basis van het model en de hardware van het apparaat.

RekenaarApparatenPrestaties
Neural EngineiPhone Xs+, iPad A12+, Mac M1+Maximaal (TOPS)
GPU (Metal)Alle Apple-apparatenHoog (parallelle verwerking)
CPU (BNNS)Alle Apple-apparatenBasis (compatibiliteit)

Apple Neural Engine

Neural Engine (ANE) — is een gespecialiseerde neuroprocessor die is ingebouwd in Apple A12+- en M1+-chips. ANE is geoptimaliseerd voor het uitvoeren van convolutionele neurale netwerkbewerkingen (CNN) en matrixvermenigvuldigingen met een prestatie tot 15.8 TOPS op A17 Pro en 38 TOPS op M4. Core ML detecteert automatisch of het model op ANE kan worden uitgevoerd en laadt het daar indien mogelijk. Als het model bewerkingen bevat die niet door ANE worden ondersteund, verdeelt Core ML de berekeningen tussen GPU en CPU.

Metal Performance Shaders

Voor berekeningen op de GPU gebruikt Core ML Metal Performance Shaders Graph (MPSGraph), een framework voor het bouwen en uitvoeren van rekengrafieken op de GPU. MPSGraph neemt de neurale netwerkgrafiek van Core ML en compileert deze naar Metal Shaders, geoptimaliseerd voor de specifieke GPU-architectuur (7-core A17 GPU of 40-core M4 Ultra GPU). Automatische MPSGraph-optimalisaties omvatten laagfusie, eliminatie van overbodige bewerkingen en selectie van het optimale gegevensformaat.

Ondersteunde modeltypen en formaten

Core ML ondersteunt alle belangrijke typen machine learning-modellen, verdeeld in drie categorieën: neurale netwerken (convolutionele CNN, recurrente RNN/LSTM, transformers), ensemblemodellen (Random Forest, Gradient Boosting, XGBoost, Decision Trees) en regressiemodellen (lineaire regressie, SVM, CRF). Elk modeltype heeft zijn eigen subprotocol MLModelType en Core ML selecteert automatisch de juiste rekenaar en uitvoeringsformaat.

Ondersteunde neurale netwerk lagen

Core ML ondersteunt meer dan 150 typen neurale netwerk lagen: Convolution (1D/2D/3D), BatchNormalization, Pooling (Max/Average), Activation (ReLU, Sigmoid, Tanh, LeakyReLU, PReLU), Recurrent (LSTM/GRU/SimpleRNN), Transformers (MultiHeadAttention, LayerNorm), Metal-specifieke lagen. Voor niet-ondersteunde lagen biedt Core ML een custom layer-mechanisme — de mogelijkheid om een laagimplementatie te schrijven in Metal Shading Language of 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)

Modelbestandsformaten

Tot 2021 gebruikte Core ML het .mlmodel-formaat — een binair bestand met alle gewichten en metadata van het model. Vanaf Xcode 13 en Core ML 4 introduceerde Apple het nieuwe .mlpackage-formaat — een pakketstructuur op basis van een map met het model, metadata, beschrijving van in- en uitvoeren en voor- en nabewerkingsbestanden in JSON-formaat. mlpackage ondersteunt git-versiebeheer, wat teamwerk vereenvoudigt. Conversie van .mlmodel naar .mlpackage wordt gedaan door Xcode Model Compiler of het coremltools-script in Python.

Modelconversie naar Core ML

Conversie van modellen uit frameworks van derden naar Core ML wordt uitgevoerd met de coremltools-bibliotheek in Python. coremltools ondersteunt import van modellen uit TensorFlow 1.x/2.x (SavedModel, PB, HDF5), PyTorch (TorchScript, traced/scripted modellen), Keras (H5), ONNX en gemaakt met Create ML. De standaardconversiepijplijn omvat drie stappen: laden van het model in het oorspronkelijke formaat, conversie naar MIL (Model Intermediate Language) — de interne weergave van Core ML, en export naar .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")

Modelvalidatie na conversie

Na conversie moet de modelnauwkeurigheid worden gecontroleerd door de voorspellingen van het originele model en het geconverteerde Core ML-model op dezelfde gegevens te vergelijken. Toegestane afwijking — niet meer dan 1e-3 (0.1%) voor Float32 en 1e-2 (1%) voor Float16/Int8. coremltools biedt de tool ct.utils.compare_models() voor automatische vergelijking. Als de afwijking de norm overschrijdt, kan het probleem liggen in niet-ondersteunde bewerkingen — deze moeten worden vervangen door custom layers of het model moet worden vereenvoudigd.

Core ML-prestatieoptimalisatie

Optimalisatie van een Core ML-model is het proces van het verkleinen van de modelgrootte en het verhogen van de inferentiesnelheid zonder significant verlies van nauwkeurigheid. Apple biedt verschillende optimalisatietools geïntegreerd in coremltools en Xcode: kwantisatie (vermindering van gewichtspreciesie), pruning (verwijderen van onbelangrijke neuronen), verwijderen van overbodige lagen en laagfusie (fusion) om de rekengrafiek te verkleinen.

Kwantisatie naar Float16 en Int8

Kwantisatie verkleint de modelgrootte ongeveer 2 keer (Float16) of 4 keer (Int8) in vergelijking met Float32. Core ML ondersteunt drie kwantisatiemodi: kwantisatie na training (PTQ) met een kalibratiedataset, tijdens conversie via coremltools en training met kwantisatiebewustzijn (QAT). Voor de meeste computervisiemodellen geeft PTQ naar Float16 een nauwkeurigheidsverlies van minder dan 0.5% bij verdubbeling van de inferentiesnelheid.

Modelprofilering in Xcode

Xcode biedt de Core ML Model Profiler-tool, waarmee de prestaties van het model op verschillende apparaten in de simulator of op een echt apparaat kunnen worden gemeten. De profiler toont de uitvoeringstijd van elke laag, de belasting van de rekenaar (ANE/GPU/CPU), het piekgeheugengebruik en de knelpunten van het model. Volgens Apple Performance Optimization Guide heeft meer dan 80% van de modellen ten minste één laag die aanzienlijk langzamer werkt dan de andere (laaganomalie), die kan worden geoptimaliseerd door vervanging of fusie.

Praktisch voorbeeld van Core ML-integratie

Laten we de integratie van een getraind Core ML-model in een iOS-app in Swift bekijken. Na het toevoegen van het .mlpackage-bestand aan het Xcode-project (door slepen of via Swift Package Manager), genereert Xcode automatisch de modelklasse in Swift, inclusief getypeerde invoer en uitvoer. De ontwikkelaar hoeft de invoergegevens niet handmatig te parseren — de gegenereerde klasse accepteert UIImage, MLMultiArray, String of andere typen, afhankelijk van de metadata van het model.

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

Foutafhandeling en fallback

Bij Core ML-integratie moet foutafhandeling worden voorzien: het model kan mogelijk niet laden vanwege incompatibiliteit met het apparaat (te oude iOS-versie), onvoldoende geheugen of beschadiging van het modelbestand. Het wordt aanbevolen om fallback-logica te implementeren: als het model niet laadt in de gekwantiseerde Int8-indeling, laad dan de Float16-versie, en als die ook niet laadt — Float32. Volgens Apple Crash Analytics wordt meer dan 5% van de crashes van ML-apps veroorzaakt door onjuist laden van het model.

Core ML vs Create ML: wat is het verschil

Core ML en Create ML zijn twee complementaire tools van het Apple ML-ecosysteem. Core ML is verantwoordelijk voor het uitvoeren van modellen op het apparaat (inferentie), terwijl Create ML verantwoordelijk is voor het trainen van modellen (training). Modellen gemaakt in Create ML worden geëxporteerd naar het Core ML-formaat (.mlpackage) voor latere integratie in apps. Als we een analogie trekken met webontwikkeling, is Core ML de browser (uitvoering) en Create ML de IDE voor het schrijven van code (training).

ParameterCore MLCreate ML
DoelModellen uitvoeren (inferentie)Modellen trainen (training)
PlatformiOS, iPadOS, macOS, watchOS, tvOSmacOS (alleen)
Formaat.mlpackage (verbruikt).mlpackage (maakt)
CodeSwift / Objective-C APIUI (Xcode) of Swift API
GebruikerApp-ontwikkelaarOntwikkelaar / Data scientist

Veelgestelde vragen

Wat is Core ML?

Core ML — is het machine learning-framework van Apple voor het uitvoeren van vooraf getrainde ML-modellen op iOS-, iPadOS-, macOS-, watchOS- en tvOS-apparaten. Het ondersteunt neurale netwerken, beslissingsbomen en regressies, waarbij automatisch de optimale rekenaar (Neural Engine, GPU of CPU) wordt geselecteerd.

Waarin verschilt Core ML van TensorFlow?

TensorFlow — is een universeel framework voor het trainen en uitvoeren van modellen op servers en mobiele apparaten. Core ML — is een gespecialiseerde engine voor het uitvoeren (niet trainen) van modellen uitsluitend op Apple-apparaten met maximale prestaties door optimalisatie voor specifieke hardware (ANE, GPU, Metal). TensorFlow Mobile wordt niet meer ondersteund op iOS — Apple beveelt Core ML aan voor alle ML-taken op zijn platforms.

Hoe converteer ik een PyTorch-model naar Core ML?

Conversie wordt uitgevoerd met de coremltools-bibliotheek in Python: exporteer het PyTorch-model naar TorchScript (torch.jit.trace) en gebruik vervolgens ct.converters.pytorch.convert() om .mlpackage te maken. coremltools wijst PyTorch-lagen automatisch toe aan ondersteunde Core ML-lagen en optimaliseert de graaf voor ANE.

Werkt Core ML op alle iPhones?

Core ML werkt op alle iPhones met iOS 11 en nieuwer. De prestaties zijn echter afhankelijk van de hardware: iPhone 5s/6 — alleen CPU (langzame inferentie), iPhone 8/X — GPU (Metal), iPhone Xs en nieuwer — Neural Engine (maximale prestaties tot 15.8 TOPS op A17 Pro). Voor de beste prestaties wordt aanbevolen een minimale iOS 12+-versie op te geven.

Welk formaat hebben Core ML-modellen?

Het moderne formaat — .mlpackage (een map met het model, metadata en beschrijving van in- en uitvoer). Het verouderde formaat — .mlmodel (een enkel binair bestand). Xcode converteert .mlmodel automatisch naar .mlpackage tijdens het compileren, maar voor nieuwe projecten wordt direct gebruik van .mlpackage aanbevolen.

Samenvatting

  • Core ML — het standaard Apple-framework voor on-device machine learning, werkend op alle platformen van het ecosysteem.
  • Ondersteunt conversie uit TensorFlow, PyTorch, Keras en ONNX via de coremltools-bibliotheek in Python.
  • Inferentie wordt uitgevoerd op Neural Engine (iPhone Xs+), GPU (Metal) of CPU met automatische selectie van de rekenaar.
  • Kwantisatie naar Float16 en Int8 verkleint de modelgrootte met 2-4 keer met minimaal nauwkeurigheidsverlies.
  • Create ML genereert modellen voor Core ML en Core ML voert ze alleen uit — dit zijn verschillende tools.
  • Het .mlpackage-formaat heeft het verouderde .mlmodel vervangen en biedt versiebeheer en metadata in JSON.
  • De Core ML Profiler in Xcode maakt het mogelijk knelpunten in het model te identificeren en te optimaliseren door laagvervanging.

Vi utvecklar en mobil applikation nyckelfärdigt

IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.

Diskutera projektet

Läs också