Core ML: czym jest, architektura frameworku i integracja modeli

Autor: IT Sectr Opublikowano: 2026-07-17 Czas czytania: 10 min

Core ML — to framework uczenia maszynowego od Apple, umożliwiający integrację wstępnie wytrenowanych modeli ML bezpośrednio w aplikacjach iOS, iPadOS, macOS, watchOS i tvOS. Framework wspiera sieci neuronowe, drzewa decyzyjne, regresje liniowe i metody ensemble, a także konwersję modeli z TensorFlow, PyTorch, Keras i ONNX do własnego formatu Apple. Według Apple Machine Learning Research (2025), Core ML wykonuje inferencję w całości na urządzeniu, zapewniając poufność danych i opóźnienie poniżej 10 milisekund dla większości modeli.

Najważniejsze

  • Core ML — zastrzeżony framework Apple do wykonywania modeli ML na urządzeniu bez przetwarzania serwerowego.
  • Obsługuje konwersję modeli z TensorFlow, PyTorch, Keras, ONNX i innych popularnych formatów.
  • Inferencja wykonywana jest na Neural Engine, GPU lub CPU z automatycznym wyborem optymalnego silnika obliczeniowego.
  • Framework obejmuje optymalizacje: kwantyzacja (Float16, Int8), pruning, łączenie warstw w celu przyspieszenia.
  • Core ML 5 (2024) dodał obsługę pakietów .mlpackage, dynamicznych sieci neuronowych i uczenia nadzorowanego na urządzeniu.

Czym jest Core ML?

Core ML — to kluczowy komponent ekosystemu uczenia maszynowego Apple, zaprezentowany na WWDC 2017. Przed Core ML programiści iOS używali bibliotek stron trzecich (TensorFlow Mobile, Caffe2) lub własnych rozwiązań do uruchamiania modeli ML na urządzeniu. Core ML zapewnił jednolity, ujednolicony interfejs dla wszystkich typów modeli — od klasycznych regresji po głębokie sieci neuronowe — i przejął niskopoziomową optymalizację pod konkretne urządzenie.

Historia rozwoju

Pierwsza wersja Core ML (2017) obsługiwała tylko modele statyczne o stałym rozmiarze danych wejściowych. Core ML 2 (2018) dodał obsługę batch prediction i aktualizacji modeli „na gorąco”. Core ML 3 (2019) przyniósł uczenie na urządzeniu i obsługę dziesiątków nowych warstw sieci neuronowych. Core ML 4 (2021) wprowadził obsługę modeli z wieloma wyjściami i ulepszone przetwarzanie obrazów. Core ML 5 (2024) dodał obsługę dynamicznych sieci neuronowych i uczenia nadzorowanego na urządzeniu z wykorzystaniem nowych warstw ML.

On-Device ML: zalety

Wykonywanie uczenia maszynowego na urządzeniu daje trzy kluczowe zalety: poufność — dane nie opuszczają urządzenia (spełnia wymagania GDPR i HIPAA), szybkość — inferencja wykonywana jest w milisekundach bez opóźnienia na transmisję danych przez sieć, dostępność offline — model działa bez połączenia z internetem. Według Apple Privacy Report (2025), ponad 90% inferencji ML na platformach Apple wykonywanych jest na urządzeniu dzięki Core ML.

Architektura Core ML i silniki obliczeniowe

Architektura Core ML jest zbudowana na zasadzie wielowarstwowej: na górnym poziomie — API dla programisty (MLModel, MLFeatureProvider, MLPredictionOptions), na środkowym — model w formacie .mlpackage, na dolnym — silniki obliczeniowe: Apple Neural Engine (ANE), GPU (Metal Shaders) i CPU (BNNS, Accelerate framework). Core ML automatycznie wybiera najlepszy silnik w zależności od modelu i sprzętu urządzenia.

