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

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)
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
👀 See Also

HolyCode : Conteneur Docker pour des environnements de codage Claude IA persistants
HolyCode est un conteneur Docker qui maintient l'état de l'environnement de codage IA lors des changements de machine et des reconstructions. Il inclut plus de 30 outils préinstallés, l'automatisation du navigateur avec Chromium + xvfb + Playwright, et préserve le contexte dans ./data/opencode.

Forge : Le Plugin Open-Source Claude Code Ajoute des Portails de Gouvernance et de Tests
Forge est un plugin open-source pour Claude Code qui ajoute le verrouillage de fichiers, des portails de tests automatisés et 22 agents de gouvernance pour prévenir les collisions et les dérives dans les flux de travail de code généré par IA. Il est sous licence MIT et s'installe via la marketplace de plugins Claude.

Plugin d'Excellence Créative pour Claude Code Améliore la Qualité d'Animation avec une Thèse d'Interaction
Un nouveau plugin open-source pour Claude Code aborde la génération d'animations génériques en mettant en œuvre une approche de 'thèse d'interaction' où Claude doit décrire les concepts de mouvement avant de coder. Le plugin inclut 8 sous-compétences couvrant GSAP, Framer Motion, les animations CSS et les principes de conception issus de dépôts étudiés.

Google Surf MCP : MCP de recherche Google gratuit avec gestion des PDF et extraction hiérarchisée
Google Surf MCP est un serveur MCP gratuit pour la recherche Google et l'extraction d'URL qui gère les PDF et propose un mode d'extraction hiérarchisé (résumé/intégral) pour économiser des tokens.