30 points par GN⁺ 2025-08-13 | Aucun commentaire pour le moment. | Partager sur WhatsApp
  • En utilisant l’option --cpu-moe de llama-cpp, les couches d’experts MOE sont traitées sur le CPU, tandis que seules les couches d’attention sont déportées sur le GPU, ce qui permet d’obtenir de bonnes performances de préremplissage avec 5 à 8 Go de VRAM
  • Seuls les paramètres non experts résident sur le GPU, comme le cache KV, les poids et activations d’attention, les tables de routage, LayerNorm, etc., ce qui réduit fortement l’usage mémoire
  • Il est possible de faire tourner assez facilement le modèle 120B avec un GPU de niveau RTX 3060Ti et 64 à 96 Go de RAM système, avec les meilleures performances sur les GPU compatibles BF16 (RTX 3000+)
  • Avec 5 Go de VRAM, les performances mesurées atteignent 8,15 ms par token (122,66 tokens/s), et avec 8 Go de VRAM elles montent jusqu’à 7,44 ms par token (134,44 tokens/s)
  • L’architecture 120B est conçue pour être optimisée sur du matériel grand public, permettant une exécution rapide même dans des environnements limités en ressources GPU

Structure CPU-MOE et offloading GPU

  • L’option --cpu-moe permet de traiter toutes les couches d’experts (MOE) sur le CPU
    • Exemple : --n-cpu-moe 36 → exécute les 36 blocs MOE sur le CPU
    • Si nécessaire, il est possible de déplacer une partie des MOE vers le GPU pour ajuster les performances
  • Pour économiser la VRAM, seuls les éléments suivants restent en mémoire sur le GPU
    • cache KV (séquence)
    • poids et activations d’attention
    • tables de routage
    • LayerNorm et autres paramètres non experts
  • Les poids MOE ne résident pas sur le GPU, ce qui évite la charge des gros paramètres MLP

Mémoire et prérequis matériels

  • GPU : 5 à 8 Go de VRAM suffisent (ex. : RTX 3060Ti)
  • Un GPU compatible BF16 est optimal (série RTX 3000 ou plus)
  • RAM système : minimum 64 Go, idéalement 96 Go
    • En exploitant mmap sous Linux, les couches d’experts « chaudes » peuvent rester en mémoire même si le modèle complet n’y tient pas

Chiffres de performance

Environnement avec 5 Go de VRAM

  • Traitement du prompt : 8,15 ms/token (122,66 tokens/s)
  • Inférence : 55,44 ms/token (18,04 tokens/s)

Environnement avec 8 Go de VRAM (--n-cpu-moe 36, le reste sur GPU)

  • Traitement du prompt : 7,44 ms/token (134,44 tokens/s)
  • Inférence : 39,03 ms/token (25,62 tokens/s)

Environnement avec 22 Go de VRAM (une partie des MOE sur GPU)

  • Traitement du prompt : 6,13 ms/token (163,01 tokens/s)
  • Inférence : 32,45 ms/token (30,82 tokens/s)

Conclusion

  • La conception de GPT-OSS-120B est optimisée pour faire tourner rapidement de grands modèles même sur du matériel grand public
  • Grâce à son architecture CPU-MOE qui réduit la consommation de VRAM tout en conservant de bonnes performances, il convient particulièrement aux environnements où les ressources GPU sont limitées

Questions clés et réponses

Q1. Quelle est la consommation réelle de VRAM dans cette configuration ?

  • Auteur original : environ 5 Go de VRAM lorsque tous les MOE tournent sur le CPU, avec uniquement les couches d’attention sur le GPU
  • Précision complémentaire : seuls le cache KV, les poids et activations d’attention, les tables de routage et LayerNorm restent sur le GPU

Q2. Quelle quantité minimale de RAM est nécessaire ?

  • Auteur original : 64 Go minimum, 96 Go recommandés idéalement
  • Raison : mmap sous Linux garde en mémoire les couches d’experts « chaudes », ce qui permet un accès rapide sans charger le modèle complet

Q3. Déplacer une partie des couches MOE vers le GPU accélère-t-il beaucoup l’exécution ?

  • Auteur original : cela peut accélérer légèrement, mais sans différence majeure
  • Exemple :
    • Tous les MOE sur CPU : prompt à 134 tokens/s, inférence à 25 tokens/s
    • 8 MOE sur GPU : prompt à 163 tokens/s, inférence à 30 tokens/s
    • La consommation de VRAM monte alors à 22 Go

Q4. Quel GPU est adapté ?

  • Auteur original : une RTX 3060Ti ou mieux suffit, avec prise en charge BF16 recommandée (RTX 3000+)
  • Raison : toutes les couches hors MOE fonctionnent en BF16

Q5. Comment configurer la commande ?

  • Auteur original : exemple fourni sur la base de la PR #15157
    ~/build/llama.cpp/build-cuda/bin/llama-server \  
        -m $LLAMA_MODEL_DIR/gpt-oss-120b-mxfp4-00001-of-00003.gguf \  
        --n-cpu-moe 36 \  
        --n-gpu-layers 999 \  
        -c 0 -fa \  
        --jinja --reasoning-format none \  
        --host 0.0.0.0 --port 8502 --api-key "dummy"  
    

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.