SilnikUrządzeniaWydajność
Neural EngineiPhone Xs+, iPad A12+, Mac M1+Maksymalna (TOPS)
GPU (Metal)Wszystkie urządzenia AppleWysoka (obliczenia równoległe)
CPU (BNNS)Wszystkie urządzenia ApplePodstawowa (zgodność)

Apple Neural Engine

Neural Engine (ANE) — to wyspecjalizowany neuroprocesor wbudowany w chipy Apple A12+ i M1+. ANE jest zoptymalizowany do wykonywania operacji konwolucyjnych sieci neuronowych (CNN) i mnożenia macierzy z wydajnością do 15.8 TOPS na A17 Pro i 38 TOPS na M4. Core ML automatycznie określa, czy model można wykonać na ANE, a jeśli tak — ładuje go tam. Jeśli model zawiera operacje nieobsługiwane przez ANE, Core ML rozdziela obliczenia między GPU a CPU.

Metal Performance Shaders

Do obliczeń na GPU Core ML używa Metal Performance Shaders Graph (MPSGraph), frameworku do budowania i wykonywania grafów obliczeniowych na GPU. MPSGraph pobiera graf sieci neuronowej z Core ML i kompiluje go do Metal Shaders, zoptymalizowanych pod konkretną architekturę GPU (7-rdzeniowy A17 GPU lub 40-rdzeniowy M4 Ultra GPU). Automatyczne optymalizacje MPSGraph obejmują łączenie warstw, eliminację zbędnych operacji i wybór optymalnego formatu danych.

Obsługiwane typy modeli i formaty

Core ML obsługuje wszystkie główne typy modeli uczenia maszynowego, podzielone na trzy kategorie: sieci neuronowe (konwolucyjne CNN, rekurencyjne RNN/LSTM, transformery), modele ensemble (Random Forest, Gradient Boosting, XGBoost, Decision Trees) i modele regresyjne (regresja liniowa, SVM, CRF). Każdy typ modelu ma swój podprotokół MLModelType, a Core ML automatycznie wybiera odpowiedni silnik i format wykonania.

Obsługiwane warstwy sieci neuronowych

Core ML obsługuje ponad 150 typów warstw sieci neuronowych: Convolution (1D/2D/3D), BatchNormalization, Pooling (Max/Average), Activation (ReLU, Sigmoid, Tanh, LeakyReLU, PReLU), Recurrent (LSTM/GRU/SimpleRNN), Transformers (MultiHeadAttention, LayerNorm), warstwy specyficzne dla Metal. Dla nieobsługiwanych warstw Core ML zapewnia mechanizm custom layer — możliwość napisania implementacji warstwy w Metal Shading Language lub 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)

Formaty plików modeli

Do 2021 roku Core ML używał formatu .mlmodel — pliku binarnego zawierającego wszystkie wagi i metadane modelu. Od Xcode 13 i Core ML 4, Apple wprowadziła nowy format .mlpackage — strukturę pakietową opartą na katalogu, zawierającą model, metadane, opis wejść/wyjść oraz pliki pre- i post-processingu w formacie JSON. mlpackage obsługuje wersjonowanie git, co ułatwia pracę zespołową. Konwersja .mlmodel do .mlpackage jest wykonywana przez Xcode Model Compiler lub skrypt coremltools w Pythonie.

Konwersja modeli do Core ML

Konwersja modeli z frameworków stron trzecich do Core ML jest wykonywana za pomocą biblioteki coremltools w Pythonie. coremltools obsługuje import modeli z TensorFlow 1.x/2.x (SavedModel, PB, HDF5), PyTorch (TorchScript, modele traced/scripted), Keras (H5), ONNX oraz utworzonych za pomocą Create ML. Standardowy potok konwersji obejmuje trzy kroki: załadowanie modelu w oryginalnym formacie, konwersję do MIL (Model Intermediate Language) — wewnętrznej reprezentacji Core ML, i eksport do .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")

Weryfikacja modelu po konwersji

