MQA (Multi-Query Attention) ๋ถ์
MQA (Multi-Query Attention) โ ๊ณต์ KV ํค๋์ ๋์ฝ๋ฉ ๋ฉ๋ชจ๋ฆฌ ๋์ญํญ ์ ๊ฐ
Multi-Query Attention(MQA)์ ์ฌ๋ฌ Query head๊ฐ ํ๋์ Key head์ Value head๋ฅผ ๊ณต์ ํ๋ Attention ๋ณํ์ ๋๋ค. Query head๋ ๊ทธ๋๋ก ์ ์งํ๋ฏ๋ก ์ฌ๋ฌ ํํ ๊ณต๊ฐ์์ ์ ์๋ฅผ ๊ณ์ฐํ ์ ์์ง๋ง, autoregressive decoding์์ ๋ฐ๋ณตํด์ ์ฝ๋ KV cache๋ ํจ์ฌ ์์์ง๋๋ค. ๋ฐ๋ผ์ MQA์ ์ฃผ๋ ๋ชฉ์ ์ ํ์ต FLOPs๋ฅผ ์ค์ด๋ ๊ฒ์ด ์๋๋ผ, ํ ํ ํฐ์ฉ ์์ฑํ ๋ ๋ฐ์ํ๋ KV cache ๋ฉ๋ชจ๋ฆฌ ๋์ญํญ๊ณผ ์ฉ๋์ ์ค์ด๋ ๊ฒ์ ๋๋ค.
MQA๋ 2019๋ Shazeer์ Fast Transformer Decoding: One Write-Head is All You Need์์ ์ ์๋์์ต๋๋ค. ์ ๋ ผ๋ฌธ์ WMT14 English-German ์คํ์์ multi-head baseline์ decoder step ๋น์ฉ 46 ยตs๊ฐ MQA์์ 3.8 ยตs๋ก ์ค์ด๋๋ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ ํ์ง๋ง, ์ด๋ TPUv2์ ๊ณ ์ ๋ ์คํ ์กฐ๊ฑด์ ์ธก์ ๊ฐ์ ๋๋ค. ์ดํ GQA๋ Query head์ KV head ์ฌ์ด์ ์ค๊ฐ ๊ฐ์์ ๊ทธ๋ฃน์ ๋์ด MQA์ ์๋์ MHA์ ํ์ง ์ฌ์ด๋ฅผ ์ ์ถฉํ์ต๋๋ค.
ํต์ฌ ๊ฐ๋
MHA, MQA, GQA์ head ๊ตฌ์ฑ
์ผ๋ฐ์ ์ธ Multi-Head Attention(MHA)์ ๊ฐ Query head์ ๋ณ๋์ K/V head๋ฅผ ๋ก๋๋ค. MQA๋ ๋ชจ๋ Query head๊ฐ ํ๋์ K/V head๋ฅผ ํจ๊ป ์ฌ์ฉํฉ๋๋ค. Grouped-Query Attention(GQA)์ Query head๋ฅผ ์ฌ๋ฌ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ๊ณ , ๊ทธ๋ฃน๋ง๋ค ํ๋์ K/V head๋ฅผ ๋ฐฐ์นํฉ๋๋ค.
๊ทธ๋ฆผ 1. Query head ์๋ ์ ์งํ๋ฉด์ KV head ์๋ง ์ค์ด๋ MQA/GQA์ ๊ตฌ์กฐ ๋น๊ต
Hugging Face Transformers์ Llama ๊ณ์ด ์ค์ ๋ num_key_value_heads๋ก ์ด ๊ตฌ๋ถ์ ํํํฉ๋๋ค.
num_key_value_heads = num_attention_heads: MHAnum_key_value_heads = 1: MQA1 < num_key_value_heads < num_attention_heads: GQA
๋ฐ๋ผ์ MQA๋ Query๊น์ง ํ๋๋ก ํฉ์น๋ ๋ฐฉ์์ด ์๋๋๋ค. Query๋ head๋ณ๋ก ๋ ๋ฆฝ์ ์ผ๋ก ์์ฑ๋๋ฉฐ, K/V๋ง ๊ณต์ ๋ฉ๋๋ค.
KV cache์ ํฌ๊ธฐ
๋ ์ด์ด ์๋ฅผ L, Query head ์๋ฅผ H, KV head ์๋ฅผ G, head dimension์ D, ์ํ์ค ๊ธธ์ด๋ฅผ T, ๋ฐฐ์น๋ฅผ B, KV ์๋ฃํ์ ๋ฐ์ดํธ ์๋ฅผ s๋ผ๊ณ ํ๋ฉด, ๋จ์ํ KV cache ์ฉ๋์ ๋ค์๊ณผ ๊ฐ์ด ๊ทผ์ฌํ ์ ์์ต๋๋ค.
KV_bytes โ 2 ร L ร B ร T ร G ร D ร s
์์ 2๋ Key์ Value๋ฅผ ํจ๊ป ์ ์ฅํ๊ธฐ ๋๋ฌธ์
๋๋ค. MHA์์๋ G=H, MQA์์๋ G=1, GQA์์๋ 1<G<H์
๋๋ค. ๊ฐ์ H, D, L, B, T, ์๋ฃํ์ด๋ผ๋ฉด MQA์ KV ์ฉ๋์ MHA์ 1/H, GQA๋ G/H ์์ค์
๋๋ค. ์ค์ ๊ตฌํ์์๋ tensor parallelism์ shard, padding, block allocator, scale ๋ฉํ๋ฐ์ดํฐ๊ฐ ์ถ๊ฐ๋๋ฏ๋ก ์ด ์์ ๊ตฌ์กฐ์ ์ธ ๋น๊ต์ฉ์ผ๋ก ๋ณด๋ ๊ฒ์ด ์์ ํฉ๋๋ค.
์ decoding์์ ํนํ ํจ๊ณผ์ ์ธ๊ฐ
Prefill์ ์ฌ๋ฌ ์์น์ Query๋ฅผ ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌํ ์ ์์ด GEMM์ ๊ณ์ฐ๋๊ณผ GPU ํ์ฉ๋ฅ ์ด ์ค์ํฉ๋๋ค. ๋ฐ๋ฉด decode๋ ๋ณดํต ์ Query ํ ๊ฐ๋ง ์ถ๊ฐํ๊ณ ๊ณผ๊ฑฐ ์ ์ฒด K/V๋ฅผ ๋ค์ ์ฝ์ต๋๋ค. ์ด๋ ์ฐ์ฐ๋๋ณด๋ค HBM์์ KV๋ฅผ ๊ฐ์ ธ์ค๋ ๋น์ฉ์ด ๋ณ๋ชฉ์ด ๋๊ธฐ ์ฌ์ฐ๋ฏ๋ก, KV head ์๋ฅผ ์ค์ด๋ MQA์ ํจ๊ณผ๊ฐ ์ปค์ง๋๋ค.
MQA๋ ๋ค์ ๋ค ๊ฐ์ง๋ฅผ ๋์์ ์ค์ ๋๋ค.
- KV cache์ ์ ์ฅ ์ฉ๋
- ๋งค decoding step์์ ์ฝ์ด์ผ ํ๋ K/V ๋ฐ์ดํฐ๋
- K/V projection ๊ฒฐ๊ณผ์ ์ ์ฅยท์ด๋๋
- ๋๊ท๋ชจ ๋ฐฐ์น์์ ์์ฒญ ํ๋๊ฐ ์ฐจ์งํ๋ ๋ฉ๋ชจ๋ฆฌ ๋ฐ์๊ตญ
๋ฐ๋ฉด Query projection, attention score ๊ณ์ฐ์ Query head ์, output projection์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ์ง๋ฉ๋๋ค. ๋ฐ๋ผ์ MQA๋ฅผ "Attention ์ ์ฒด๊ฐ 1๊ฐ head๊ฐ ๋๋ ๊ธฐ๋ฒ"์ผ๋ก ์ดํดํ๋ฉด ์ ๋ฉ๋๋ค.
๋น๊ต/๋ถ์
| ํญ๋ชฉ | MHA | GQA | MQA |
|---|---|---|---|
| Query head ์ | H |
H |
H |
| KV head ์ | H |
G, 1<G<H |
1 |
| KV cache ๋น์จ(MHA=1) | 1 | G/H |
1/H |
| head๋ณ K/V ํํ | ์์ ํ ๋ ๋ฆฝ | ๊ทธ๋ฃน ๋ด๋ถ ๊ณต์ | ์ ์ฒด Query๊ฐ ๊ณต์ |
| decoding ๋์ญํญ | ๊ฐ์ฅ ํผ | ์ค๊ฐ | ๊ฐ์ฅ ์์ |
| ํ์งยทํ๋ ์ํ | ๊ธฐ์ค์ | MQA๋ณด๋ค ๋ฎ์ | ์๋์ ์ผ๋ก ํผ |
| ๊ธฐ์กด MHA checkpoint ๋ณํ | ํด๋น ์์ | uptraining ๋๋ ์ฌํ์ต | uptraining ๋๋ ์ฌํ์ต |
๊ฐ๋จํ ์
H=32, D=128, FP16(s=2)์ธ ํ ๋ ์ด์ด์์ ํ ํฐ ํ๋์ K/V ์ ์ฅ๋์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
| ๊ตฌ์ฑ | KV head ์ | ํ ํฐ๋น K/V ์์ | FP16 ์ ์ฅ๋ |
|---|---|---|---|
| MHA | 32 | 2 ร 32 ร 128 |
16 KiB |
| GQA-8 | 8 | 2 ร 8 ร 128 |
4 KiB |
| MQA | 1 | 2 ร 1 ร 128 |
0.5 KiB |
์ด๋ ํ ๋ ์ด์ดยทํ ํ ํฐ๋ง์ ๊ฐ์ ๋๋ค. 32๊ฐ ๋ ์ด์ด, ๊ธด ๋ฌธ๋งฅ, ์ฌ๋ฌ ์์ฒญ์ด ๊ฒน์น๋ฉด ์ฐจ์ด๊ฐ ๋์ ๋ฉ๋๋ค. ๋ค๋ง KV head๋ฅผ ์ค์๋ค๊ณ ํด์ Query head์ ํ์ํ ์ฐ์ฐ๊ณผ ๋ชจ๋ธ ๊ฐ์ค์น ์ ์ฒด๊ฐ ๊ฐ์ ๋น์จ๋ก ์ค์ด๋๋ ๊ฒ์ ์๋๋๋ค.
์ ํ๋์ ์๋์ ์ ์ถฉ
KV๋ฅผ ๊ณต์ ํ๋ฉด ๊ฐ head๊ฐ ์๋ก ๋ค๋ฅธ K/V projection์ ์ฌ์ฉํ๋ ์์ ๋๊ฐ ์ฌ๋ผ์ง๋๋ค. ์ ๋ ผ๋ฌธ์ MQA๊ฐ baseline๋ณด๋ค ์ฝ๊ฐ ๋ฎ์ ํ์ง์ ๋ณด์ด์ง๋ง ๋์ฒด๋ก ๋น์ทํ ์์ค์ด๋ผ๊ณ ๋ณด๊ณ ํ์ต๋๋ค. ์ดํ GQA ๋ ผ๋ฌธ์ ๊ธฐ์กด MHA checkpoint๋ฅผ ํ๊ท pooling ๋ฑ์ผ๋ก KV head๋ฅผ ์ค์ธ ๋ค ์๋ pre-training compute์ 5%๋ฅผ ์ฌ์ฉํ๋ uptraining์ผ๋ก ํ์ง์ ํ๋ณตํ๋ ๋ฐฉ๋ฒ์ ์ ์ํ๊ณ , ์ค๊ฐ ๊ฐ์์ KV head๊ฐ MQA์ ๊ฐ๊น์ด ์๋์ MHA์ ๊ฐ๊น์ด ํ์ง์ ์ ๊ณตํ๋ค๊ณ ๋ณด๊ณ ํ์ต๋๋ค.
๋์ ์๋ฆฌ
1. Projection ๋จ๊ณ
์
๋ ฅ hidden state X์์ Query๋ H๊ฐ head๋ก ํฌ์ํ๊ณ , Key์ Value๋ G๊ฐ head๋ก ํฌ์ํฉ๋๋ค. MQA์์๋ G=1์ด๋ฏ๋ก K/V projection์ ์ถ๋ ฅ shape๊ฐ Query projection๋ณด๋ค ์์ต๋๋ค.
Q = X ยท Wq -> [B, H, T, D]
K = X ยท Wk -> [B, G, T, D]
V = X ยท Wv -> [B, G, T, D]
MHA์ ๊ฒฝ์ฐ G=H์ด๊ณ , MQA์ ๊ฒฝ์ฐ G=1์
๋๋ค. GQA์์๋ ๊ฐ Query head๊ฐ H/G๊ฐ์ Query group ์ค ํ๋์ ์ํฉ๋๋ค. H๊ฐ G๋ก ๋๋์ด ๋จ์ด์ง๋ ์ค์ ์ด ์ผ๋ฐ์ ์ด์ง๋ง, ์ค์ ํ๋ ์์ํฌ๋ ๋ชจ๋ธ ์ค์ ์ ์ ์ฝ์ ๋ณ๋๋ก ๊ฒ์ฌํฉ๋๋ค.
2. Attention์์ K/V broadcast
๊ฐ Query head๋ ์์ ์ด ์ํ KV group์ K์ V๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ ผ๋ฆฌ์ ์ผ๋ก๋ K/V๋ฅผ Query head ์์ ๋ง์ถฐ broadcast ๋๋ repeatํ ๊ฒ๊ณผ ๊ฐ์ง๋ง, ํจ์จ์ ์ธ ์ปค๋์ ์ค์ ๋ก ๋์ผํ K/V๋ฅผ ๋งค๋ฒ ๋ณต์ ํ์ง ์๊ณ group index๋ก ์ฐธ์กฐํ ์ ์์ต๋๋ค.
๊ทธ๋ฆผ 2. ํ ํ ํฐ decode์์ Query๋ H๊ฐ๋ฅผ ์ ์งํ๊ณ K/V cache๋ G๊ฐ๋ง ์ฝ๋ ํ๋ฆ
group(h) = floor(h / (H / G))
score[h] = softmax(Q[h] ยท K[group(h)]^T / sqrt(D))
O[h] = score[h] ยท V[group(h)]
Y = concat(O[0], ..., O[H-1]) ยท Wo
MQA์์๋ ๋ชจ๋ h์ ๋ํด group(h)=0์
๋๋ค. ์ฆ, score vector๋ head๋ณ๋ก ๋ค๋ฅด์ง๋ง ๋ชจ๋ head๊ฐ ๊ฐ์ K/V sequence๋ฅผ ์กฐํํฉ๋๋ค. ์ด ์ฐจ์ด ๋๋ฌธ์ MQA๋ ํ๋์ Attention ๊ฒฐ๊ณผ๋ฅผ ๋ชจ๋ head์ ๋ณต์ฌํ๋ ๊ฒ์ด ์๋๋๋ค.
3. Incremental decoding๊ณผ cache append
์ ํ ํฐ์ hidden state x_t๊ฐ ๋ค์ด์ค๋ฉด ๊ฐ ๋ ์ด์ด๋ ์ q_t๋ฅผ H๊ฐ ๋ง๋ค๊ณ , ์ k_t, v_t๋ G๊ฐ๋ง ๋ง๋ญ๋๋ค. ์ K/V๋ cache์ ๋ง์ง๋ง ์์น์ ์ถ๊ฐ๋๊ณ , ํ์ฌ Query๋ ์ด์ ๋ชจ๋ ์์น์ K/V์ attention์ ์ํํฉ๋๋ค.
for each layer:
q_t = project_query(x_t) # H heads
k_t = project_key(x_t) # G heads
v_t = project_value(x_t) # G heads
append(K_cache, k_t)
append(V_cache, v_t)
for h in query_heads:
g = h // (H / G)
a_h = softmax(q_t[h] @ K_cache[g].T / sqrt(D))
o_h = a_h @ V_cache[g]
์ด ๊ฒฝ๋ก์์ ๋งค step ์ฝ๋ cache์ ๊ธธ์ด T๋ ๊ฐ์ง๋ง head ์ G๊ฐ ์ค์ด๋ญ๋๋ค. ๊ทธ๋์ ๊ธด ๋ฌธ๋งฅ์ด๋ ํฐ batch์์ HBM read pressure๊ฐ ์ค๊ณ , ๊ฐ์ GPU ๋ฉ๋ชจ๋ฆฌ๋ก ๋ ๋ง์ sequence๋ฅผ ์์ฉํ ์ ์์ต๋๋ค.
4. Tensor parallelism ์ฃผ์์
์ฌ๋ฌ GPU์ ๋ชจ๋ธ์ tensor parallel๋ก ๋๋ ๋๋ Query head์ KV head์ ๋ฐฐ์น๊ฐ ํต์ ๋์ ์ํฅ์ ์ค๋๋ค. KV head๊ฐ ๋๋ฌด ์ ์ผ๋ฉด ๊ฐ shard์ KV head๋ฅผ ๊ท ๋ฑํ๊ฒ ๋ฐฐ์นํ๊ธฐ ์ด๋ ต๊ฑฐ๋, attention ์ ์ KV๋ฅผ broadcastํ๋ ํต์ ์ด ํ์ํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ด๋ก ์ ์ธ H/G ๋ฉ๋ชจ๋ฆฌ ์ ๊ฐ์ด ๊ทธ๋๋ก end-to-end latency ํฅ์์ผ๋ก ์ด์ด์ง๋์ง๋ GPU ์, head ๋ฐฐ์น, fused attention kernel, interconnect์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค.
์ฅ๋จ์
์ฅ์
- KV head ์๋ฅผ ์ค์ฌ KV cache ์ฉ๋๊ณผ ๋งค decode step์ ๋ฉ๋ชจ๋ฆฌ ์ฝ๊ธฐ๋์ ์ง์ ์ค์ ๋๋ค.
- Query head ์๋ฅผ ์ ์งํ๋ฏ๋ก ๋จ์ํ ์ ์ฒด Attention์ ์ ์ฐจ์์ผ๋ก ์ถ์ํ๋ ๊ฒ๋ณด๋ค ํํ๋ ฅ์ ๋ณด์กดํฉ๋๋ค.
- ๊ธด context, ํฐ batch, beam search์ ๊ฐ์ด KV cache๊ฐ ์ปค์ง๋ serving workload์ ํนํ ์ ๋ฆฌํฉ๋๋ค.
- GQA๋ผ๋ ์ค๊ฐ ์ง์ ์ ํตํด ํ์ง๊ณผ ๋ฉ๋ชจ๋ฆฌ ๋์ญํญ ์ฌ์ด๋ฅผ ๋ชจ๋ธ๋ณ๋ก ์กฐ์ ํ ์ ์์ต๋๋ค.
- PagedAttention, continuous batching, KV cache quantization๊ณผ ์ง๊ต์ ์ผ๋ก ๊ฒฐํฉํ ์ ์์ต๋๋ค. MQA๋ head ์ฐจ์, PagedAttention์ ๋ฐฐ์นยทํ ํฐ์ ๋ฐฐ์น ๋ฐฉ์, quantization์ ์์ ์ ๋ฐ๋๋ฅผ ์ค์ด๋ ๊ธฐ๋ฒ์ ๋๋ค.
๋จ์
- ๋ชจ๋ Query head๊ฐ ๊ฐ์ K/V ํํ์ ๊ณต์ ํ๋ฏ๋ก MHA ๋๋น ํ์ง ์ ํ๊ฐ ์๊ธธ ์ ์์ต๋๋ค.
- ๊ธฐ์กด MHA checkpoint๋ฅผ ๋จ์ํ ์๋ผ์ MQA๋ก ๋ฐ๊พธ๋ฉด ๋ถํฌ๊ฐ ๋ฌ๋ผ์ง๋๋ค. mean pooling ๊ธฐ๋ฐ uptraining์ด๋ ๋ณ๋ ์ฌํ์ต์ด ํ์ํ ์ ์์ต๋๋ค.
- KV head๊ฐ 1๊ฐ๋ผ์ GPUยทtensor parallel shard์ ๊ท ๋ฑํ๊ฒ ๋ฐฐ์นํ๊ธฐ ์ด๋ ต๊ณ , ๊ตฌํ์ ๋ฐ๋ผ broadcast ํต์ ์ด ์๊ธธ ์ ์์ต๋๋ค.
- Prefill์์๋ decode๋งํผ KV read bandwidth๊ฐ ์ง๋ฐฐ์ ์ด์ง ์์ ์ ์์ด, MQA์ ํจ๊ณผ๊ฐ workload ์ ์ฒด์์ ๋์ผํ์ง ์์ต๋๋ค.
- Query ๊ณ์ฐ๊ณผ output projection์ ํฌ๊ฒ ์ค์ง ์์ผ๋ฏ๋ก, MQA๋ฅผ ์ ์ฉํด๋ compute-bound workload์ ์๋๊ฐ ๊ฐ์ ๋น์จ๋ก ๊ฐ์ ๋์ง๋ ์์ต๋๋ค.
๊ด๋ จ ๊ธฐ์ ๋ฐ ์ฐธ๊ณ ๋ฌธํ
| ๋ฌธ์/์ฐ๊ตฌ | ์ฐ๊ฒฐ์ |
|---|---|
| LLM Basics | Transformer decoder, prefill/decode, KV cache์ ๊ธฐ๋ณธ ๊ฐ๋ |
| PagedAttention Analysis | KV cache๋ฅผ ๋ธ๋ก์ผ๋ก ๋ฐฐ์นํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ |
| KV Cache Quantization Analysis | KV ์์์ FP16/FP8/INT8/์ ๋นํธ ํํ |
| MLA Analysis | KV๋ฅผ latent representation์ผ๋ก ์์ถํ๋ ๋ค๋ฅธ ๊ตฌ์กฐ์ ์ ๊ทผ |
| Shazeer, Fast Transformer Decoding: One Write-Head is All You Need, arXiv:1911.02150 | MQA ์ ์๊ณผ incremental decoding ๋น์ฉ ๋ถ์ |
| Ainslie et al., GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints, EMNLP 2023, arXiv:2305.13245 | GQA์ MHA checkpoint uptraining |
Hugging Face Transformers LlamaConfig ๋ฌธ์ |
num_key_value_heads๋ฅผ ํตํ MHA/GQA/MQA ์ค์ ์ ์ |
๊ตฌํ ์ ํ์ธํ ํญ๋ชฉ
- ๋ชจ๋ธ config์
num_attention_heads,num_key_value_heads,head_dim์ด ์๋ก ์ผ๊ด์ ์ธ์ง ํ์ธํฉ๋๋ค. - KV cache shape๊ฐ
[batch, kv_heads, sequence, head_dim]์ธ์ง, backend๊ฐ ์๊ตฌํ๋ layout์ธ์ง ํ์ธํฉ๋๋ค. - GQA/MQA์ KV repeat๊ฐ ์ค์ ๋ณต์ ์ธ์ง, attention kernel ๋ด๋ถ์ ๋ ผ๋ฆฌ์ broadcast์ธ์ง ํ์ธํฉ๋๋ค.
- MQA์ quantized cache๋ฅผ ํจ๊ป ์ฌ์ฉํ ๋ scale์ ์ถ๊ณผ KV group mapping์ด ์ผ์นํ๋์ง ํ์ธํฉ๋๋ค.
- ํ์ง์ perplexity๋ง ๋ณด์ง ๋ง๊ณ long-context retrieval, instruction following, reasoning ๋ฑ ์ค์ workload์์ ์ธก์ ํฉ๋๋ค.
ํต์ฌ ์ ๋ฆฌ
MQA๋ H๊ฐ์ Query head๋ฅผ ์ ์งํ๋ฉด์ K/V head๋ฅผ 1๊ฐ๋ก ๊ณต์ ํด KV cache์ ์ฉ๋๊ณผ decoding ๋ฉ๋ชจ๋ฆฌ ๋์ญํญ์ ์ค์ด๋ Attention ๊ตฌ์กฐ์
๋๋ค. KV cache ์ฉ๋์ KV head ์ G์ ๋น๋กํ๋ฏ๋ก MHA ๋๋น GQA๋ G/H, MQA๋ 1/H ์์ค์ผ๋ก ์ค์ด๋ค ์ ์์ต๋๋ค. ๋์ K/V ํํ์ ๊ณต์ ํ๋ ๋๊ฐ๋ก ํ์ง ์ ํ์ tensor parallel ๋ฐฐ์น ์ ์ฝ์ด ์๊ธธ ์ ์์ด, ๊ธฐ์กด checkpoint์๋ uptraining์ด๋ GQA๊ฐ ์ค์ฉ์ ์ธ ์ ์ถฉ์ด ๋ฉ๋๋ค. PagedAttention๊ณผ quantization์ด ๊ฐ๊ฐ ๋ฐฐ์น ๋ฐฉ์๊ณผ ์์ ์ ๋ฐ๋๋ฅผ ์ค์ด๋ ๊ฒ๊ณผ ๋ฌ๋ฆฌ, MQA๋ Attention์ head ์ฐจ์์ ์ค์ด๋ ๊ธฐ๋ฒ์ด๋ฉฐ ์ธ ๊ฐ์ง๋ฅผ ํจ๊ป ์ ์ฉํ ์ ์์ต๋๋ค.
์ฃผ์ โ ์ ๋
ผ๋ฌธ์ 46 ยตsโ3.8 ยตs ์์น๋ WMT14 English-German, TPUv2, ํน์ batch์ sequence length์ incremental decoding ์ธก์ ๊ฐ์
๋๋ค. ์ค์ ์ด๋์ ๋ชจ๋ธ์ H/G, context length, batch size, attention kernel, tensor parallelism, interconnect์ prefill/decode ๋น์จ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค.