Moteur d’inférence CUDA pour exécuter des modèles hybrides Qwen3.5/3.6 sur des cartes de minage (CMP 100-210)
(github.com/Haru-neo)En me demandant s’il existait un moyen peu coûteux de faire tourner de grands modèles, je suis tombé sur la CMP 100-210 et j’en ai acheté quatre.
Avec 16 Go de HBM2 chacune, ça semblait intéressant.
Mais NVIDIA a vraiment tout verrouillé de façon délibérée.
- Les Tensor Cores sont 64 fois plus lents (latence HMMA 8→512 cycles)
- PCIe Gen1 x1, sans P2P
- CUPTI est aussi bloqué, donc impossible d’utiliser
torch.profiler - C’est un e-fuse gravé dans le die, donc impossible à débloquer via le firmware (j’ai tout essayé)
Du coup, vLLM, le chemin par défaut de llama.cpp, FA et bnb ne fonctionnent pas.
Tout ce qui touche aux Tensor Cores via cuBLAS tourne à 1/64 de la vitesse ou plante.
Comme ça me faisait mal de voir 640 000 wons de GPU traîner sur le bureau, j’ai écrit moi-même un moteur d’inférence.
En ne gardant que les chemins qui ne déclenchent pas le throttling :
- Pour le GEMM, noyau maison en DP4A (int8, 17 TFLOP)
- Pour l’attention, FlashAttention maison + block-sparse style MInference
- Entre GPU, bridge de hidden state via pinned host (puisqu’il n’y a pas de P2P)
- Contexte 256K avec cache KV en 3 bits (WHT + Lloyd-Max), de 17 Go à 3,5 Go
Actuellement, pour les modèles hybrides Qwen3.5/3.6 (GDN + Attention), les versions 27B et 9B fonctionnent toutes les deux.
API compatible OpenAI, streaming, tool calls, vision (mmproj), /no_think, tout fonctionne.
Benchmarks (vs llama.cpp build 8462, même GGUF Q8_0, même matériel) :
- 9B sur un seul GPU, prefill : 1,22 ~ 2,99x
- 27B sur 3 GPU, prefill : 1,45 ~ 2,86x
- génération : +30 ~ 50 %
Limites, en toute honnêteté :
- MoE n’est pas pris en charge (hybride dense uniquement)
- Si vous avez une A100 / H100, utilisez vLLM. C’est bien plus rapide.
- Des choses comme DFlash existent seulement dans le code et ne tournent pas (drafter mismatch)
- Seul Q8_0 est officiellement pris en charge
J’espère que ça aidera celles et ceux qui sont coincés dans le même type d’environnement.
Comme c’est un moteur créé par un lycéen de seconde avec l’aide de Claude, il peut y avoir pas mal de bugs et de code spaghetti.
Les issues et PR sont les bienvenues !
Aucun commentaire pour le moment.