Flash-MoE : Exécution du modèle Qwen de 397 milliards de paramètres sur MacBook Pro avec du C/Metal pur

✍️ OpenClawRadar📅 Publié: March 22, 2026🔗 Source
Flash-MoE : Exécution du modèle Qwen de 397 milliards de paramètres sur MacBook Pro avec du C/Metal pur
Ad

Implémentation technique

Flash-MoE exécute Qwen3.5-397B-A17B, un modèle Mixture-of-Experts de 397 milliards de paramètres avec 60 couches de transformateurs : 45 GatedDeltaNet (attention linéaire) + 15 attention complète standard. Chaque couche comporte 512 experts, avec K=4 activés par token plus un expert partagé. La dimension cachée est de 4096.

Benchmarks de performance

  • Experts 4 bits, noyau FMA : 4,36 tokens/seconde, excellente qualité, appel d'outils complet, 209 Go sur disque (meilleure configuration actuelle)
  • Experts 4 bits, référence : 3,90 tokens/seconde, excellente qualité
  • Experts 2 bits, confiance OS : 5,74 tokens/seconde, bonne qualité, 120 Go sur disque (incompatible avec JSON/appel d'outils)
  • Pic 2 bits par token unique : 7,05 tokens/seconde, bonne qualité (inadapté à l'utilisation d'outils)

Note : la quantification 2 bits produit \name\ au lieu de "name" dans la sortie JSON, rendant l'appel d'outils peu fiable. La configuration 4 bits est celle de production.

Exigences matérielles

  • Machine : MacBook Pro avec Apple M3 Max
  • Puce : CPU 16 cœurs (12P + 4E), GPU 40 cœurs, ANE 16 cœurs
  • Mémoire : 48 Go unifiée (~400 Go/s de bande passante)
  • SSD : 1 To Apple Fabric, 17,5 Go/s lecture séquentielle (mesuré)
  • macOS : 26.2 (Darwin 25.2.0)
Ad

Techniques clés

Streaming d'experts depuis SSD

Les poids des experts (209 Go en 4 bits) sont lus depuis le SSD NVMe à la demande via pread() parallèle avec groupes de dispatch GCD. Seuls les K=4 experts actifs par couche sont chargés (~6,75 Mo chacun). Le cache de pages du système gère la mise en cache sans cache personnalisé nécessaire (principe "Confiance au système"), atteignant naturellement un taux de réussite d'environ 71 %.

Noyau de déquantification optimisé FMA

La boucle interne de la multiplication matrice-vecteur déquantifiée 4 bits réorganise les calculs de (nibble * échelle + biais) * x en fma(nibble, échelle*x, biais*x). Le pré-calcul de échelle*x et biais*x permet à l'unité FMA du GPU d'effectuer déquantification+multiplication en une instruction, résultant en une performance 12 % plus rapide que la formulation naïve.

Shaders de calcul Metal

Les noyaux Metal écrits à la main incluent :

  • Multiplication matrice-vecteur déquantifiée 4 et 2 bits (tuilée, réduite SIMD, cache d'entrée partagé, optimisée FMA)
  • Activation SwiGLU fusionnée
  • Normalisation RMS (deux passes : réduction somme-des-carrés + application)
  • Attention GPU par lots (Q@K^T, softmax, scores@V) pour les couches d'attention complète
  • RoPE GPU (fusionnée avec désentrelacement Q et normalisation K)
  • Combinaison MoE + résiduel + porte sigmoïde (noyau fusionné)

Calcul d'expert GPU différé

CMD3 (passe avant des experts) est soumis sans attente. Le GPU l'exécute pendant que le CPU prépare la couche suivante. La combinaison + résiduel + normalisation sont également sur GPU, alimentant directement les projections d'attention de la couche suivante.

Accelerate BLAS pour l'attention linéaire

La récurrence GatedDeltaNet utilise cblas_sscal, cblas_sgemv et cblas_sger pour la mise à jour de la matrice d'état 64 têtes × 128×128, atteignant une performance 64 % plus rapide que le code scalaire.

Performance du pipeline

Moyenne par couche en 4 bits : 4,28 ms

  • CMD3(précédent) → CMD1 : projections d'attention + delta-net [1,22 ms GPU]
  • CPU : vidage des résultats [0,01 ms CPU]
  • CMD2 : o_proj + norm + routage + partagé [0,55 ms GPU]
  • CPU : softmax + routage topK [0,003 ms]
  • E/S : pread parallèle K=4 experts [2,41 ms SSD]
  • CMD3 : passe avant des experts + combinaison + norm [0,04 ms encodage, DIFFÉRÉ]

Contraintes d'architecture

Sur Apple Silicon, le DMA SSD et le calcul GPU partagent le même contrôleur mémoire et ne peuvent pas être efficacement superposés. Les noyaux de déquantification du GPU sont saturés en bande passante à ~418 Gio/s. Même un petit DMA SSD en arrière-plan provoque des pics de latence GPU disproportionnés via l'arbitrage du contrôleur mémoire, nécessitant un pipeline sérialisé.

📖 Read the full source: HN AI Agents

Ad

👀 See Also

soul.py ajoute une mémoire persistante aux LLM locaux avec une approche simple basée sur des fichiers.
Tools

soul.py ajoute une mémoire persistante aux LLM locaux avec une approche simple basée sur des fichiers.

soul.py est une bibliothèque Python qui ajoute une mémoire persistante à tout LLM en utilisant deux fichiers markdown pour l'identité et la journalisation des conversations, fonctionnant avec les modèles Ollama, OpenAI et Anthropic sans nécessiter de bases de données ou de serveurs.

OpenClawRadar
E2a : Passerelle de messagerie open source pour agents IA avec vérification SPF/DKIM et livraison par webhook/WebSocket
Tools

E2a : Passerelle de messagerie open source pour agents IA avec vérification SPF/DKIM et livraison par webhook/WebSocket

E2a est une passerelle e-mail authentifiée pour les agents IA qui vérifie SPF/DKIM sur les courriels entrants, délivre via webhook ou WebSocket, et prend en charge les courriels sortants avec approbation humaine dans la boucle.

OpenClawRadar
LetMeWatch : Un plugin Python ajoute l'analyse vidéo à Claude via la détection de scènes FFmpeg
Tools

LetMeWatch : Un plugin Python ajoute l'analyse vidéo à Claude via la détection de scènes FFmpeg

Un développeur a créé un plugin Python d'environ 200 lignes appelé LetMeWatch qui permet à Claude d'analyser des vidéos en utilisant FFmpeg pour la détection de scènes, en extrayant uniquement les images où le contenu visuel change, en les horodatant, et en les envoyant par lots à la vision multimodale de Claude.

OpenClawRadar
🦀
Tools

Claudy : un wrapper macOS natif pour Claude Code avec sessions multiples, changement automatique de compte et brouillons de commits

Claudy est une application native macOS conçue avec SwiftUI + SwiftData qui enrobe Claude Code, ajoutant la gestion multi-session, le changement automatique de compte en cas de limite de débit, les commits de brouillon pour les points de contrôle en cours de session, et un marché pour les Skills, MCPs et Commandes.

OpenClawRadar