LLM Basics
LLM ๊ธฐ์ด โ ๋ํ ์ธ์ด ๋ชจ๋ธ์ ์๋ฆฌ
Tokenization ยท Transformer ยท Self-Attention ยท Training ยท Inference & KV Cache
๊ฐ์
LLM(Large Language Model, ๋ํ ์ธ์ด ๋ชจ๋ธ)์ ์ง๊ธ๊น์ง์ ํ ํฐ์ ์ ๋ ฅ์ผ๋ก ๋ฐ์ ๋ค์ ํ ํฐ์ ํ๋ฅ ๋ถํฌ๋ฅผ ์์ธกํ๋๋ก ํ์ต๋ ๋ชจ๋ธ์ ๋๋ค. ์ด ๋จ์ํ ๋ชฉ์ ์ ๊ฑฐ๋ํ ๋ฐ์ดํฐ์ ์ถฉ๋ถํ ํ๋ผ๋ฏธํฐ ๊ท๋ชจ๋ก ๋ฐ์ด๋ถ์ด๋ฉด ๋ฒ์ญ, ์์ฝ, ์ฝ๋ฉ, ์ง์์๋ต ๊ฐ์ ๋ค์ํ ์์ ์ด ํ ๋ชจ๋ธ ์์์ ๋ํ๋ฉ๋๋ค.
์ค์ ์์คํ ๊ด์ ์์ LLM์ ํ์ต๋ณด๋ค ์ถ๋ก ์์ ๋ ๋ถ๋ช ํ ๋ณ๋ชฉ์ ๋๋ฌ๋ ๋๋ค. prefill์ ํฐ ํ๋ ฌ๊ณฑ์ด ์ค์ฌ์ธ ์ฐ์ฐ ์ง์ฝ ๋จ๊ณ์ด๊ณ , decode๋ KV cache๋ฅผ ๋ฐ๋ณตํด์ ์ฝ๋ ๋ฉ๋ชจ๋ฆฌ ์ง์ฝ ๋จ๊ณ์ ๋๋ค. ๊ทธ๋์ LLM ๊ธฐ์ด๋ฅผ ์ดํดํ ๋๋ ๋ชจ๋ธ ๊ตฌ์กฐ๋ฟ ์๋๋ผ KV cache, ๋ฉ๋ชจ๋ฆฌ ๋์ญํญ, ์๋น ๋ฐฉ์๊น์ง ํจ๊ป ๋ณด๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
๊ทธ๋ฆผ 1. ์ ๋ ฅ โ ํ ํฐํ โ ์๋ฒ ๋ฉ โ Transformer โ ํ๋ฅ ๋ถํฌ โ ์ํ๋ง์ ์๊ธฐํ๊ท ๋ฐ๋ณต
1. ํต์ฌ ๊ฐ๋
ํ ํฐ๊ณผ ํ ํฐํ
- ํ ํฐ(token)์ ํ
์คํธ๋ฅผ ๋๋ ๋จ์์
๋๋ค. ์ค์ LLM์ ๋จ์ด๋ณด๋ค ์์ ์๋ธ์๋(subword)๋ฅผ ์์ฃผ ์ฌ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค์ด
running์run๊ณผning์ฒ๋ผ ๋๋ ์ ์์ต๋๋ค. - ํ ํฐํ๋ ๋ณดํต BPE(Byte-Pair Encoding)๋ ๊ทธ ๋ณํ(WordPiece, SentencePiece)์ ์ฌ์ฉํฉ๋๋ค.
- ๊ฐ ํ ํฐ์ ์ ์ ID๋ก ๋ฐ๋์ด ๋ชจ๋ธ์ ๋ค์ด๊ฐ๊ณ , ๋ชจ๋ธ ์ถ๋ ฅ์ ์ดํ ์ ์ฒด์ ๋ํ ๋ค์ ํ ํฐ ํ๋ฅ ์ ๋๋ค.
Transformer
์ค๋๋ ๋๋ถ๋ถ์ LLM์ Transformer๋ฅผ ์ฌ์ฉํฉ๋๋ค. GPT ๊ณ์ด์ decoder-only ๊ตฌ์กฐ๋ก, ๋์ผํ Transformer ๋ธ๋ก์ ์ฌ๋ฌ ์ธต ์์ ๋ง๋ญ๋๋ค. ์ ๋ ฅ ํ ํฐ์ ๋ฒกํฐ๋ก ๋ฐ๊พธ๊ณ , ๋ธ๋ก์ ํต๊ณผ์์ผ ๋ฌธ๋งฅ์ด ๋ฐ์๋ ํํ์ ๋ง๋ ๋ค, ๋ง์ง๋ง์ ๋ค์ ํ ํฐ ์ ์(logits)๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
- Embedding: ํ ํฐ ID๋ฅผ
d_model์ฐจ์์ ๋ฒกํฐ๋ก ๋ณํํฉ๋๋ค. - ์์น ์ ๋ณด: ํ ํฐ ์์๋ฅผ ์๋ ค์ฃผ๋ ์ ํธ์ ๋๋ค. ์์กฐ Transformer๋ sinusoidal positional encoding์, ํ๋ LLM์ RoPE๋ ALiBi๋ฅผ ๋ง์ด ์๋๋ค.
- ๋ธ๋ก:
LayerNorm -> Self-Attention -> Residual๊ณผLayerNorm -> FFN -> Residual๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. - FFN: ํ ํฐ๋ณ ๋น์ ํ ๋ณํ์ ๋ด๋นํ๋ 2์ธต MLP์ ๋๋ค. ์ต์ ๋ชจ๋ธ์ SwiGLU ๊ฐ์ ๊ฒ์ดํธํ ๋ณํ์ ์์ฃผ ์๋๋ค.
- LM Head: ๋ง์ง๋ง ํํ์ ์ดํ ํฌ๊ธฐ๋งํผ์ ์ ์๋ก ๋ฐ๊ฟ๋๋ค. ์ ๋ ฅ ์๋ฒ ๋ฉ๊ณผ ๊ฐ์ค์น๋ฅผ ๊ณต์ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
์๊ธฐํ๊ท ์์ฑ
LLM์ ํ ๋ฒ์ forward๋ก ๋ค์ ํ ํฐ 1๊ฐ์ ๋ถํฌ๋ฅผ ๋ด๋๊ณ , ๊ทธ์ค ํ๋๋ฅผ ์ ํํด ๋ค์ ๋ถ์ธ ๋ค ๋ค์ ์์ธกํ๋ ๊ณผ์ ์ ๋ฐ๋ณตํฉ๋๋ค. ์ด ๋ฐ๋ณต์ด ์๊ธฐํ๊ท ์์ฑ์ ๋๋ค.
์ค์ผ์ผ๋ง๊ณผ ์ถ๋ก ์งํ
- LLM ์ฑ๋ฅ์ ๋์ฒด๋ก ํ๋ผ๋ฏธํฐ ์, ํ์ต ํ ํฐ ์, ํ์ต compute๊ฐ ์ปค์ง์๋ก ๊ฐ์ ๋๋ ์ค์ผ์ผ๋ง ๋ฒ์น ๊ฒฝํฅ์ ๋ณด์ ๋๋ค. ๋ค๋ง ๊ฐ์ ์ฑ๋ฅ์ ๋ ๋ฎ์ ๋น์ฉ์ผ๋ก ์ป๊ธฐ ์ํด์๋ ๋ฐ์ดํฐ ํ์ง, optimizer ์ค์ , ๋ณ๋ ฌํ ์ ๋ต๊น์ง ํจ๊ป ์กฐ์ ํด์ผ ํฉ๋๋ค.
- ์ถ๋ก ์์คํ ์์๋ TTFT(Time To First Token)์ ํ ํฐ๋น ์ง์ฐ ์๊ฐ์ด ๋ํ ์งํ์ ๋๋ค. prefill ์ต์ ํ๋ TTFT๋ฅผ ์ค์ด๊ณ , decode ์ต์ ํ๋ ์ด๋น ์์ฑ ํ ํฐ ์๋ฅผ ๋์ด๋ ๋ฐฉํฅ์ผ๋ก ์๋ํฉ๋๋ค.
- ์ต๊ทผ ๋ชจ๋ธ์ MHA ๋์ GQA(Grouped Query Attention)๋ MQA(Multi-Query Attention)๋ฅผ ์จ์ KV cache ํฌ๊ธฐ์ ๋ฉ๋ชจ๋ฆฌ ๋์ญํญ ์๊ตฌ๋ฅผ ์ค์ด๊ธฐ๋ ํฉ๋๋ค.
2. ๋น๊ต/๋ถ์
| ๊ตฌ๋ถ | Prefill | Decode |
|---|---|---|
| ์ ๋ ฅ | ํ๋กฌํํธ ์ ์ฒด | ์ ํ ํฐ 1๊ฐ |
| ์ฐ์ฐ ํน์ฑ | ํฐ ํ๋ ฌ๊ณฑ ์ค์ฌ | ์์ ์ฐ์ฐ ๋ฐ๋ณต |
| ๋ณ๋ชฉ | compute-bound | memory-bound |
| KV cache | ํ ๋ฒ ๊ณ์ฐํด ์ ์ฅ | ์ ์ฅ๋ KV๋ฅผ ์ฌ์ฌ์ฉ |
| ์ฒด๊ฐ ์ํฅ | TTFT์ ์ง์ ์ํฅ | ์์ฑ ์๋์ ์ง์ ์ํฅ |
| ์ํ๋ง | ๋์ | ํน์ง |
|---|---|---|
| Greedy | ๊ฐ์ฅ ํ๋ฅ ๋์ ํ ํฐ ์ ํ | ๊ฒฐ์ ์ ์ด์ง๋ง ๋ฐ๋ณต์ ์ผ ์ ์์ |
| Temperature | ๋ถํฌ์ ๋ ์นด๋ก์ ์กฐ์ | ๋์์๋ก ๋ค์์ฑ ์ฆ๊ฐ |
| Top-k | ์์ k๊ฐ ํ๋ณด๋ง ์ ํ | ์ด์ํ ํ ํฐ์ ์ค์ |
| Top-p (nucleus) | ๋์ ํ๋ฅ p๊น์ง ํ๋ณด ์ฌ์ฉ | ๋ฌธ๋งฅ์ ๋ฐ๋ผ ํ๋ณด ์๊ฐ ๋ณํจ |
3. ๋์ ์๋ฆฌ
Self-Attention
๊ฐ ํ ํฐ์ Query(Q), Key(K), Value(V) ์ธ ๋ฒกํฐ๋ฅผ ๋ง๋ค๊ณ , Q์ K์ ๋ด์ ์ผ๋ก ํ ํฐ ๊ฐ ์ ์ฌ๋๋ฅผ ๊ณ์ฐํ ๋ค V๋ฅผ ๊ฐ์คํฉํฉ๋๋ค. decoder-only LLM์์๋ causal mask๋ก ๋ฏธ๋ ํ ํฐ์ ๋ง์ต๋๋ค.
Attention(Q, K, V) = softmax((QK^T) / sqrt(d_k) + mask) V
scores = (Q @ K.transpose(-2, -1)) / (d_k ** 0.5)
scores = scores.masked_fill(causal_mask, float('-inf'))
weights = softmax(scores, dim=-1)
output = weights @ V
ํ์ต ๋จ๊ณ
- Pretraining: ๋ผ๋ฒจ ์๋ ๋ฐฉ๋ํ ํ ์คํธ๋ก ๋ค์ ํ ํฐ ์์ธก์ ํ์ตํฉ๋๋ค.
- SFT: ์ฌ๋์ด ๋ง๋ ์ง์-์๋ต ์์ผ๋ก ๋ํ์ ์ง์ ๋ฐ๋ฅด๊ธฐ๋ฅผ ์ตํ๋๋ค.
- Alignment: RLHF๋ DPO ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ๋์๋จ, ์์ ์ฑ, ์ ์ง์ฑ์ ๋ง์ถฅ๋๋ค.
KV Cache
์๊ธฐํ๊ท ์์ฑ์ ๋งค ์คํ ๊ณผ๊ฑฐ ์ ์ฒด์ attentionํด์ผ ํ๋ฏ๋ก, ๊ณผ๊ฑฐ K/V๋ฅผ ์ ์ฅํ์ง ์์ผ๋ฉด ์ฌ๊ณ์ฐ ๋น์ฉ์ด ์ปค์ง๋๋ค. KV cache๋ ๊ฐ ํ ํฐ์ K/V๋ฅผ ํ ๋ฒ๋ง ๊ณ์ฐํด ์ ์ฅํ๊ณ ์ฌ์ฌ์ฉํด decode๋ฅผ ๋น ๋ฅด๊ฒ ํฉ๋๋ค.
KV cache๋ ์ํ์ค ๊ธธ์ด์ ๋ฐฐ์น์ ๋น๋กํด ์ปค์ง๋๋ค. ๋๋ต์ ์ผ๋ก๋ KV_bytes โ 2 ร L ร d_model ร seq_len ร batch ร dtype_bytes๋ก ๋ณผ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด L=80, d_model=8192, seq_len=8192, batch=1, FP16์ด๋ฉด ํ ์ํ์ค๋ง์ผ๋ก๋ ์ฝ 21GB ์์ค์ด ๋ฉ๋๋ค.
4. ์ฅ๋จ์
| ์ฅ์ | ๋จ์ |
|---|---|
| ๋ฒ์ฉ์ฑ์ด ๋๋ค | ํ๋ผ๋ฏธํฐ์ ๋ฐ์ดํฐ ๊ท๋ชจ๊ฐ ๋งค์ฐ ํฌ๋ค |
| ๋ณ๋ ฌํ๊ฐ ์ ๋๋ค | attention์ด ๊ธธ์ด์ ๋ฐ๋ผ O(nยฒ)๋ก ์ปค์ง๋ค |
| ํ๋กฌํํธ๋ง ๋ฐ๊ฟ ๋ค์ํ ์์ ์ ์ ์ฉ ๊ฐ๋ฅ | ์ถ๋ก ์ KV cache๊ฐ ๋ฉ๋ชจ๋ฆฌ ๋ณ๋ชฉ์ด ๋๋ค |
| ์๋น ์ต์ ํ ์ฌ์ง๊ฐ ๋ง๋ค | ๊ธด ๋ฌธ๋งฅยทํฐ ๋ฐฐ์น์์ ๋น์ฉ์ด ๋น ๋ฅด๊ฒ ์ฆ๊ฐํ๋ค |
5. ๊ด๋ จ ๊ธฐ์
๋ด๋ถ ๋ฌธ์
- FlashAttention Analysis
- PagedAttention Analysis
- KV Cache Quantization Analysis
- MLA Analysis
- Continuous Batching Analysis
- LLM Inference Scheduler Analysis
- Memory Centric LLM Serving Survey
์ฃผ์ ์๋ฌธ
| ์๋ฃ | ํต์ฌ |
|---|---|
| Vaswani et al., 2017, Attention Is All You Need | Transformer์ ์ถ๋ฐ์ |
| Brown et al., 2020, Language Models are Few-Shot Learners | ๋๊ท๋ชจ ์๊ธฐํ๊ท ์ธ์ด ๋ชจ๋ธ์ ํ์ฅ |
| Dao et al., 2022, FlashAttention | IO-aware exact attention |
| Kwon et al., 2023, PagedAttention | KV cache๋ฅผ ํ์ด์ง์ฒ๋ผ ๊ด๋ฆฌ |
| Kaplan et al., 2020, Scaling Laws for Neural Language Models | ๋ชจ๋ธ ํฌ๊ธฐ, ๋ฐ์ดํฐ, compute์ ์ฑ๋ฅ์ ์ค์ผ์ผ๋ง ๊ด๊ณ |
6. ํต์ฌ ์ ๋ฆฌ
LLM์ ๋ค์ ํ ํฐ์ ํ๋ฅ ๋ถํฌ๋ฅผ ์์ธกํ๋ Transformer ๊ธฐ๋ฐ ์๊ธฐํ๊ท ๋ชจ๋ธ์ ๋๋ค. ํ ํฐํ, ์๋ฒ ๋ฉ, self-attention, FFN, LM head๊ฐ ๊ธฐ๋ณธ ํ๋ฆ์ ์ด๋ฃน๋๋ค.
ํ์ต์ pretraining, SFT, alignment๋ก ์ด์ด์ง๊ณ , ๊ท๋ชจ๊ฐ ์ปค์ง์๋ก ์ฑ๋ฅ์ ๋์ฒด๋ก ๋ฉฑ๋ฒ์น์ ๋ฐ๋ผ ์ข์์ง๋๋ค. ๋ค๋ง ์ถ๋ก ์์๋ prefill๊ณผ decode์ ๋ณ๋ชฉ์ด ๋ฌ๋ผ์ง๋ฉฐ, ํนํ decode๋ KV cache ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ๋์ญํญ์ด ์ค์ํด์ง๋๋ค.
๊ทธ๋์ LLM ์์คํ ์์๋ FlashAttention, PagedAttention, KV cache ์์ํ, GQA/MQA, ์คํ๋ก๋ฉ ๊ฐ์ ๊ธฐ๋ฒ์ด ํต์ฌ์ ๋๋ค. ์ด ๋ฌธ์์ ํต์ฌ์ ๋ชจ๋ธ ๊ตฌ์กฐ๋ณด๋ค๋, ์ถ๋ก ๋จ๊ณ์์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ ๋ณ๋ชฉ์ด ๋๋์ง ํจ๊ป ๋ณด๋ ๋ฐ ์์ต๋๋ค.