Phase 3 — Offload des experts du backbone en RAM (M0)
Diffusez les FFN d'experts MoE depuis la RAM CPU plutôt que la VRAM, et un seul coordinateur de 64 GB tient un 122B — sans chirurgie de graphe.
Les FFN d'experts n'ont pas à vivre en VRAM. Les diffuser depuis la RAM CPU permet à un coordinateur de tenir un modèle dont les experts dépassent sa VRAM — la fondation qui permet aux nœuds faibles de rejoindre un grand MoE.
Un 122B tient sur un seul coordinateur de 64 GB
Auparavant, l'anneau plaçait les poids en VRAM seulement, le 122B (77.6 GB) était donc infeasible sur un GCD de 64 GB. Avec les règles d'offload d'experts, le dry-run revient feasible :

Sortie du planner — format de règles -ot de moteur d'inférence.
node 0 layers [0,48] vram=62.6 ram=14.2 ot_rules=10 sample: blk\.38\.ffn_(up|down|gate)_(ch|)exps=CPU # inference engine -ot format
Porter les règles d'offload du planner jusqu'au vrai chargement
- planner — émet déjà
ot(règles-otjointes par virgules) dans chaque placement. - protocol.py — champ
StageStartRequest.otajouté. - runtime.py — transmet l'
otdu placement à la requête de stage. - stage_service.py — le coordinateur se lance avec
--override-tensor. linkcpp-servertransmet les arguments inconnus au llama-server d'origine,-ots'applique donc tel quel.
# stage_service.py — coordinator branch
if request.ot:
command += ["--override-tensor", request.ot]Vérifié par un test aller-retour du protocole ot et la confirmation que la commande du coordinateur émet --override-tensor ; le hub s'est redéployé proprement, sans régression. Restait alors : le chargement complet de 77 GB sur 2 nœuds (coordinateur avec offload + un téléphone tenant une fenêtre d'une couche de ~1.5 GB), en attente de serveur. Le cœur de M0 — l'offload du backbone qui permet aux nœuds faibles de participer à un grand MoE — était achevé au niveau du code et du planner.