Article

Espresso: Transformers direkt auf Apple Neural Engine trainieren

AI Apple Neural Engine Transformers Swift LLM Training

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.

Backendms/tokentok/sHinweis
Espresso ANE1.08926Direkter ANE-Pfad, 2 Dispatches für 6 Layers
CoreML5.09196Apples Standard-ANE-Integration
llama.cpp Metal~12–20~50–85GPU-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

SoCANE-KerneStatus
M1 / M1 Pro / M1 Max / M1 Ultra16 Kerne✅ Vollständig
M2 / M2 Pro / M2 Max / M2 Ultra16 Kerne✅ Vollständig
M3 / M3 Pro / M3 Max18 Kerne✅ Referenz-Hardware
M4 / M4 Pro / M4 Max38 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-Layer
  • espc CLI – Packt native Model-Verzeichnisse in .esp
  • esprun CLI – 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