C.W.K.
Stream
Lesson 12 of 12 · published

Block 안의 GQA — 구체 예시

~8 min · gqa, block-summary

Level 0Token
0 XP0/94 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

Track 4에서 GQA를 봤어. 이제 block 안에 두자. 변화는 local — K, V projection만 줄어들어 — 하지만 그 함의가 추론 전반에 cascade.

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 = block당 67M params.
  • K projection: 8192 × (8 × 128) = 8192 × 1024 = block당 8.4M params (풀 MHA면 67M).
  • V projection: 8192 × 1024 = block당 8.4M params (풀 MHA면 67M).
  • Output projection: 8192 × 8192 = 67M.

block당 총 attention params: 151M (풀 MHA는 ~268M). block당 절감: ~117M. 80 block 가로질러: GQA로 ~9.4B 파라미터 절감. 하지만 더 큰 win은 추론에서 — 토큰당 KV cache가 8배 축소, 64 × 128 대신 KV head 8개 × 128 차원만 저장하니까.

실전에서 'GQA'가 의미하는 게 이거야 — block의 구조적 결정이 추론할 때마다 반복해서 보상.

Code

Per-block memory accounting with GQA·python
def per_block_kv_cache(seq_len, n_kv_heads, d_head, dtype_bytes=2):
    # K and V each
    return 2 * seq_len * n_kv_heads * d_head * dtype_bytes

# Llama 3.3 70B per layer at 32K context, FP16
mha = per_block_kv_cache(32_000, 64, 128) / 1e6
gqa = per_block_kv_cache(32_000, 8, 128) / 1e6
print(f"Per-layer KV cache:  MHA {mha:.0f} MB,  GQA {gqa:.0f} MB,  ratio {mha/gqa:.0f}x")
# Across 80 layers, GQA saves tens of GB of cache.

External links

Exercise

128K 컨텍스트에서 layer당 KV-cache 크기 계산 — Llama 3.3 70B(8 KV head), Mixtral 8x22B(8 KV head), Mistral 7B(8 KV head), Qwen 2.5-7B(4 KV head). 다 d_head=128. 어느 게 cache 가장 작나? 서빙에 무슨 의미?

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.