397B MoE sur MacBook : 4,4 t/s Moteur Flash-MoE

Flash-MoE : Exécution de 397 milliards de paramètres sur un MacBook à 4,4+ jetons/seconde

Imaginez exécuter un modèle Mixture-of-Experts (MoE) de 397 milliards de paramètres sur votre MacBook Pro avec une sortie de qualité production à 4,4+ jetons/seconde. C'est exactement ce que Flash-MoE accomplit - sans Python, sans frameworks, juste du C/Objective-C pur et des shaders Metal ajustés manuellement.

La Bête : Qwen3.5-397B-A17B

Ce n'est pas théorique. Le projet diffuse un modèle quantifié 4 bits de 209 Go depuis le SSD tout en offrant :

Configuration Vitesse Qualité Disque
Noyau FMA 4 bits 4,36 t/s Excellente 209 Go
Baseline 4 bits 3,90 t/s Excellente 209 Go
Experts 2 bits 5,74 t/s Bonne* 120 Go

*2 bits casse la fiabilité JSON/appels d'outils

Vérification de la réalité matérielle

MacBook Pro M3 Max : 48 Go de mémoire unifiée, GPU 40 cœurs, SSD 17,5 Go/s. Pas besoin de centre de données.

Techniques de rupture

1. Streaming d'experts SSD + « Faites confiance à l'OS »

Ne charger que K=4 experts actifs par couche (~6,75 Mo chacun)
Cache de pages OS gère LRU (taux de succès 71 % naturellement)
pread() parallèle via groupes de dispatch GCD
Pas besoin de cache personnalisé

Leçon : LRU Metal personnalisé, compression LZ4 et mmap ont tous performé moins bien.

2. Noyau de déquantification optimisé FMA (+12 % de vitesse)

// Avant : (nibble * scale + bias) * x
// Après :  fma(nibble, scale*x, bias*x)
Multiplication-addition fusionnée GPU effectue déquantification+multiplication en une instruction.

3. Pipeline GPU différé

CMD3(expert fwd) → [DIFFÉRÉ]
CMD1 : projections d'attention
CPU : routage + pread experts
CMD2 : combiner + norm
→ Couche suivante
4,28 ms par couche en moyenne en 4 bits.

4. Noyaux Metal écrits à la main

  • Matvec déquantifié 4 bits/2 bits (tuilé, SIMD, cache partagé)
  • SwiGLU fusionné, RMS norm, combinaison MoE
  • Attention GPU batchée (Q@Kᵀ, softmax, scores@V)
  • RoPE GPU + désentrelacement

5. Attention linéaire accélérée par BLAS

GatedDeltaNet utilise cblas_sgemv/sger - 64 % plus rapide que le code scalaire.

Ce qu'ils ont écarté (58 expériences)

Approche échouée Impact Pourquoi
Compression LZ4 -13 % Décompression > économies de cache
Déquant LUT GPU -2 % Sérialisation des registres
Prédiction d'experts -18 % Pollution du cache
mmap experts -5x Surcharge de faute de page

Prêt pour la production

cd metal_infer && make
./infer --prompt "Expliquez l'informatique quantique" --tokens 100
./chat  # TUI interactif + appels d'outils

Sécurité : Empreinte mémoire fixe de 6 Go laisse 42 Go pour l'OS + cache de pages. Pas de risque OOM sur la machine de dev principale.

L'article

Déails techniques complets couvrent 90+ expériences et l'histoire de développement humain+IA de 24 heures. Ceci est une inférence Apple Silicon de pointe - open source, testée au combat, et repoussant les limites du matériel.

Étoiles : 3,2k | Fourches : 371 - La communauté reconnaît l'innovation réelle quand elle la voit.

Article original: Voir l'original

Partager cet article