You've seen GQA in Track 4. Now place it inside the block. The change is local — only the K and V projections shrink — but the implications cascade through inference.
For Llama 3.3 70B (d_model=8192, n_q_heads=64, n_kv_heads=8, d_head=128):
- Q projection: 8192 × (64 × 128) = 8192 × 8192 = 67M params per block.
- K projection: 8192 × (8 × 128) = 8192 × 1024 = 8.4M params per block (was 67M with full MHA).
- V projection: 8192 × 1024 = 8.4M params per block (was 67M with full MHA).
- Output projection: 8192 × 8192 = 67M.
Total attention params per block: 151M (vs ~268M with full MHA). Per-block savings: ~117M. Across 80 blocks: ~9.4B parameters saved by GQA. But the bigger win is at inference: the KV cache per token shrinks 8× because we store only 8 KV heads × 128 dims instead of 64 × 128.
This is what 'GQA' means in practice: a structural decision in the block that pays off again and again every time you run inference.