Core ML — framework uczenia maszynowego od Apple, zoptymalizowany do uruchamiania modeli ML bezpośrednio na urządzeniach iOS, macOS, watchOS i tvOS. W przeciwieństwie do chmurowych serwisów ML, Core ML wykorzystuje sprzętowe akceleratory Apple: Neural Engine, GPU i CPU, zapewniając minimalne opóźnienie podczas przetwarzania danych. Według Apple Core ML Documentation (2026), framework wspiera modele PyTorch, TensorFlow i Create ML w jednolitym formacie .mlpackage ze średnim czasem inferencji 5–50 ms.
Najważniejsze
Core ML — to framework uczenia maszynowego, przedstawiony przez Apple na WWDC 2017 jako część ekosystemu deweloperskiego dla iPhone, iPad, Mac, Apple Watch i Apple TV. Core ML zapewnia środowisko uruchomieniowe do wykonywania modeli ML na urządzeniu, abstrahując dewelopera od szczegółów optymalizacji sprzętowej. Framework automatycznie wybiera najlepszy silnik obliczeniowy — Neural Engine na chipach A12+, GPU lub CPU — dla każdej operacji modelu.
Kluczowa zaleta Core ML — głęboka integracja z Apple Silicon. Operacje sieci neuronowych są wykonywane na dedykowanym Neural Engine, który nie obciąża głównych rdzeni procesora. Według Apple (WWDC 2025), modele Core ML działają 6 razy szybciej w porównaniu z TensorFlow Lite na podobnych urządzeniach Android.
Core ML wspiera szeroki zakres zadań uczenia maszynowego: klasyfikację obrazów, wykrywanie obiektów, segmentację semantyczną, przetwarzanie języka naturalnego, analizę dźwięku i dane tabelaryczne. Framework współpracuje z modelami różnych typów: sieci neuronowe (konwolucyjne, rekurencyjne, transformery), zespoły drzew, regresje liniowe i procesy gaussowskie.
Core ML przyjmuje na wejściu wytrenowany model w formacie .mlpackage, kompiluje go do zoptymalizowanego kodu maszynowego dla konkretnego urządzenia i uruchamia inferencję przez jednolity API. Cały pipeline — od załadowania modelu do uzyskania wyniku — zajmuje 3–5 linii kodu w Swift.
.mlpackage — to format kontenerowy, wprowadzony przez Apple w 2020 roku jako zamiennik przestarzałego .mlmodel. Pakiet stanowi katalog z manifestem JSON, plikiem modelu w binarnym formacie MLProgram, metadanymi (autor, wersja, opis) i zasobami, takimi jak etykiety klas. Według Apple, .mlpackage zmniejsza rozmiar modelu o 30–50% w porównaniu z .mlmodel dzięki optymalizacji wag.
Apple Neural Engine (ANE) — dedykowany neuroprocesor wbudowany w chipy Apple począwszy od A12 Bionic (2018). ANE przetwarza operacje macierzowe dziesiątki razy wydajniej niż CPU przy tym samym poborze mocy. Wydajność ANE wzrosła z 5 TOPS w A12 do 35 TOPS w M4 Ultra (2025), co pozwala uruchamiać modele z miliardami parametrów. ANE jest używany automatycznie dla wszystkich modeli Core ML z architekturą sieci neuronowej.
Ważna cecha Core ML — wsparcie kwantyzacji modeli do FP16 i INT8 bez utraty dokładności. Kwantyzacja zmniejsza rozmiar modelu 2–4 razy i przyspiesza inferencję o 40–60% na ANE. Apple udostępnia narzędzie Xcode Model Quantization do automatycznego doboru optymalnej precyzji: deweloper ładuje model, określa dopuszczalną utratę jakości (zwykle 0.1–0.5%), a Xcode dobiera najlepszy format reprezentacji wag.
| Chip | TOPS (ANE) | Inferencja ResNet-50 | Rok |
|---|---|---|---|
| A12 Bionic | 5 | 18 ms | 2018 |
| A14 Bionic | 11 | 9 ms | 2020 |
| M1 Max | 22 | 4 ms | 2021 |
| M4 Ultra | 35 | 2 ms | 2025 |
Większość modeli ML jest tworzona w PyTorch lub TensorFlow i wymaga konwersji do formatu .mlpackage do użycia w Core ML. Apple udostępnia narzędzie coremltools — pakiet Python do konwersji, optymalizacji i walidacji modeli.
coremltools — to oficjalne narzędzie Apple do konwersji modeli ML. Wspiera import z PyTorch (przez torch.onnx lub bezpośrednio), TensorFlow (SavedModel, H5, Frozen Graph) i ONNX. Po konwersji można włączyć kwantyzację FP16 lub INT8, co zmniejsza rozmiar modelu 2–4 razy bez znaczącej utraty dokładności.
Rozpatrzmy konwersję wytrenowanego modelu PyTorch do formatu Core ML z użyciem coremltools wersji 8.0. Proces zajmuje 2–3 kroki w Pythonie.
import torch
import coremltools as ct
# Wczytywanie wytrenowanego modelu PyTorch
model = torch.load('model.pth')
model.eval()
# Śledzenie modelu z przykładowym wejściem
example_input = torch.randn(1, 3, 224, 224)
traced_model = torch.jit.trace(model, example_input)
# Konwersja do Core ML .mlpackage
mlmodel = ct.convert(
traced_model,
convert_to='mlprogram',
inputs=[ct.TensorType(shape=(1, 3, 224, 224))]
)
mlmodel.save('Model.mlpackage')
Kod ładuje wytrenowany model PyTorch, wykonuje JIT-tracing z przykładowym wejściem i konwertuje go do formatu mlprogram (binarny format Core ML). Otrzymany .mlpackage można przeciągnąć do Xcode i od razu użyć w kodzie Swift.
Po konwersji modelu jego integracja w aplikacji iOS w Swift odbywa się w kilku linijkach. Xcode automatycznie generuje klasę Swift dla modelu na podstawie metadanych .mlpackage.
Rozpatrzmy przykład klasyfikacji obrazu za pomocą Core ML i frameworku Vision. Vision automatycznie przekształca obraz do wymaganego rozmiaru i formatu pikseli.
import CoreML
import Vision
// Wczytywanie modelu Core ML
guard let model = try? VNCoreMLModel(
for: MobileNetV2.configuration.model
) else { return }
// Tworzenie VNCoreMLRequest
let request = VNCoreMLRequest(model: model) { request, error in
guard let results = request.results
as? [VNClassificationObservation]
else { return }
// Wypisanie top-3 przewidywań
for result in results.prefix(3) {
print("\(result.identifier):
\(result.confidence)")
}
}
// Uruchomienie przetwarzania obrazu
let handler = VNImageRequestHandler(
url: imageURL
)
try? handler.perform([request])
Kod Swift ładuje model MobileNetV2 przez framework Vision, tworzy żądanie klasyfikacji i przetwarza wynik — tablicę obiektów VNClassificationObservation z etykietami klas i pewnością w procentach. Cały pipeline od załadowania do uzyskania wyniku zajmuje 5–50 ms w zależności od modelu.
W celu optymalizacji czasu uruchamiania Core ML kompiluje model przy pierwszym użyciu. Wstępna kompilacja (precompiled model) skraca zimny start z 2–3 sekund do 100–200 ms. Zaleca się wykonywanie kompilacji modelu na etapie budowania w Xcode, a nie przy pierwszym uruchomieniu aplikacji. Jest to szczególnie ważne dla aplikacji z wieloma modelami ML — na przykład detekcja obiektów + klasyfikacja + NLP.
Core ML i ML Kit rozwiązują podobne zadania on-device ML, ale są ukierunkowane na różne ekosystemy. Core ML jest głęboko zintegrowany z Apple Silicon i wspiera tylko platformy Apple. ML Kit od Google to wieloplatformowe rozwiązanie dla Android i iOS.
| Cecha | Core ML | ML Kit |
|---|---|---|
| Platformy | iOS, macOS, watchOS, tvOS | Android, iOS |
| Gotowe API | Przez Vision, Natural Language | 15+ wbudowanych API |
| Niestandardowe modele | .mlpackage (PyTorch, TF) | TFLite (przez adapter) |
| Przyspieszenie sprzętowe | ANE, GPU, CPU | GPU (Android), CPU |
| Łatwość startu | Wymaga konwersji modelu | Gotowe API bez Data Science |
| Wydajność | 2–50 ms (ANE) | 80–200 ms (CPU/GPU) |
Wybierz Core ML, jeśli Twój ekosystem to wyłącznie Apple i potrzebujesz maksymalnej wydajności przez ANE. Jeśli wymagana jest wieloplatformowość lub gotowe API bez konwersji — ML Kit będzie bardziej praktyczny.
W praktyce wiele projektów używa obu frameworków: na iOS Core ML dla wysokiej wydajności, a na Android — ML Kit lub TensorFlow Lite. Jeden model PyTorch jest konwertowany do .mlpackage dla Apple i do .tflite dla Android, co pozwala utrzymać tę samą jakość funkcji ML na obu platformach. Takie podejście wymaga nieco więcej wysiłku w DevOps, ale daje maksymalne pokrycie odbiorców.
Przy wyborze między Core ML a alternatywami uwzględnij koszt rozwoju: Core ML wymaga mniej kodu do integracji (3–5 linii Swift wobec 15–20 linii w TFLite), ale wymaga Mac i Xcode do budowania. ML Kit, przeciwnie, działa na każdej platformie, ale daje mniejszą wydajność na iOS z powodu braku dostępu do Apple Neural Engine.
Często zadawane pytania
iOS 11+ dla podstawowych modeli, iOS 14+ dla formatu .mlpackage. Do działania Apple Neural Engine wymagany jest chip A12 Bionic i nowsze. Core ML obsługuje wszystkie iPhone, iPad i Mac od 2017 roku.
Tak, przez narzędzie coremltools. Modele TensorFlow są konwertowane do .mlpackage z zachowaniem dokładności. Obsługiwane są formaty TensorFlow 2.x, SavedModel, H5 i Frozen Graph.
.mlpackage — nowoczesny format kontenerowy, stanowiący katalog z metadanymi, binarnym plikiem MLProgram i zasobami. Jest 2–3 razy bardziej kompaktowy niż stary .mlmodel i obsługuje kwantyzację.
Wszystkie obliczenia są wykonywane wyłącznie na urządzeniu. Core ML nie wysyła danych na serwer Apple. Framework działa w trybie lotniczym i nie wymaga połączenia z internetem do inferencji.
Swift — główny język do integracji Core ML w aplikacjach iOS/macOS. Python jest używany do konwersji modeli przez coremltools. Objective-C również jest obsługiwany dla wstecznej kompatybilności.
Podsumowanie
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.
Przeczytaj również