You can compute the size from the model's shape. For qwen2.5:3b, Ollama reports 36 layers, 16 attention heads, 2 key/value heads, and 2,048 numbers per token. 2,048 divided among 16 heads gives 128 numbers per head.
For one token the model stores a key and a value (x 2), in each of 36 layers (x 36), for each of 2 key/value heads (x 2), each 128 numbers long (x 128). That is 2 x 36 x 2 x 128 = 18,432 numbers. At 16 bits, 2 bytes per number, it is 36,864 bytes, about 36.9 KB per token. For 8,000 tokens that is about 0.29 GB. The general formula is 2 x layers x key/value heads x numbers per head x bytes per number, per token, per request.
The number is small here because 16 query heads share just 2 sets of keys and values. This design is called grouped-query attention, and models such as Llama 3 and Mistral use it. The cache can also be stored in fewer bits. In the q8_0 format, 32 numbers take 34 bytes, which gives 18,432 x 34 / 32 = 19,584 bytes, about 19.6 KB per token, a little over half.