Le contexte 128k sur un desktop est un bail — le cache KV est la note, comptée en direct
Deux tenseurs par couche par token : 16 GiB pour un 8B à pleine fenêtre. Choisissez un modèle, tournez le contexte, et regardez le registre du locataire compter la formule en direct.
■ space · l'atelier des machines · fig 1
Llama 3.1 8B at 131,072 tokens in fp16: cache KV ≈ 16 GiB — aussi gros que les poids.
Le « 8B qui tient en 16 GiB » devient un problème à 32 GiB.
Le cache est linéaire en contexte et alloué d'avance — la RAM paie 128k que vous le remplissiez ou pas.
Le correctif est ennuyeux : règlez le contexte sur ce que vous utilisez vraiment — une fenêtre de 32k coûte un quart du cache 128k.
01LE COMPTOIR DU COMPTEUR
le locataire, c'est le cache kv — les roues font tourner la note que la carte n'imprime jamais
CACHE = POIDSà pleine fenêtre, le cache est aussi gros que le modèle auquel il appartient — une location de 32 GiB désormais
LOCATAIRE LLAMA 3.1 8B · FENÊTRE 128k · 131,072 TOKENS · CACHE 16.00 GiB · POIDS 16.0 GiB · PART 100% · NOURRI 0
les roues ont facturé avant que l'odomètre bouge — l'allocation est d'avance, le remplissage optionnel
02LA FORMULE QUE LES FICHES OMETTENT
une formule publique a actionné chaque chiffre de ces roues
cache_bytes = 2 × layers × context × kv_heads × head_dim × bytes_per_element
« La fenêtre de contexte n'est pas une option que vous activez. C'est un bail mémoire que vous payez chaque seconde où le serveur tourne. »
def kv_cache_gib(layers, kv_heads, head_dim, ctx, bytes_per=2):
return 2 * layers * ctx * kv_heads * head_dim * bytes_per / 2**30
print(kv_cache_gib(32, 8, 128, 131_072)) # Llama 3.1 8B -> 16.0
print(kv_cache_gib(28, 4, 128, 131_072)) # Qwen2.5 7B -> 7.0
verify: kv_cache_gib(32, 8, 128, 131_072) → 16.0 · kv_cache_gib(28, 4, 128, 131_072) → 7.0
03DEUX LOCATAIRES, UN COMPTOIR
une formule est de l'arithmétique jusqu'à ce qu'elle chiffre deux vraies fiches de modèle côte à côte
| Modèle (fp16) | Couches × têtes KV | Cache KV @ 128k | Poids | Cache vs poids |
|---|---|---|---|---|
| Llama 3.1 8B | 32 × 8 | ~16 GiB | ~16 GiB | ~100% |
| Qwen2.5 7B | 28 × 4 | ~7 GiB | ~15 GiB | ~47% |
appuyez sur la touche 1 du comptoir — la même fenêtre de 128k se remesure à 7.0 GiB pour qwen2.5 7b
config.json pour les trouver, ce qui vous dit comment ce nombre devait être lu04OÙ LA NOTE PLOIE
le compteur est honnête pour l'attention pleine — quatre coudes avant que vous ne signiez quoi que ce soit
Personne ne lit 128 000 tokens. Votre RAM paie pour chacun d'eux quand même.
config.json publics des modèles (couches, têtes KV, head_dim), telle qu'en expose Transformer Inference Arithmetic — la jauge du comptoir est cette même formule en JavaScript ; aucun banc d'essai à acheter, à un print de votre propre terminal.
fin du registre du locataire · rien de fetché · tout est local