Qwen 3.8 27B : Quantification 4 bits, Parallélisme Tensoriel vLLM et Analyse VRAM/Contexte
Qwen 3.8 27B : Guide de Déploiement avec vLLM et Parallélisme Tensoriel
Qwen 3.8 27B est un modèle transformer dense avec 27 milliards de paramètres, 64 couches et une dimension cachée de 5120. Il utilise Grouped-Query Attention (GQA) pour réduire la mémoire de la KV cache, ce qui le rend adapté aux contextes longs sur des configurations multi-GPU. Dans cet article, nous expliquons comment charger une version quantifiée en 4 bits du modèle avec vLLM et parallélisme tensoriel, calculer les besoins en VRAM pour les poids et la KV cache, et estimer la longueur maximale du contexte sur deux RTX 3090 et deux RTX 5090.
Charger Qwen 3.8 27B sur vLLM avec Parallélisme Tensoriel
vLLM prend en charge le parallélisme tensoriel (TP) pour distribuer le modèle sur plusieurs GPU. Avec TP size 2, chaque GPU contient la moitié des poids du modèle et calcule la moitié des opérations par couche, en synchronisant via NCCL. La commande ci-dessous démarre un serveur compatible OpenAI avec un modèle quantifié en 4 bits (par ex. AWQ ou GPTQ) et TP=2 :
python -m vllm.entrypoints.openai.api_server --model Qwen/Qwen3.8-27B --tensor-parallel-size 2 --gpu-memory-utilization 0.90 --kv-cache-dtype fp8
Le flag --gpu-memory-utilization contrôle la fraction de VRAM utilisée pour les poids, la KV cache et le contexte CUDA. Choisissez toujours la plus petite taille TP qui fait tenir le modèle pour minimiser l'overhead de communication. Si le modèle tient sur un seul GPU, évitez TP et lancez des instances séparées pour un meilleur débit.
Utilisation de la VRAM : Poids du Modèle et KV Cache
La VRAM est consommée par deux composants principaux : les poids du modèle et la KV cache. Pour un modèle quantifié en 4 bits, chaque paramètre occupe environ 0,5 octet (plus un petit overhead pour les échelles et les zéros). L'empreinte des poids est calculée comme suit :
| Composant | Valeur |
|---|---|
| Paramètres | 27 milliards |
| Octets par paramètre (4 bits) | 0,5 |
| VRAM poids (brut) | 13,5 Go |
| Contexte CUDA et buffer | 1-2 Go |
| Empreinte totale des poids | ~15 Go |
La taille de la KV cache dépend de la longueur du contexte, de la précision et de l'architecture du modèle. Pour Qwen 3.8 27B avec GQA, la formule est : 2 * num_layers * num_kv_heads * head_dim * seq_len * bytes_per_element. Avec 64 couches, 8 têtes KV et head_dim 128, nous pouvons calculer la KV cache pour un contexte de 32k.
| Précision | Octets/élément | Taille KV cache |
|---|---|---|
| BF16 | 2 | ~6,8 Go |
| FP8 | 1 | ~3,4 Go |
Calcul du Contexte Maximal sur 2x RTX 3090 et 2x RTX 5090
En supposant une VRAM totale de 48 Go pour deux RTX 3090 (24 Go chacune) et 64 Go pour deux RTX 5090 (32 Go chacune), nous soustrayons l'empreinte des poids (~15 Go) et l'overhead CUDA pour trouver la VRAM disponible pour la KV cache. Le contexte maximal est estimé en divisant la VRAM disponible par la taille de la KV cache par token.
| Matériel | VRAM totale | Poids | Disponible pour KV | Contexte max (FP8) |
|---|---|---|---|---|
| 2x RTX 3090 | 48 Go | 15 Go | 33 Go | ~300k tokens |
| 2x RTX 5090 | 64 Go | 15 Go | 49 Go | ~460k tokens |
Pour la KV cache en BF16, le contexte maximal serait environ la moitié des valeurs FP8, soit ~150k tokens sur 2x 3090 et ~230k tokens sur 2x 5090. Ces chiffres supposent un batch size de 1 et aucun autre overhead mémoire. En pratique, vLLM réserve de la mémoire pour les CUDA graphs et l'ordonnancement, donc le contexte réel peut être légèrement inférieur.
FP8 vs BF16 pour la KV Cache et Types de Stockage FP8
BF16 offre une précision supérieure mais consomme deux fois plus de mémoire que FP8. Pour l'inférence, FP8 est le choix préféré car il double la capacité de la KV cache avec une perte de précision négligeable. Au sein de FP8, il existe deux formats de stockage : E4M3 et E5M2. E4M3 offre un meilleur équilibre entre plage et précision et est recommandé pour la KV cache et les poids. E5M2 a moins de précision et est généralement utilisé pour les gradients en entraînement. Dans vLLM, vous pouvez activer la KV cache FP8 avec --kv-cache-dtype fp8.
| Format | Bits d'exposant | Bits de mantisse | Utilisation |
|---|---|---|---|
| E4M3 | 4 | 3 | KV cache et poids (recommandé) |
| E5M2 | 5 | 2 | Gradients en entraînement (éviter pour l'inférence) |
En conclusion, Qwen 3.8 27B avec quantification 4 bits peut être déployé efficacement sur des systèmes dual-GPU. L'utilisation de la KV cache FP8 maximise la longueur du contexte et le débit. Sur 2x RTX 3090, vous pouvez gérer ~300k tokens de contexte, tandis que 2x RTX 5090 offre ~460k tokens, ce qui rend les deux configurations excellentes pour le traitement de longs documents et le serving à haute concurrence.
Travaillons ensemble
Vous avez besoin de plus d'informations, d'aide pour votre projet ou pour développer une idée?
Qu'il s'agisse d'une question simple, d'un doute rapide ou d'une discussion de 5 minutes, envoyez-moi un message—cela ne coûte rien et je suis toujours prêt à vous aider. J'aime comprendre un problème, être créatif dans les solutions et me concentrer sur des idées simples, fiables et faciles à réaliser rapidement.
Me contacter →