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

CodeTalk : Un outil open-source ajoute des réflexions parlées à Claude Code CLI
CodeTalk est un outil Python qui ajoute des observations parlées aux réponses de Claude Code CLI en utilisant Microsoft edge-tts. Il extrait le texte intégré par Claude et le lit à travers les haut-parleurs avec une synthèse vocale neuronale naturelle.

Protocole Mind : Un système open-source offre à Claude une mémoire persistante et une intégration biométrique en temps réel.
Mind Protocol est un système open-source où Claude fonctionne en continu en tant que compagnon autonome avec une mémoire persistante à travers toutes les sessions et des données en temps réel de montre Garmin injectées dans chaque conversation. L'architecture utilise Claude Code comme moteur central avec un orchestrateur qui génère des sessions parallèles et gère le cycle de vie.

Tarification des Modèles OpenRouter et Analyse de l'Intelligence par Dollar
Un utilisateur de Reddit a compilé les tarifs de l'API OpenRouter pour 16 modèles d'IA et a calculé des valeurs d'intelligence par dollar, identifiant MiMo-V2-Flash comme le meilleur rapport qualité-prix à 0,09 $/M de tokens et GPT-5.4 comme le plus intelligent à 2,50 $/M de tokens.

Intégration de Claude à Canva : un workflow pratique pour la création de designs
Le connecteur Canva de Claude exporte des projets Canva modifiables avec des mises en page structurées, et non des images plates. L'article détaille un workflow allant de l'invite au carrousel finalisé en 12 à 15 minutes, incluant la configuration, le mode haute fidélité et les limites honnêtes.