Flash-MoE: Ausführen eines 397B-Parameter-Qwen-Modells auf dem MacBook Pro mit reinem C/Metal

Technische Implementierung
Flash-MoE führt Qwen3.5-397B-A17B aus, ein Mixture-of-Experts-Modell mit 397 Milliarden Parametern und 60 Transformer-Schichten: 45 GatedDeltaNet (lineare Aufmerksamkeit) + 15 Standard-Vollaufmerksamkeit. Jede Schicht hat 512 Experten, wobei K=4 pro Token aktiviert werden plus einem gemeinsamen Experten. Die versteckte Dimension beträgt 4096.
Leistungsbenchmarks
- 4-Bit-Experten, FMA-Kernel: 4,36 Token/Sekunde, ausgezeichnete Qualität, vollständige Tool-Aufrufe, 209 GB auf der Festplatte (aktuell beste)
- 4-Bit-Experten, Basisversion: 3,90 Token/Sekunde, ausgezeichnete Qualität
- 2-Bit-Experten, OS-Vertrauen: 5,74 Token/Sekunde, gute Qualität, 120 GB auf der Festplatte (bricht JSON/Tool-Aufrufe)
- 2-Bit Spitzenwert einzelner Token: 7,05 Token/Sekunde, gute Qualität (nicht für Tool-Nutzung geeignet)
Hinweis: 2-Bit-Quantisierung erzeugt \name\ anstelle von "name" in der JSON-Ausgabe, was Tool-Aufrufe unzuverlässig macht. 4-Bit ist die Produktionskonfiguration.
Hardware-Anforderungen
- Maschine: MacBook Pro mit Apple M3 Max
- Chip: 16-Kern-CPU (12P + 4E), 40-Kern-GPU, 16-Kern-ANE
- Arbeitsspeicher: 48 GB vereinheitlicht (~400 GB/s Bandbreite)
- SSD: 1 TB Apple Fabric, 17,5 GB/s sequenzielles Lesen (gemessen)
- macOS: 26.2 (Darwin 25.2.0)
Schlüsseltechniken
SSD-Experten-Streaming
Experten-Gewichte (209 GB bei 4 Bit) werden bei Bedarf von der NVMe-SSD über parallele pread() mit GCD-Dispatch-Gruppen gelesen. Nur die K=4 aktiven Experten pro Schicht werden geladen (~6,75 MB jeweils). Der OS-Seitencache verwaltet das Caching ohne benutzerdefinierten Cache („Vertraue dem OS“-Prinzip) und erreicht natürlich ~71 % Trefferquote.
FMA-optimierter Dequant-Kernel
Die innere Schleife der 4-Bit-dequantisierten Matrix-Vektor-Multiplikation ordnet die Mathematik von (Nibble * Skalierung + Bias) * x zu fma(Nibble, Skalierung*x, Bias*x) um. Das Vorberechnen von Skalierung*x und Bias*x ermöglicht es der GPU-Fused-Multiply-Add-Einheit, Dequantisierung+Multiplikation in einer Anweisung durchzuführen, was zu 12 % schnellerer Leistung als die naive Formulierung führt.
Metal-Compute-Shader
Handgeschriebene Metal-Kernel umfassen:
- 4-Bit- und 2-Bit-dequantisierte Matrix-Vektor-Multiplikation (gekachelt, SIMD-reduziert, gemeinsamer Eingabe-Cache, FMA-optimiert)
- Verschmolzene SwiGLU-Aktivierung
- RMS-Normalisierung (zweistufig: Quadratsummen-Reduktion + Anwendung)
- Gebündelte GPU-Aufmerksamkeit (Q@K^T, Softmax, Scores@V) für Vollaufmerksamkeitsschichten
- GPU-RoPE (verschmolzen mit Q-Entflechtung und K-Normalisierung)
- MoE-Kombination + Rest + Sigmoid-Gate (verschmolzener Kernel)
Verzögerte GPU-Experten-Berechnung
CMD3 (Experten-Vorwärtspass) wird ohne Wartezeit übermittelt. Die GPU führt ihn aus, während die CPU die nächste Schicht vorbereitet. Die Kombination + Rest + Normierung erfolgen ebenfalls auf der GPU und speisen direkt in die Aufmerksamkeitsprojektionen der nächsten Schicht ein.
Accelerate-BLAS für lineare Aufmerksamkeit
Die GatedDeltaNet-Rekurrenz verwendet cblas_sscal, cblas_sgemv und cblas_sger für die 64-Kopf × 128×128-Zustandsmatrix-Aktualisierung und erreicht 64 % schnellere Leistung als Skalarcode.
Pipeline-Leistung
Durchschnitt pro Schicht bei 4 Bit: 4,28 ms
- CMD3(vorher) → CMD1: Aufmerksamkeitsprojektionen + Delta-Netz [1,22 ms GPU]
- CPU: Ergebnisse leeren [0,01 ms CPU]
- CMD2: o_proj + Norm + Routing + gemeinsam [0,55 ms GPU]
- CPU: Softmax + TopK-Routing [0,003 ms]
- E/A: paralleles pread K=4 Experten [2,41 ms SSD]
- CMD3: Experten-Vorwärtspass + Kombination + Norm [0,04 ms kodieren, VERZÖGERT]
Architekturbeschränkungen
Auf Apple Silicon teilen sich SSD-DMA und GPU-Berechnung denselben Speichercontroller und können nicht profitabel überlappt werden. Die Dequant-Kernels der GPU sind bei ~418 GiB/s bandbreitengesättigt. Selbst kleiner Hintergrund-SSD-DMA verursacht unverhältnismäßige GPU-Latenzspitzen durch Speichercontroller-Arbitrierung, was eine serielle Pipeline erfordert.
📖 Read the full source: HN AI Agents
👀 Siehe auch

Claudebin: Exportieren und Teilen Ihrer Claude-Code-Sitzungen
Claudebin ermöglicht es Ihnen, gesamte Claude-Code-Sitzungen zu exportieren, wodurch sie über eine einzige URL teilbar und fortsetzbar werden.

Agenten beobachten: Echtzeit-Dashboard zur Überwachung von Claude-Code-Agenten-Teams
Agents Observe ist ein lokales Dashboard, das Echtzeit-Beobachtbarkeit für Claude Code Agent-Sitzungen mithilfe von Hooks statt OTEL bietet. Es erfasst jeden Tool-Aufruf, die Agent-Hierarchie und Ereignisse mit Filter- und Suchfunktionen und läuft als Docker-Container, der automatisch mit Claude-Sitzungen startet.

Cloudflare Dynamic Worker Loader: Sandboxing von KI-Agenten mit Isolates
Cloudflares Dynamic Worker Loader API, jetzt in offener Beta, ermöglicht es Workern, neue Worker mit zur Laufzeit spezifiziertem Code in isolierten Sandboxen mithilfe von V8-Isolaten zu instanziieren, was 100-mal schnellere Startzeiten als Container bietet und keine globalen Nebenläufigkeitsgrenzen hat.

Open-Source Artikel-12-Protokollierungsbibliothek für die Einhaltung des EU-KI-Gesetzes
Eine kostenlose, quelloffene TypeScript-Bibliothek für Node.js-Anwendungen mit Vercel AI SDK, die die Protokollierungsanforderungen von Artikel 12 mit ausschließlich anfügbaren JSONL-Protokollen, SHA-256-Hash-Ketten zur Manipulationserkennung und Durchsetzung einer 180-tägigen Aufbewahrungsfrist implementiert.