Paramètres

Comment ce calcul est fait

Trois postes additionnés :

  • Poids = params × bits_par_param / 8. La quantification réduit ce poste sans toucher au reste.
  • KV cache = 2 × layers × kv_heads × head_dim × contexte × batch × octets_dtype. Le facteur 2 vient de K + V. Sur les architectures GQA / MQA, on utilise kv_heads (souvent 8) et non le nombre total de têtes.
  • Marge runtime = 1 GiB de runtime CUDA fixe + 5 % du poids des poids (estimation prudente pour les buffers d'activations et la fragmentation).

La VRAM annoncée par le constructeur (24 GiB sur une RTX 4090, 80 GiB sur un H100) est la capacité brute. Comptez 1 à 2 GiB de moins en pratique pour le driver, le framework et la mémoire qu'on ne veut pas saturer à 100 % (sinon les allocations cassent sous charge variable).

Pour creuser le sujet du KV cache et de la mémoire à l'inférence, l'article dédié explique pourquoi c'est lui — pas les poids — qui sature la VRAM en premier sur les longs contextes.

Limites

  • Modèles MoE (Mixtral, DeepSeek-V3) : la ligne params représente tous les experts, pas seulement ceux activés par token. Le calcul du KV cache reste correct.
  • Modèles à attention spéciale (MLA de DeepSeek-V3, attention SWA de Mistral) : l'estimation du KV cache surévalue la vraie consommation.
  • La VRAM réellement utilisable diffère selon le runtime (vLLM, llama.cpp ou TensorRT-LLM) — PagedAttention récupère 20 à 40 % de fragmentation interne par exemple.