Aller au contenu

Quantification et matériel

Ce que coûte un paramètre selon le format, et pourquoi « poids ouverts » ne veut pas dire « exécutable chez soi ».


Un paramètre, combien d'octets ?

Un paramètre est un nombre réel. Le stocker demande de choisir une précision.

Format Bits Octets Usage typique
FP32 32 4 entraînement historique, calculs de référence
BF16 16 2 standard de publication des poids
FP8 8 1 inférence en production
INT4 / NVFP4 4 0,5 inférence contrainte, exécution locale

Le passage de BF16 à FP8 divise la mémoire par deux ; à 4 bits, par quatre.

Pourquoi BF16 plutôt que FP16

BF16 (brain float 16) sacrifie de la précision relative pour conserver la même plage d'exposants que FP32. Les valeurs très petites ou très grandes ne débordent pas. En pratique, c'est le format qui entraîne et publie sans surprise.


Appliqué à Qwen3.8-Max

Le décompte vérifié donne 2,4460 T de paramètres, couche MTP incluse.

Format Poids seuls
BF16 4,89 To
FP8 2,45 To
4 bits 1,22 To

Le dépôt Hugging Face affiche 4,89 To sur 213 fragments — ce qui confirme le calcul à 0,04 % près et établit que la couche MTP est bien livrée. Voir Vérification des paramètres.

Qwen publie aussi une variante FP8 officielle, Qwen3.8-2.4T-A95B-FP8, plus téléchargée que la BF16 — signe que personne ne sert la BF16 en pratique.


Ce que la quantification abîme

Réduire la précision introduit une erreur d'arrondi sur chaque poids. Sur un calcul isolé, elle est négligeable. Sur une chaîne de 92 couches, elle s'accumule.

L'erreur ne se voit pas sur les benchmarks courts

Une perte de deux points sur une question à choix multiple ressemble à du bruit. Sur une tâche agentique de 200 tours, où chaque tour dépend du précédent, la même dégradation fait dérailler la trajectoire entière.

Règle empirique de 2026 : 4 bits pour le coup unique, 8 bits minimum pour l'agentique.

Les formats modernes limitent la casse par la quantification par blocs — un facteur d'échelle par groupe de 32 ou 64 poids plutôt qu'un pour tout le tenseur — et en gardant en pleine précision les couches sensibles, typiquement l'attention et les normalisations. C'est ce que font les variantes NVFP4 et MXFP4 publiées par la communauté et par AMD pour ce modèle.


Le calcul du matériel

Trois postes s'additionnent :

\[ \text{VRAM totale} = \underbrace{P \times b}_{\text{poids}} + \underbrace{n \times c}_{\text{cache KV}} + \underbrace{S}_{\text{état linéaire}} + \text{marge} \]
Symbole Signification Valeur
\(P\) paramètres 2,446 T
\(b\) octets par paramètre 2, 1 ou 0,5
\(n\) jetons en contexte jusqu'à 1 010 000
\(c\) octets de cache par jeton 94 208
\(S\) état récurrent 0,58 Go

On ne peut pas remplir un GPU à 100 % : il faut de la place pour les activations intermédiaires, les tampons de communication et la fragmentation. Le script joint retient 85 % d'utilisation effective.

Résultat, pour un contexte plein d'un million de jetons :

Précision H100/H200 (80 Go) B200 (180 Go)
BF16 74 GPU 33 GPU
FP8 38 GPU 17 GPU
4 bits 20 GPU 9 GPU

« Poids ouverts » n'est pas « auto-hébergeable »

Même dans le scénario le plus favorable — 4 bits, B200, contexte réduit — il faut une machine à huit GPU de très haut de gamme, soit plusieurs centaines de milliers d'euros.

La publication de ces poids a une valeur réelle : auditabilité, reproductibilité, absence de dépendance à un fournisseur unique, possibilité de distillation vers des modèles plus petits. Elle n'a pas la valeur qu'on associe d'habitude au terme « open weights » chez un particulier.


Le facteur oublié : la bande passante

Pour générer un jeton, un MoE doit lire depuis la mémoire tous les paramètres actifs — 95 G, soit 190 Go en BF16.

Une H100 offre environ 3,35 To/s de bande passante mémoire. Le plancher théorique par jeton :

\[ \frac{190\ \text{Go}}{3\,350\ \text{Go/s}} \approx 57\ \text{ms} \]

Soit un maximum d'environ 17 jetons par seconde sur un seul GPU idéalisé. En répartissant sur plusieurs GPU, on améliore ce chiffre — jusqu'à ce que la communication entre eux devienne à son tour le goulet.

Artificial Analysis mesure 47 jetons/s pour le service de Qwen. C'est cohérent avec un déploiement multi-GPU bien optimisé, et cela explique pourquoi le modèle reste lent malgré ses 3,94 % d'activation : le problème n'est pas le calcul, c'est le déplacement des poids.


À retenir

Ce chapitre en cinq points

  1. Les poids sont publiés en BF16 (2 octets), soit 4,89 To.
  2. FP8 divise par deux, 4 bits par quatre — au prix d'une dégradation qui se voit surtout sur les tâches longues.
  3. La VRAM nécessaire est poids + cache + marge, pas les poids seuls.
  4. Servir ce modèle à contexte plein demande 9 à 74 GPU selon la précision et le matériel.
  5. Le facteur limitant de la vitesse est la bande passante mémoire, pas la puissance de calcul.

Fin des Fondations. Vous pouvez maintenant lire config.json ligne par ligne.

Suite recommandée : Présentation pour le contexte industriel, ou directement Architecture · Vue d'ensemble pour le cœur du rapport.