Apple-Core-AI-Integration#
coreai-core veröffentlicht Wheels für macosx_26_0_arm64 und manylinux_2_34_x86_64, sodass der Export auf Macs mit Apple Silicon und unter Linux x86_64 mit glibc 2.34 oder neuer ausgeführt werden kann. Das exportierte .aimodel läuft unter iOS 27 und macOS 27. Das Ultralytics-iOS-SDK (ab Version 8.9.15) und das Flutter-Plugin (ab Version 0.6.15) laden .aimodel-Assets auf iOS-27-Geräten optional; Core ML bleibt die Standardeinstellung.
Core AI ist Apples neues Framework, um neuronale Netze direkt auf Apple Silicon auszuführen. Es führt das Modellformat .aimodel, eine moderne Swift-Inferenz-API, Konvertierungswerkzeuge auf PyTorch-Basis, die Kompilierung vor der Ausführung, die Spezialisierung von Modellen sowie eigene Werkzeuge zum Debuggen und Profilieren ein.
Apple beschreibt Core AI als nächste Entwicklungsstufe für die Ausführung von KI direkt auf dem Gerät und als Inferenz-Framework hinter Apple Intelligence auf dem Gerät. Es wurde für aktuelle neuronale Netzwerkarchitekturen entwickelt – von kompakten Bildverarbeitungsmodellen bis hin zu großen generativen Modellen – und kann Aufgaben auf CPU, GPU und Apple Neural Engine (ANE) verteilen.
Core AI ist ein neuer Bereitstellungsweg und keine neue Bezeichnung für Core ML. Die Frameworks verwenden unterschiedliche Modellformate, Konvertierungswerkzeuge, Laufzeit-APIs und Integrationsmuster für Anwendungen.
Core AI und Core ML im Vergleich#
| Fähigkeit | Core AI | Core ML |
|---|---|---|
| Modellartefakt | .aimodel | .mlpackage oder .mlmodel |
| Ultralytics-Export | Verfügbar mit format=coreai | Verfügbar mit format=coreml |
| Apple-Laufzeit-API | AIModel, InferenceFunction und NDArray | MLModel, häufig über VNCoreMLModel und VNCoreMLRequest |
| Konvertierungsablauf | PyTorch torch.export über coreai-torch | TorchScript-Konvertierung über coremltools |
| Hauptanwendungsbereich | Moderne neuronale Netze und generative KI | Breite Bereitstellung maschinellen Lernens, einschließlich neuronaler und nicht neuronaler Modelle |
| Bildeinbindung | Anwendungen bereiten Tensoren vor oder verwenden Bilddeskriptoren und Puffer von Core AI | Direkte Integration mit dem Vision-Framework für Bildskalierung, Ausrichtung und Anfragen |
| Hardware | CPU, GPU und Apple Neural Engine | CPU, GPU und Apple Neural Engine |
| Modellvorbereitung | Spezialisierung bei der Installation oder der ersten Verwendung, mit optionaler Kompilierung vor der Ausführung | Kompilierung des Modells in Xcode oder auf dem Gerät |
| Benutzerdefinierte Operationen | Benutzerdefinierte Core-AI-Absenkungen und Metal-Kernels | Benutzerdefinierte Core-ML-Schichten und unterstützte MIL-Operationen |
| Verfügbarkeit für die Bereitstellung | Neue Generation der Apple-Betriebssysteme; derzeit Beta | Breite Unterstützung für vorhandene Apple-Betriebssysteme |
| Ultralytics-iOS- und Flutter-SDKs | Optional auf Geräten mit iOS 27 oder neuer | Vollständig unterstützt und standardmäßig aktiviert |
Core ML ist weiterhin die richtige Wahl, wenn eine Anwendung eine breite Geräteunterstützung, die Integration mit dem Vision-Framework oder Modelltypen wie Entscheidungsbäume und tabellarische Verarbeitungsketten benötigt. Apple unterstützt Core ML weiterhin und empfiehlt es Entwicklern für nicht neuronale Modelltypen.
Funktionsweise des Core-AI-Formats#
Der Core-AI-Erstellungsablauf beginnt mit einem PyTorch-Modell:
PyTorch model
↓ torch.export
ExportedProgram
↓ coreai-torch
Core AI program
↓ optimize and save
.aimodel
↓ specialize or compile ahead of time
Apple silicon executableApples Paket coreai-torch konvertiert ein torch.export.ExportedProgram, indem es PyTorch-ATen-Operationen in Core-AI-Operationen überführt. Nicht unterstützte Operationen lassen sich mit einer benutzerdefinierten Absenkung oder einem benutzerdefinierten Metal-Kernel implementieren.
Das resultierende .aimodel ist ein nicht spezialisiertes Modell-Asset. Wenn eine Anwendung das Modell vorbereitet, spezialisiert Core AI es für das Zielgerät. Anwendungen können dies bei der ersten Verwendung erledigen lassen, die Spezialisierung früher anfordern oder ein vorab kompiliertes Modell bereitstellen, um die anfängliche Ladezeit zu verkürzen.
In Swift laden Anwendungen das Asset mit dem Core-AI-Framework, wählen eine Inferenzfunktion aus, übergeben typisierte Eingaben vom Typ NDArray und erhalten benannte Ausgaben. Das unterscheidet sich davon, ein Core-ML-Modell in eine Vision-Anfrage einzubinden. Für Core AI ist daher eine Anwendungsumgebung erforderlich, die für .aimodel-Assets ausgelegt ist.
Implementierungsdetails findest du in Apples Dokumentation zu AIModel, Modellspezialisierung und Zwischenspeicherung sowie Kompilierung vor der Ausführung.
YOLO26-Modelle nach Core AI exportieren#
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
model.export(format="coreai") # erstellt „yolo26n.aimodel“
model.export(format="coreai", quantize=16) # FP16 asset
# Das exportierte Modell ausführen
coreai_model = YOLO("yolo26n.aimodel")
results = coreai_model("https://ultralytics.com/images/bus.jpg")Die vollständige Liste der Argumente findest du unter Exportmodus. Der Graph ist statisch: Er wird mit der an export übergebenen imgsz nachgebildet. Führe Vorhersagen daher mit derselben Größe aus. Die Ultralytics-Metadaten werden im eigenen metadata.json-Bereich des Assets gespeichert, sodass Klassennamen, Schrittweite und Aufgabe beim Hin- und Rückweg erhalten bleiben.
Den passenden Kopf wählen#
Mit nms=False exportiert YOLO26 seinen End-to-End-Kopf, der Erkennungen innerhalb des Graphen auswählt. Core AI verfügt über keine Top-k-Primitive, daher wird diese Auswahl in eine vollständige Sortierung umgewandelt. Dafür fällt an der Grenze der Apple-Neural-Engine-Partition ein fester Aufwand von etwa 1,7 ms an – unabhängig von max_det. Beim Export mit nms=None werden stattdessen die rohen Vorhersagen von (1, 84, 8400) ausgegeben; die Unterdrückung überlappender Erkennungen übernimmt dann der Prädiktor:
yolo export model=yolo26n.pt format=coreai nms=None quantize=16Auf einem iPhone 17 Pro mit iOS 27.0 benötigt YOLO26n bei 640 Pixeln 3,01 ms mit dem Kopf im Graphen und 1,28 ms ohne ihn (FP16, vorab kompiliert, drei ineinander verschachtelte Blöcke mit jeweils 50 Iterationen). In beiden Fällen erfolgt die Inferenz über YOLO(...). Verwende nms=False, wenn ein einzelner Graph-Aufruf fertige Erkennungen zurückgeben muss, oder behalte den Standardwert nms=None für eine externe NMS bei.
Unter iOS 27 oder macOS 27 würde eine Anwendung das exportierte Asset anschließend über Apples Core-AI-Swift-API laden und ausführen. Exportierte Assets verwenden den Einstiegspunkt main, erwarten eine einzelne Eingabe images mit der Form [batch, 3, imgsz, imgsz] und geben output0 zurück (Modelle zur Instanzsegmentierung geben zusätzlich output1 zurück):
import CoreAI
let modelURL = Bundle.main.url(forResource: "yolo26n", withExtension: "aimodel")!
let model = try await AIModel(contentsOf: modelURL)
guard let function = try model.loadFunction(named: "main") else {
throw AppError.missingInferenceFunction
}
let outputs = try await function.run(inputs: ["images": imageTensor])Im Gegensatz zum aktuellen Core-ML- und Vision-Ablauf führt der Core-AI-Pfad im Ultralytics-iOS-SDK die Letterbox-Vorverarbeitung und die Erstellung von NDArray selbst durch, liest dieselben Ultralytics-Metadaten aus dem metadata.json des Assets und verwendet die Core-ML-Ausgabedecoder erneut. Das Asset wird geladen, wenn eine Anwendung einen .aimodel-Pfad oder eine .aimodel.zip-URL übergibt. Aktuelle API-Details stellt Apple in der Dokumentation zum Core-AI-Framework und funktionierende Modellbeispiele im Repository mit Core-AI-Modellen bereit.
Gemessene Leistung#
End-to-End-Inferenz für ein einzelnes Bild mit YOLO26n FP16 (quantize=16), Core-ML- und Core-AI-Exporten mit dem standardmäßigen unverarbeiteten Kopf (nms=None) auf einem Mac mini mit Apple M4 (4 CPU-Kernen mit hoher und 6 mit hoher Energieeffizienz, 10-Core-GPU, 16-Core-Neural-Engine), 16 GB Arbeitsspeicher und macOS 27.0. Verwendet wurden ultralytics 8.4.168, coremltools 9.0 für die Core-ML-Inferenz sowie coreai-torch 0.4.3 mit coreai-core 1.0.0b3 für die Core-AI-Inferenz unter Python 3.13. Jede Zelle zeigt die Gesamtzeit (Vorverarbeitung + Inferenz + Nachverarbeitung) sowie darunter die Aufteilung nach Phasen.
| Modell | Aufgabe | Größe (Pixel) | Core ML CPUCPU_ONLY(ms) | Core ML CPU + ANE bevorzugtCPU_AND_NE(ms) | Core AI CPUcpu_only()(ms) | Core AI CPU + ANE bevorzugtneural_engine()(ms) |
|---|---|---|---|---|---|---|
| YOLO26n | Detect | 640 | 14.4 0.6 / 13.4 / 0.4 | 7.6 0.6 / 6.7 / 0.4 | 16.8 0.6 / 15.9 / 0.3 | 2.8 0.6 / 2.0 / 0.2 |
| YOLO26n-seg | Segment | 640 | 18.7 0.6 / 16.5 / 1.5 | 9.2 0.6 / 7.1 / 1.5 | 25.3 0.6 / 23.2 / 1.5 | 5.1 0.6 / 3.1 / 1.4 |
| YOLO26n-sem | Semantisch | 640 | 33.9 1.3 / 32.2 / 0.4 | 73.7 1.4 / 71.9 / 0.4 | 47.1 1.2 / 38.5 / 7.4 | 18.7 1.2 / 11.1 / 6.4 |
| YOLO26n-depth | Tiefe | 640 | 36.8 0.8 / 35.5 / 0.5 | 12.1 0.9 / 10.7 / 0.5 | 40.2 0.8 / 39.0 / 0.5 | 7.5 0.7 / 6.3 / 0.5 |
| YOLO26n-cls | Klassifizieren | 224 | 3.8 1.9 / 1.8 / 0.0 | 3.3 1.9 / 1.4 / 0.0 | 3.0 1.9 / 1.0 / 0.0 | 2.4 1.9 / 0.6 / 0.0 |
| YOLO26n-pose | Pose | 640 | 15.5 0.6 / 14.6 / 0.3 | 7.0 0.6 / 6.2 / 0.3 | 17.8 0.5 / 17.0 / 0.3 | 2.7 0.5 / 2.0 / 0.2 |
| YOLO26n-obb | OBB | 640 | 32.7 1.3 / 31.1 / 0.2 | 16.9 1.5 / 15.2 / 0.2 | 37.2 1.1 / 35.9 / 0.2 | 5.7 1.3 / 4.3 / 0.1 |
- Geschwindigkeitswerte sind Latenzen bei Einzelbild-Bursts: der Mittelwert aus 15 Aufrufen von
predictnach 3 Aufwärmaufrufen überbus.jpgmit der Ultralytics Python API, wobei jedes Modell und jede Recheneinheit in einem frischen Prozess ausgeführt wurde. Die Reihenfolge von CPU und Beschleuniger wechselte zwischen den Aufgaben innerhalb eines sequenziellen Durchlaufs. Core ML-Zeilen werden mitcoremltools.ComputeUnit.CPU_ONLYoderCPU_AND_NEgeladen; Core AI-Zeilen werden mitSpecializationOptions.cpu_only()oderSpecializationOptions.from_preferred_compute_unit_kind(ComputeUnitKind.neural_engine())spezialisiert, wobei jedes Framework die endgültige Zuweisung der Operationen steuert. - Detect, Segmentierung, Klassifizierung, Pose und OBB lieferten auf jeder Recheneinheit in beiden Formaten dieselben Vorhersagen. Das semantische FP16-Modell von Core ML läuft auf diesem Mac mit bevorzugter Neural Engine langsamer als ausschließlich auf der CPU, und die semantische Nachverarbeitung von Core AI benötigt 6.4 bis 7.4 ms gegenüber 0.4 ms bei Core ML.
- Vergleiche die Ergebnisse auf dem iPhone 17 Pro direkt auf dem Gerät in der CoreML-Integration.
Vorteile von Core AI#
Core AI bietet mehrere vielversprechende Vorteile für künftige Bereitstellungen von Ultralytics:
- Moderner PyTorch-Exportpfad: Die Konvertierung beginnt bei
torch.exportund bewahrt einen ausdrucksstärkeren PyTorch-Graphen als der Tracing-Workflow, den viele vorhandene Exportprogramme verwenden. - Fein abgestimmte Laufzeitsteuerung: Anwendungen können Spezialisierung, Caches für kompilierte Modelle, Inferenzfunktionen, Speicher und die Zuweisung von Rechenressourcen verwalten.
- Erweiterte Modellunterstützung: Zustandsbehaftete Ausführung, dynamische Formen, mehrere Funktionen in einem Artefakt und benutzerdefinierte Metal-Kernels sind für moderne Computer-Vision- und generative Architekturen ausgelegt.
- Dedizierte Entwicklerwerkzeuge: Mit dem Core AI Debugger lassen sich Graphen und Tensorwerte untersuchen und bis zum ursprünglichen Python-Code zurückverfolgen. Xcode und Instruments ermöglichen die Laufzeitprofilierung.
- Möglichkeiten für Zero-Copy: Core AI bietet Steuerungsmöglichkeiten für Speicher und Puffer, die Kopiervorgänge zwischen Kamera-, Grafik- und Inferenz-Workloads verringern sollen.
- Optimierung für Apple-Chips: Durch die Gerätespezialisierung kann Apple ein Modell für die CPU, GPU und Neural Engine optimieren, die auf dem jeweiligen Gerät verfügbar sind.
- Flexible Komprimierung: Apples Core AI Optimization-Tools unterstützen Quantisierung, Palettierung und Pruning, einschließlich Gewichtsformaten mit niedriger Bitbreite.
Diese Funktionen könnten besonders für künftige YOLO-Modelle mit dynamischer Ausführung, größeren multimodalen Komponenten oder benutzerdefinierten Operationen nützlich sein, die sich nicht ohne Weiteres auf vorhandene Core ML-Operationen abbilden lassen.
Aktuelle Nachteile und Einschränkungen#
Core AI ist derzeit kein Ersatz für den produktiven Core ML-Pfad:
- Neuere Betriebssysteme erforderlich: Das öffentliche Framework zielt auf die Generation iOS 27 und macOS 27 ab, während Core ML eine deutlich größere installierte Basis unterstützt.
- Beta-Software: Apples Core AI-Framework und Teile der Python-Werkzeugkette sind noch vorläufig und können sich vor den stabilen Veröffentlichungen ändern.
- Engere Exportumgebung:
coreai-torcherfordert derzeit Python 3.11 bis 3.14 sowie aktuelle PyTorch-Versionen. Das ist ein deutlich engerer Bereich als die von Ultralytics unterstützten Python- und PyTorch-Versionen. - Eingeschränkte Exportplattformen:
coreai-coreveröffentlicht nur die Wheelsmacosx_26_0_arm64undmanylinux_2_34_x86_64. Fürformat=coreaiist daher ein Mac mit Apple-Chip und macOS 26 oder neuer erforderlich oder x86_64 Linux mit glibc 2.34 oder neuer (zum Beispiel Ubuntu 22.04+). Für die Ausführung von.aimodelist weiterhin Apple-Hardware erforderlich. - In den Ultralytics SDKs optional, nicht standardmäßig: Auf einem iPhone 17 Pro erreicht Core AI laut Gerätevergleich bei der gesamten Pipeline nicht mehr als Core ML, wobei semantische Inferenz, Tiefeninferenz und Inferenz ausschließlich auf der CPU langsamer sind und FP16-Modelle etwa doppelt so groß zum Herunterladen sind. Deshalb behalten das iOS SDK und das Flutter-Plugin Core ML als Standard bei.
- Für die SDKs den unverarbeiteten Head verwenden: Mit
nms=Falsedauert YOLO26n mit Core AI etwa doppelt so lange wie mit Core ML (3.06 gegenüber 1.53 ms in einem Vergleichsdurchlauf), und das Pose-Modell mit durchgängiger FP16-Verarbeitung liefert bei der standardmäßigen Zuweisung von Core AI unter iOS 27.0 keine Erkennungen (apple/coreai-torch#115). Der unverarbeitete Head (nms=None, Standard) vermeidet beides, und die SDKs führen NMS in Swift aus. Siehe Head auswählen. - Keine Laufzeit für den iOS Simulator: Das iOS Simulator SDK enthält Core AI nicht.
- Anpassungen an der Anwendung erforderlich: Ein
.aimodelkann nicht anstelle eines.mlpackageverwendet werden. Das Laden des Modells, die Vorverarbeitung, Inferenzaufrufe, die Verarbeitung von Metadaten und das Dekodieren der Ausgaben erfordern eine Core AI-Implementierung außerhalb der Ultralytics SDKs, die eine solche Implementierung bereitstellen. - Begrenzte Erfahrungswerte aus der Produktion: Leistung, Energieverbrauch, Spezialisierungszeit beim ersten Start, Genauigkeit und Komprimierung müssen für die unterstützten YOLO-Aufgaben und Gerätekombinationen validiert werden.
- Keine NMS-Pipeline: Core ML kann für ältere YOLO-Erkennungsmodelle eine NMS-Stufe einbinden. Core AI exportiert standardmäßig unverarbeitete One-to-many-Vorhersagen. Verwende
nms=Falsefür den NMS-freien Head von YOLO26. Eingebettetes NMS (nms=True) unddynamic=Truewerden nicht unterstützt. Fürcoreai-torchgibt es keine Absenkung fürtorchvision::nms, daher wird NMS auf dem Host ausgeführt. - Feste Eingabegröße: Der exportierte Graph wird für eine einzige
imgszverfolgt und hat keine dynamischen Formen. Führe Vorhersagen daher mit der Größe aus, für die er exportiert wurde. - FP16-Modelle können beim Laden abbrechen: Einige FP16-Modelle vom Typ
.aimodelkönnen ihr Programm für die Apple Neural Engine nicht laden, woraufhin MPSGraph eine fehlgeschlagene Assertion auslöst und der Prozess beendet wird, statt auf eine andere Recheneinheit auszuweichen. Dies geschieht innerhalb der Laufzeit von Apple, bevor Ultralytics-Code ausgeführt wird. Dasselbe Modell lässt sich mit einer Spezialisierung ausführen, die nur die CPU verwendet. Weiche auf FP32 aus, falls dies bei einem Modell auftritt. Die auf einem iPhone 17 Pro geprüften FP16-SDK-Modelle (alle Nano-Modelle, Detect in jeder Größe sowie das jeweils größte Modell jeder Aufgabe) ließen sich ohne Abbruch laden.
Welches Apple-Format solltest du verwenden?#
Verwende Core ML heute, wenn du Folgendes benötigst:
- Bereitstellung auf aktuellen und älteren Apple-Betriebssystemen
- Den Standardpfad des Ultralytics iOS- oder Flutter-SDKs
- Bildverarbeitung mit dem Vision-Framework
- Erprobte YOLO-Bereitstellung mit FP16 und INT8
- Eingebettetes NMS für kompatible ältere Erkennungsmodelle
Teste Core AI, wenn du iOS 27 oder macOS 27 voraussetzen kannst und Folgendes benötigst:
- Die neueste Apple-Laufzeit für neuronale Netze direkt auf dem Gerät
- Explizite Verwaltung von Spezialisierungen und Caches
- Erweiterte dynamische oder zustandsbehaftete Modellausführung
- Benutzerdefinierte Core AI-Operationen oder Metal-Kernels
- Detaillierte Fehlersuche in Core AI-Graphen und Laufzeitprofilierung
Core ML und Core AI werden voraussichtlich parallel bestehen, während Anwendungen umgestellt werden. Die Unterstützung von Core AI macht Core ML nicht sofort überflüssig, da sich die Zielbetriebssysteme und Anwendungsschnittstellen unterscheiden.
Ultralytics-Roadmap#
Das dedizierte Exportziel coreai ist implementiert: Export und numerische Validierung decken die unterstützten YOLO26-Aufgabenmodelle ab und werden in der Ultralytics CI unter macOS 26 kontinuierlich ausgeführt. Die FP16-Latenz wird auf dem Gerät gemessen. Die noch ausstehenden Punkte auf dem Weg zur Funktionsgleichheit mit dem Core ML-Pfad:
- Schließen der Lücke bei der Latenz des Heads von Anfang bis Ende auf der Apple Neural Engine (apple/coreai-torch#66) und Behebung der Probleme mit der Korrektheit auf der Neural Engine (apple/coreai-torch#115, #116).
- INT8- und palettierte Core AI-Modelle; die SDK-Modelle verwenden FP16 und sind etwa doppelt so groß zum Herunterladen wie die INT8-Core ML-Modelle.
- Stabile Veröffentlichungen des Apple-Frameworks und der Konvertierungswerkzeuge (die Generation iOS 27 und macOS 27 befindet sich derzeit in der Beta-Phase).
- Benchmarks für Speicher, Energieverbrauch und Spezialisierung auf den unterstützten Geräten.
Das Ultralytics iOS SDK und das Flutter-Plugin laden Core AI ab iOS 27 optional. Core ML bleibt die Standardeinstellung und das empfohlene Ziel für die Unterstützung von iOS-Versionen vor iOS 27. Verfolge die Ultralytics-Roadmap und die Versionshinweise, um über die übrigen Punkte auf dem Laufenden zu bleiben.
Weitere Ressourcen#
- Überblick zu Apple Core AI
- Dokumentation zum Core AI-Framework
- Core AI PyTorch-Erweiterungen
- Core AI Optimization
- Repository für Apple Core AI-Modelle
- Ultralytics Core ML-Integration
Häufig gestellte Fragen#
Ja. Führe den Export mit
model.export(format="coreai")oderyolo export format=coreaiauf einem Mac mit Apple-Chip und macOS 26 oder neuer oder unter x86_64 Linux mit glibc 2.34 oder neuer aus. Das exportierte.aimodelläuft unter iOS 27 und macOS 27. Die Ultralytics iOS- und Flutter-SDKs laden es auf Geräten mit iOS 27 optional. Für den Standardpfad der SDKs und für ältere Betriebssystemgenerationen exportierst du Core ML-.mlpackage-Dateien mitformat="coreml".Nicht sofort. Core AI ist Apples neuerer Ansatz für moderne neuronale Netze, während Core ML weiterhin unterstützt wird und eine breitere Betriebssystemabdeckung, die Integration mit Vision und Unterstützung für nicht neuronale Modelle bietet.
Nein. Sie enthalten unterschiedliche Modelldarstellungen und werden von verschiedenen Frameworks geladen. Die Konvertierung muss vom Quellmodell aus mit der passenden Apple-Werkzeugkette erfolgen.
Die erste Integration soll parallel zu Core ML bestehen. Ob Core ML künftig ersetzt wird, hängt von der Verbreitung der Betriebssysteme, stabilen Werkzeugen und der Leistung auf dem Gerät ab.