Kapitel 1
🧭Überblick & Architektur
Core ML ist Apples Framework, um trainierte Modelle auf dem Gerät auszuführen – seit iOS 11 und macOS 10.13. Es liefert eine einheitliche Modelldarstellung, verteilt die Arbeit auf CPU, GPU und Neural Engine und ist Grundlage für Vision, Natural Language, Speech und Sound Analysis. 📎 Core ML (Framework-Übersicht)
🏗️Wo Core ML sitzt
Schichtenmodell nach der Apple-Doku. Kästen anklicken; unten die Recheneinheiten umschalten.
Werkzeuge (Mac)
⟶ liefern ein Modell (.mlpackage/.mlmodel) an Core ML
MLModelConfiguration.computeUnits
Das System wählt die beste Recheneinheit – inklusive Neural Engine, falls vorhanden. Standard. Python:
ct.ComputeUnit.ALL · ab iOS 12 · macOS 10.14Ausgewählt
Core ML
Einheitliche Modelldarstellung, Laden, Kompilieren, Vorhersagen, On-Device-Training. Seit iOS 11 / macOS 10.13.
Belege: 📎 Core ML (Framework-Übersicht)
Tipp: Kästen im Diagramm anklicken.
📦Drei Dateiformate – und wie sie zusammenhängen
coremltools / Create ML Xcode-Build oder MLModel.compileModel(at:)
│ │
▼ ▼
┌──────────────────────┐ ┌─────────────────────────┐ ┌──────────────────────────────┐
│ .mlmodel (Protobuf) │ ──▶ │ .mlpackage (Verzeichnis)│ ─▶ │ .mlmodelc (kompiliert) │
│ NeuralNetwork, Bäume │ │ ML Program: MIL + weights│ │ model.mil · weights/ · JSON │
│ ab iOS 11 │ │ ab iOS 15 / macOS 12 │ │ das lädt die App zur Laufzeit │
└──────────────────────┘ └─────────────────────────┘ └──────────────────────────────┘
„Update to Model Package“ in Xcode.mlmodel
Eine Protobuf-Datei – Architektur und Gewichte zusammen. Klassischer Typ „NeuralNetwork“ (Schichten).
- • NeuralNetwork: ab iOS 11 / macOS 10.13, Satz an Schichten eingefroren, nur noch Wartung. 📎 Source and Conversion Formats
- • Mit coremltools ≥ 7.0 nur noch auf Wunsch: minimum_deployment_target=ct.target.iOS14 oder älter. 📎 Source and Conversion Formats
- • Auch Bäume, SVMs, lineare Modelle (z. B. aus scikit-learn) liegen in diesem Format vor. 📎 Comparing ML Programs and Neural Net…📎 What Is Core ML Tools?
.mlpackage
Ein Verzeichnis (Paket) – Programm und Gewichte getrennt, Metadaten bearbeitbar. Pflicht für ML Programs (MIL).
- • ML Program: ab iOS 15 / macOS 12 / watchOS 8 / tvOS 15; Standard von ct.convert seit coremltools 7.0. 📎 Source and Conversion Formats
- • Gewichte werden außerhalb des Protobufs gespeichert (weights/weight.bin) – deshalb nur als Paket speicherbar. 📎 Comparing ML Programs and Neural Net…📎 Convert Models to ML Programs
- • Xcode kann alte .mlmodel-Dateien per „Update to Model Package“ umwandeln. 📎 Updating a Model File to a Model Pac…
.mlmodelc
Das kompilierte, gerätetaugliche Modell (Verzeichnis). Das lädt Core ML zur Laufzeit wirklich.
- • Xcode kompiliert beim Build automatisch und legt das Ergebnis ins App-Bundle. 📎 Integrating a Core ML Model into You…
- • Zur Laufzeit: MLModel.compileModel(at:) – Ergebnis zunächst temporär, für Wiederverwendung dauerhaft ablegen. 📎 Downloading and Compiling a Model on…📎 MLModel.compileModel(at:) async
- • Die synchrone Variante compileModel(at:) (ab iOS 11) führt die aktuelle Doku mit Deprecation-Angabe 27.2; die async-Variante gibt es ab iOS 16 / macOS 13. 📎 MLModel.compileModel(at:) (synchron)📎 MLModel.compileModel(at:) async
- • Bei ML Programs enthält das .mlmodelc eine lesbare model.mil (Textform des Programms); Kommandozeile: xcrun coremlcompiler compile model.mlpackage . 📎 Comparing ML Programs and Neural Net…
🔬Blick in ein echtes .mlpackage
So sieht das konvertierte Lehrmodell (FP16) auf der Platte aus – Größen in Bytes aus der echten Konvertierung.
✔ echte coremltools-Ausgabe
| Datei | Bytes | Inhalt |
|---|---|---|
| DigitMLP_fp16.mlpackage/Manifest.json | 617 | Verzeichnis der Paket-Einträge |
| DigitMLP_fp16.mlpackage/Data/com.apple.CoreML/model.mlmodel | 3.105 | Programm (MIL als Protobuf) + Beschreibung |
| DigitMLP_fp16.mlpackage/Data/com.apple.CoreML/weights/weight.bin | 5.140 | alle Gewichte (FP16) |
FP32-Variante: weight.bin 9.984 B, ganzes Paket 12.956 B · FP16: 5.140 B bzw. 8.862 B.
Shell
Kompilieren und model.mil ansehen
xcrun coremlcompiler compile DigitMLP.mlpackage .
cat DigitMLP.mlmodelc/model.mil # Textform des ML Programs🆚NeuralNetwork vs. ML Program
| NeuralNetwork | ML Program | |
|---|---|---|
| Darstellung | Schichten eines Rechengraphen | Operationen in Programmform (MIL), Funktion main mit Blöcken |
| Gewichte | in den Schichten, im Protobuf | getrennt serialisiert (weight.bin) |
| Zwischentypen | implizit | explizit typisiert (fp16/fp32 je Tensor) |
| GPU-Genauigkeit | nur FP16 | FP16 und FP32 (Metal Performance Shaders Graph) |
| Mindest-OS | iOS 11 · macOS 10.13 | iOS 15 · macOS 12 |
| Weiterentwicklung | eingefroren, nur Wartung | alle neuen Features und Performance-Arbeit |
| On-Device-Update | ja (MLUpdateTask) | nicht unterstützt |
💡
Ausblick: Core AI (iOS/macOS 27)
Apple dokumentiert seit iOS 27 / macOS 27 zusätzlich das Framework Core AI für aktuelle Modellarchitekturen – mit eigenem Format .aimodel und dem Konverter coreai-torch. Für andere Modelltypen (z. B. Entscheidungsbäume, tabellarische Merkmale) verweist Apple dort weiter auf Core ML. Diese App behandelt ausschließlich Core ML und coremltools. 📎 Core AI (neues Framework)