Article
Espresso: Transformers direkt auf Apple Neural Engine trainieren
Espresso ist ein Swift-Framework, das Transformer-Modelle direkt auf dem Apple Neural Engine (ANE) trainiert und inferiert – komplett ohne CoreML. Das Projekt nutzt reverse-engineered private APIs wie _ANEClient und _ANEInMemoryModel, um MIL-Programme zu ANE E5-Binaries zu kompilieren.
Performance-Vergleich
Die Benchmarks sind beeindruckend: Espresso erreicht 1.08 ms/token auf einem M3 Max, während CoreMLs cpuAndNeuralEngine-Pfad bei 5.09 ms/token liegt – das entspricht einer 4.76x Beschleunigung. Gegenüber llama.cpps Metal-Backend (12-20 ms/token) ist Espresso sogar ~11x schneller.
| Backend | ms/token | tok/s | Hinweis |
|---|---|---|---|
| Espresso ANE | 1.08 | 926 | Direkter ANE-Pfad, 2 Dispatches für 6 Layers |
| CoreML | 5.09 | 196 | Apples Standard-ANE-Integration |
| llama.cpp Metal | ~12–20 | ~50–85 | GPU-Pfad, CPU-limitiert |
Technische Architektur
Der Schlüssel zur Performance liegt in der Architektur:
- Fused 3-Layer Kernels: 6 Transformer-Layer werden in nur 2 ANE-Dispatches ausgeführt, nicht in 6 separaten Aufrufen
- Zero-Copy I/O: NEON-vektorisierte Reads, vDSP-argmax – keine Marshaling-Overheads
- IOSurface-Puffer: KV-Cache lebt direkt in IOSurface-Buffern, wird nicht durch CoreML gemarshalt
- Einmalige Kompilierung: Das MIL-Programm wird einmal kompiliert und für alle Decode-Schritte wiederverwendet
Training auf ANE
Besonders bemerkenswert: Espresso unterstützt vollständiges Training auf dem Neural Engine – Forward- und Backward-Pass mit Gradient-Akkumulation und Adam-Optimizer. Das ist ein Feature, das CoreML nicht bietet.
Plattform-Kompatibilität
| SoC | ANE-Kerne | Status |
|---|---|---|
| M1 / M1 Pro / M1 Max / M1 Ultra | 16 Kerne | ✅ Vollständig |
| M2 / M2 Pro / M2 Max / M2 Ultra | 16 Kerne | ✅ Vollständig |
| M3 / M3 Pro / M3 Max | 18 Kerne | ✅ Referenz-Hardware |
| M4 / M4 Pro / M4 Max | 38 Kerne | ✅ Schnellere Compile-Cache-Warmup |
Voraussetzungen: macOS 15+, Swift 6.2, Apple Silicon. Intel Macs ohne Neural Engine werden nicht unterstützt. iOS erfordert zusätzliche Entitlements und ist nicht App Store-kompatibel.
ESP Model Platform
Espresso führt eine portable Bundle-Plattform ein:
.esp– Kanonisches portables Model-Bundle.espc– Kompilierter Cache-LayerespcCLI – Packt native Model-Verzeichnisse in.espesprunCLI – Inspect, resolve und run Bundle-Artefakte
Quick Start
Weitere Befehle:
Fazit
Espresso demonstriert eindrucksvoll, wie viel Performance-Potenzial im Apple Neural Engine steckt, das CoreML nicht ausschöpft. Für Entwickler, die auf Apple Silicon LLMs trainieren oder inferieren wollen, ist dies ein interessantes Projekt – mit der Einschränkung, dass es private APIs nutzt und nicht für den App Store geeignet ist.
GitHub: christopherkarani/Espresso Lizenz: MIT