Weights are a fixed cost you can look up. The KV cache is the one that moves, and past a certain context length it is the larger of the two. Almost every VRAM rule of thumb in circulation only describes the first.
Context and batch multiply the cache, not the weights
The KV cache is linear in both. Doubling the context doubles it exactly; serving two concurrent requests doubles it again. A Llama 3.1 8B at 128k context needs several times more memory for its cache than for its quantised weights, which is why a small model can still be the thing that runs out of VRAM. Quantising the cache to q8_0 halves it for a small quality cost, and it is usually the cheapest lever available.