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

✍️ OpenClawRadar📅 Veröffentlicht: 22. März 2026🔗 Source
Flash-MoE: Ausführen eines 397B-Parameter-Qwen-Modells auf dem MacBook Pro mit reinem C/Metal
Ad

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)
Ad

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

Ad

👀 Siehe auch

Claudebin: Exportieren und Teilen Ihrer Claude-Code-Sitzungen
Werkzeuge

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.

OpenClawRadar
Agenten beobachten: Echtzeit-Dashboard zur Überwachung von Claude-Code-Agenten-Teams
Werkzeuge

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.

OpenClawRadar
Cloudflare Dynamic Worker Loader: Sandboxing von KI-Agenten mit Isolates
Werkzeuge

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.

OpenClawRadar
Open-Source Artikel-12-Protokollierungsbibliothek für die Einhaltung des EU-KI-Gesetzes
Werkzeuge

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.

OpenClawRadar