Po konwersji należy sprawdzić dokładność modelu, porównując predykcje oryginalnego modelu i przekonwertowanego modelu Core ML na tych samych danych. Dopuszczalna różnica — nie więcej niż 1e-3 (0,1%) dla Float32 i 1e-2 (1%) dla Float16/Int8. coremltools udostępnia narzędzie ct.utils.compare_models() do automatycznego porównania. Jeśli różnica przekracza normę, problem może leżeć w nieobsługiwanych operacjach — należy je zastąpić custom layers lub uprościć model.

Optymalizacja wydajności Core ML

Optymalizacja modelu Core ML to proces zmniejszania rozmiaru modelu i zwiększania szybkości inferencji bez znaczącej utraty dokładności. Apple udostępnia kilka narzędzi optymalizacji wbudowanych w coremltools i Xcode: kwantyzacja (zmniejszenie precyzji wag), pruning (usuwanie mało znaczących neuronów), paleontologia (usuwanie zbędnych warstw) i łączenie warstw (fusion) w celu zmniejszenia grafu obliczeniowego.

Kwantyzacja do Float16 i Int8

Kwantyzacja zmniejsza rozmiar modelu około 2 razy (Float16) lub 4 razy (Int8) w porównaniu do Float32. Core ML obsługuje trzy tryby kwantyzacji: kwantyzacja po treningu (PTQ — Post-Training Quantization) z zestawem kalibracyjnym, podczas konwersji przez coremltools oraz uczenie z uwzględnieniem kwantyzacji (QAT). Dla większości modeli wizji komputerowej PTQ do Float16 daje stratę dokładności poniżej 0,5% przy podwojeniu szybkości inferencji.

Profilowanie modelu w Xcode

Xcode udostępnia narzędzie Core ML Model Profiler, umożliwiające pomiar wydajności modelu na różnych urządzeniach w symulatorze lub na rzeczywistym urządzeniu. Profiler pokazuje czas wykonania każdej warstwy, obciążenie silnika (ANE/GPU/CPU), szczytowe zużycie pamięci i wąskie gardła modelu. Według Apple Performance Optimization Guide, ponad 80% modeli ma co najmniej jedną warstwę działającą znacznie wolniej od pozostałych (anomalia warstwy), którą można zoptymalizować przez wymianę lub łączenie.

Praktyczny przykład integracji Core ML

Rozwaźmy integrację wytrenowanego modelu Core ML w aplikacji iOS w języku Swift. Po dodaniu pliku .mlpackage do projektu Xcode (przeciągnięcie lub przez Swift Package Manager), Xcode automatycznie generuje klasę modelu w Swift, zawierającą typowane wejścia i wyjścia. Programista nie musi ręcznie parsować danych wejściowych — wygenerowana klasa przyjmuje UIImage, MLMultiArray, String lub inne typy w zależności od metadanych modelu.

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

Obsługa błędów i fallback

Podczas integracji Core ML należy przewidzieć obsługę błędów: model może nie załadować się z powodu niezgodności z urządzeniem (zbyt stara wersja iOS), braku pamięci lub uszkodzenia pliku modelu. Zaleca się zaimplementowanie logiki fallback: jeśli model nie załadował się w skwantowanym formacie Int8, załaduj wersję Float16, a jeśli i ona się nie załaduje — Float32. Według Apple Crash Analytics, ponad 5% awarii aplikacji ML jest spowodowanych nieprawidłowym ładowaniem modelu.

Core ML vs Create ML: jaka jest różnica

Core ML i Create ML — to dwa uzupełniające się narzędzia ekosystemu Apple ML. Core ML odpowiada za wykonywanie modeli na urządzeniu (inferencja), podczas gdy Create ML — za uczenie modeli (trenowanie). Modele utworzone w Create ML są eksportowane właśnie do formatu Core ML (.mlpackage) w celu późniejszej integracji z aplikacjami. Jeśli porównać do programowania webowego, Core ML to przeglądarka (wykonywanie), a Create ML to IDE do pisania kodu (uczenie).

