Aller au contenu

flash-moe : Qwen3.5-397B sur MacBook 48GB a 4.4 tok/s en C/Metal pur

Resume

Moteur d'inference ecrit en C et Metal qui execute Qwen3.5-397B (397 milliards de parametres, MoE) sur un MacBook Pro 48GB a 4.4+ tokens/seconde. La cle : les 209GB de poids experts sont streames depuis le SSD via le page cache OS, seuls les 4 experts actifs par couche sont charges a chaque forward pass. Pipeline sequentiel GPU → CPU (routing) → SSD (experts) → GPU (forward). 144 commits, ~8200 lignes de code (7000 C/Metal + 1200 shaders). Tokenizer C pur (180ms vs 3500ms en Python).

Analyse critique

Ce qui est impressionnant : - Faire tourner un modele de 397B parametres sur un laptop a 4.4 tok/s est un exploit d'ingenierie. C'est rendu possible par l'architecture MoE (seuls ~35B de parametres actifs par inference) et le SSD rapide d'Apple Silicon. - Le pipeline est optimise au niveau hardware : ils ont decouvert que le DMA SSD et le GPU compute partagent le meme controleur memoire sur Apple Silicon → le pipeline sequentiel est 73% plus rapide que le prefetch concurrent. C'est le genre de connaissance qui ne vient que de l'experimentation. - Le kernel FMA optimise (+12% perf) est elegant : reorganiser (nibble * scale + bias) * x en fma(nibble, scale*x, bias*x) pour exploiter l'instruction fused-multiply-add du GPU. - Tokenizer C pur a 180ms vs 3500ms en Python (19x plus rapide) — rappelle que Python est souvent le goulot dans les pipelines ML.

Ce qui est a nuancer : - 4.4 tok/s c'est lent pour de l'interactif. C'est utilisable pour du batch, pas pour du chat fluide. - La quantification 2-bit casse le JSON (\name\ au lieu de "name") — inutilisable pour du tool calling, donc pour des agents. - La quantification 4-bit fonctionne avec le tool calling, mais 4.4 tok/s reste limitant pour un workflow multi-agents. - Pas de licence specifiee dans le repo.

58 experiences documentees dans le repo — c'est de la recherche appliquee serieuse, pas un side project.

Pertinence ProbatioVault

Impact modere. Le IA-Server ProbatioVault a 2x RTX 5090 (~64GB VRAM totale), pas de l'Apple Silicon. Mais les principes sont transferables :

  • Streaming d'experts depuis le SSD : le pattern est applicable a n'importe quel hardware avec SSD NVMe rapide. Si on voulait faire tourner un modele 397B sur le IA-Server, le meme principe (charger uniquement les experts actifs) fonctionnerait avec CUDA au lieu de Metal.
  • MoE comme architecture optimale pour le local : Qwen3.5-35B-A3B (deja utilise sur le IA-Server) est un petit MoE (35B total, 3B actifs). flash-moe montre que le pattern scale jusqu'a 397B. Si un modele MoE plus gros que le 35B devient disponible et pertinent, le IA-Server pourrait le faire tourner avec la meme technique.
  • Le tokenizer C pur est un rappel que les performances d'inference ne dependent pas que du GPU — le preprocessing Python peut etre un bottleneck cache.

Mise a jour 2026-04-08 : @CamilleRoux relaie en francais (https://x.com/camilleroux/status/2041133827158839641) : "Faire tourner un modele de 397 milliards de parametres sur un MacBook Pro avec 48 Go de RAM, a 4.4 tokens/s — sans Python, sans framework, juste du C et des shaders Metal ecrits a la main." Le projet continue d'evoluer (innovations cles : OS-level caching, FMA-optimized dequantization, pipeline GPU/CPU hand-tuned pour le routing MoE).