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

Pipeline de Code Claude Automatisée Réduit l'Utilisation de Tokens de 78k à 15k par Fonctionnalité
Tools

Pipeline de Code Claude Automatisée Réduit l'Utilisation de Tokens de 78k à 15k par Fonctionnalité

Un pipeline open-source pour Claude Code automatise 12 phases incluant l'analyse préalable du code existant, réduisant l'utilisation de tokens d'environ 78k à 15k par fonctionnalité. Il propose trois profils (yolo, standard, paranoïaque) et remplace les scores de confiance par une validation basée sur grep.

OpenClawRadar
OpenClaw Browser Relay Extension Chrome Alternative aux Configurations Manuelles
Tools

OpenClaw Browser Relay Extension Chrome Alternative aux Configurations Manuelles

Un utilisateur de Reddit rapporte un succès avec une extension Chrome pour le relais de navigateur OpenClaw après que des tentatives de configuration manuelle aient provoqué des plantages du système et des maux de tête de débogage.

OpenClawRadar
Salle des Agents : Application de Bureau pour Visualiser les Équipes d'Agents de Code Claude
Tools

Salle des Agents : Application de Bureau pour Visualiser les Équipes d'Agents de Code Claude

Agents Room est une application de bureau Electron qui scanne les dossiers .claude/agents/, lit les métadonnées frontmatter et visualise les relations entre agents sur un canevas avec des lignes de connexion automatiques. Elle permet de créer/modifier des agents, compétences et commandes directement dans l'interface utilisateur au lieu d'éditer des fichiers markdown.

OpenClawRadar
Culpa : Moteur de relecture déterministe open source pour le débogage d'agents IA
Tools

Culpa : Moteur de relecture déterministe open source pour le débogage d'agents IA

Culpa est un outil open source qui enregistre les sessions d'agents LLM avec un contexte d'exécution complet, permettant une relecture déterministe en utilisant les réponses enregistrées comme substituts au lieu d'accéder aux véritables API. Il fonctionne avec les API Anthropic et OpenAI via un mode proxy ou un SDK Python.

OpenClawRadar