ParametrCore MLCreate ML
PrzeznaczenieWykonywanie modeli (inferencja)Uczenie modeli (trenowanie)
PlatformaiOS, iPadOS, macOS, watchOS, tvOSmacOS (tylko)
Format.mlpackage (konsumuje).mlpackage (tworzy)
KodSwift / Objective-C APIUI (Xcode) lub Swift API
UżytkownikProgramista aplikacjiProgramista / Data scientist

Często zadawane pytania

Czym jest Core ML?

Core ML — to framework uczenia maszynowego od Apple do wykonywania wstępnie wytrenowanych modeli ML na urządzeniach iOS, iPadOS, macOS, watchOS i tvOS. Obsługuje sieci neuronowe, drzewa decyzyjne i regresje, automatycznie wybierając optymalny silnik obliczeniowy (Neural Engine, GPU lub CPU).

Czym różni się Core ML od TensorFlow?

TensorFlow — to uniwersalny framework do uczenia i wykonywania modeli na serwerach i urządzeniach mobilnych. Core ML — to wyspecjalizowany silnik do wykonywania (nie uczenia) modeli wyłącznie na urządzeniach Apple z maksymalną wydajnością dzięki optymalizacji pod konkretny sprzęt (ANE, GPU, Metal). TensorFlow Mobile nie jest już wspierany na iOS — Apple zaleca Core ML dla wszystkich zadań ML na swoich platformach.

Jak skonwertować model PyTorch do Core ML?

Konwersja jest wykonywana za pomocą biblioteki coremltools w Pythonie: wyeksportuj model PyTorch do TorchScript (torch.jit.trace), następnie użyj ct.converters.pytorch.convert() do utworzenia .mlpackage. coremltools automatycznie mapuje warstwy PyTorch na obsługiwane warstwy Core ML i optymalizuje graf dla ANE.

Czy Core ML działa na wszystkich iPhone?

Core ML działa na wszystkich iPhone z iOS 11 i nowszym. Jednak wydajność zależy od sprzętu: iPhone 5s/6 — tylko CPU (wolna inferencja), iPhone 8/X — GPU (Metal), iPhone Xs i nowsze — Neural Engine (maksymalna wydajność do 15,8 TOPS na A17 Pro). Aby osiągnąć najlepszą wydajność, zaleca się określenie minimalnej wersji iOS 12+.

Jaki format mają modele Core ML?

Nowoczesny format — .mlpackage (katalog zawierający model, metadane i opis wejść/wyjść). Przestarzały format — .mlmodel (pojedynczy plik binarny). Xcode automatycznie konwertuje .mlmodel na .mlpackage podczas kompilacji, ale dla nowych projektów zaleca się bezpośrednie używanie .mlpackage.

Podsumowanie

  • Core ML — standardowy framework Apple do uczenia maszynowego na urządzeniu, działający na wszystkich platformach ekosystemu.
  • Obsługuje konwersję z TensorFlow, PyTorch, Keras i ONNX przez bibliotekę coremltools w Pythonie.
  • Inferencja wykonywana jest na Neural Engine (iPhone Xs+), GPU (Metal) lub CPU z automatycznym wyborem silnika.
  • Kwantyzacja do Float16 i Int8 zmniejsza rozmiar modelu 2-4 razy z minimalną stratą dokładności.
  • Create ML generuje modele dla Core ML, a sam Core ML tylko je wykonuje — to różne narzędzia.
  • Format .mlpackage zastąpił przestarzały .mlmodel, zapewniając wersjonowanie i metadane w JSON.
  • Profiler Core ML w Xcode pozwala zidentyfikować wąskie gardła modelu i zoptymalizować je przez wymianę warstw.

Opracujemy aplikację mobilną pod klucz

IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.

Omów projekt

Przeczytaj również