๐Ÿค– LLM

KV Cache ์••์ถ•

KV Cache Compression ยท Quantization ยท Token Eviction ยท Rank Compression ยท Mixed Precision ยท Adaptive Strategies

๊ฐœ์š”

KV Cache๋Š” LLM ์ถ”๋ก ์—์„œ ๊ณผ๊ฑฐ ํ† ํฐ์˜ Key/Value๋ฅผ ์ €์žฅํ•ด ์–ดํ…์…˜ ์žฌ๊ณ„์‚ฐ์„ ๋ฐฉ์ง€ํ•˜์ง€๋งŒ, ์‹œํ€€์Šคยท๋ฐฐ์น˜ยท๋ ˆ์ด์–ด ์ˆ˜์— ๋น„๋ก€ํ•ด ๊ธ‰๊ฒฉํžˆ ์ปค์ ธ GPU ๋ฉ”๋ชจ๋ฆฌ์˜ ํ•ต์‹ฌ ๋ณ‘๋ชฉ์ด ๋ฉ๋‹ˆ๋‹ค. ๊ธด ๋ฌธ๋งฅ(long context)๊ณผ ๋†’์€ ์ฒ˜๋ฆฌ๋Ÿ‰(high throughput)์ด ์š”๊ตฌ๋˜๋Š” ์„œ๋น„์Šค ํ™˜๊ฒฝ์—์„œ KV Cache๋Š” ๋ชจ๋ธ ๊ฐ€์ค‘์น˜๋ฅผ ๋„˜์–ด์„œ๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฐจ์ง€ํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. KV Cache ์••์ถ•์€ ์ด ๋ฉ”๋ชจ๋ฆฌ ๋ถ€๋‹ด์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ํ‚ค์™€ ๊ฐ’์˜ ์ •๋ฐ€๋„๋ฅผ ๋‚ฎ์ถ”๊ฑฐ๋‚˜(์–‘์žํ™”), ์ค‘์š”ํ•˜์ง€ ์•Š์€ ํ† ํฐ์„ ์ œ๊ฑฐํ•˜๊ฑฐ๋‚˜(eviction), ์ €์ฐจ์› ํ‘œํ˜„์œผ๋กœ ์ถ•์†Œํ•˜๋Š”(rank compression) ๊ธฐ๋ฒ•๋“ค์˜ ์ด์นญ์ž…๋‹ˆ๋‹ค.

์–‘์žํ™”๋งŒ์œผ๋กœ๋Š” ํ•œ๊ณ„๊ฐ€ ์žˆ์–ด, ํ† ํฐ ์ œ๊ฑฐยท๋žญํฌ ์••์ถ•ยทํ˜ผํ•ฉ ์ •๋ฐ€๋„ยท๋ ˆ์ด์–ด๋ณ„ ์ฐจ๋“ฑ ํ• ๋‹น ๋“ฑ ์—ฌ๋Ÿฌ ์ „๋žต์„ ์กฐํ•ฉํ•˜๋Š” ๊ฒƒ์ด ์‹ค์ „์—์„œ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๋ณธ ๋ฌธ์„œ๋Š” KV Cache ์••์ถ•์˜ ์ „์ฒด ์ŠคํŽ™ํŠธ๋Ÿผ์„ ๋ถ„๋ฅ˜ํ•˜๊ณ , ๊ฐ ๊ธฐ๋ฒ•์˜ ๋™์ž‘ ์›๋ฆฌยทํŠธ๋ ˆ์ด๋“œ์˜คํ”„ยท์‹œ์Šคํ…œ ํ†ตํ•ฉ ๋ฐฉ์•ˆ์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

1. KV Cache ๋ฉ”๋ชจ๋ฆฌ ๋ฌธ์ œ

KV Cache์˜ ํฌ๊ธฐ๋Š” ๋‹ค์Œ ๊ณต์‹์œผ๋กœ ์ถ”์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

KV_bytes โ‰ˆ 2 ร— L ร— n_kv_heads ร— head_dim ร— seq_len ร— batch ร— bytes_per_element
  • 2: Key + Value 2๊ฐœ
  • L: ๋ ˆ์ด์–ด ์ˆ˜
  • n_kv_heads: KV ํ—ค๋“œ ์ˆ˜ (GQA/MQA์—์„œ๋Š” ์ฟผ๋ฆฌ ํ—ค๋“œ๋ณด๋‹ค ์ ์Œ)
  • head_dim: ํ—ค๋“œ๋‹น ์ฐจ์› (๋ณดํ†ต 128)
  • seq_len: ์‹œํ€€์Šค ๊ธธ์ด
  • batch: ๋ฐฐ์น˜ ํฌ๊ธฐ
  • bytes_per_element: FP16=2, FP8=1, INT4=0.5, INT2=0.25

์˜ˆ๋ฅผ ๋“ค์–ด LLaMA-2-70B (80๋ ˆ์ด์–ด, 8 KV ํ—ค๋“œ, head_dim=128)์—์„œ seq_len=4096, batch=1, FP16 ๊ธฐ์ค€:

2 ร— 80 ร— 8 ร— 128 ร— 4096 ร— 1 ร— 2 = 1.34 GB

seq_len์ด 128K๋กœ ๋Š˜์–ด๋‚˜๋ฉด ์•ฝ 42.9 GB๋กœ, 80GB GPU์˜ ์ ˆ๋ฐ˜ ์ด์ƒ์„ ์ฐจ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐ์น˜๋ฅผ ํ‚ค์šฐ๋ฉด ๊ณง๋ฐ”๋กœ GPU ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•ด์ง‘๋‹ˆ๋‹ค.

์™œ ์••์ถ•์ด ํ•„์š”ํ•œ๊ฐ€

๋ณ‘๋ชฉ ์„ค๋ช… ์••์ถ•์ด ์™„ํ™”ํ•˜๋Š” ๊ฒƒ
๋ฉ”๋ชจ๋ฆฌ ์šฉ๋Ÿ‰ ๊ธด ๋ฌธ๋งฅยทํฐ ๋ฐฐ์น˜์—์„œ HBM ์†Œ์ง„ ๊ฐ™์€ GPU์— ๋” ๋งŽ์€ ์š”์ฒญยทํ† ํฐ ์ˆ˜์šฉ
๋ฉ”๋ชจ๋ฆฌ ๋Œ€์—ญํญ ๋งค ๋””์ฝ”๋”ฉ ์Šคํ…๋งˆ๋‹ค ์ „์ฒด KV๋ฅผ ์ฝ์Œ ์ฝ๊ธฐ๋Ÿ‰ ๊ฐ์†Œ โ†’ ๋””์ฝ”๋”ฉ ์†๋„ ํ–ฅ์ƒ
์ „์†ก ๋Œ€์—ญํญ KV offloading ์‹œ PCIe/CXL ๋ณ‘๋ชฉ ์ „์†ก ๋ฐ์ดํ„ฐ๋Ÿ‰ ๊ฐ์†Œ
๋ฐฐ์น˜ ์ œํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ์œผ๋กœ ๋ฐฐ์น˜ ํฌ๊ธฐ ์ถ•์†Œ ๋ฐฐ์น˜ ํ™•๋Œ€ โ†’ ์ฒ˜๋ฆฌ๋Ÿ‰ ํ–ฅ์ƒ

2. ์••์ถ• ๊ธฐ๋ฒ• ๋ถ„๋ฅ˜

KV Cache ์••์ถ• ๊ธฐ๋ฒ•์€ ํฌ๊ฒŒ ๋„ค ๊ฐ€์ง€ ๋ฒ”์ฃผ๋กœ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

KV Cache Compression Taxonomy

๊ทธ๋ฆผ 1. KV Cache ์••์ถ• ๊ธฐ๋ฒ• ๋ถ„๋ฅ˜ ์ฒด๊ณ„

2.1 ์–‘์žํ™” (Quantization)

Key/Value์˜ ์ •๋ฐ€๋„๋ฅผ ๋‚ฎ์ถฐ ๊ฐ ์š”์†Œ๊ฐ€ ์ฐจ์ง€ํ•˜๋Š” ๋น„ํŠธ ์ˆ˜๋ฅผ ์ค„์ด๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ง์ ‘์ ์ด๋ฉฐ, ๊ธฐ์กด ์ถ”๋ก  ํŒŒ์ดํ”„๋ผ์ธ์— ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํ†ตํ•ฉ๋ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ํŠน์ง•:
- FP16(16๋น„ํŠธ)์„ FP8(8๋น„ํŠธ), INT8, INT4, INT2 ๋“ฑ์œผ๋กœ ์ถ•์†Œ
- ๋ฉ”๋ชจ๋ฆฌ ์šฉ๋Ÿ‰๊ณผ ๋Œ€์—ญํญ์„ ๋™์‹œ์— ์ ˆ๊ฐ
- Key์™€ Value์˜ ๋ถ„ํฌ ์ฐจ์ด์— ๋”ฐ๋ฅธ ๋น„๋Œ€์นญ ์ฒ˜๋ฆฌ๊ฐ€ ํ•ต์‹ฌ
- ์—ญ์–‘์žํ™”(dequantization) ์˜ค๋ฒ„ํ—ค๋“œ์™€ ์ปค๋„ ์œตํ•ฉ์ด ์‹ค์ „ ์„ฑ๋Šฅ์„ ์ขŒ์šฐ

๋น„๋Œ€์นญ ๋ฌธ์ œ: Key๋Š” ์†Œ์ˆ˜์˜ ์ฑ„๋„ ์ด์ƒ์น˜(outlier)๊ฐ€ ์กด์žฌํ•˜๊ณ , Value๋Š” ํ† ํฐ๋ณ„ ๋ถ„ํฌ๊ฐ€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Key๋Š” per-channel, Value๋Š” per-token ์–‘์žํ™”๊ฐ€ ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค(KIVI ๋ฐœ๊ฒฌ).

RoPE ๋ฌธ์ œ: ํšŒ์ „ ์œ„์น˜ ์ธ์ฝ”๋”ฉ(RoPE)์ด Key์˜ ์ฑ„๋„ ์Œ์„ ์„ž์–ด ์ด์ƒ์น˜ ๊ตฌ์กฐ๋ฅผ ํํŠธ๋Ÿฌ๋œจ๋ฆฝ๋‹ˆ๋‹ค. KVQuant๋Š” RoPE ์ ์šฉ ์ „์— Key๋ฅผ ์–‘์žํ™”ํ•ด ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

2.2 ํ† ํฐ ์ œ๊ฑฐ (Token Eviction)

์–ดํ…์…˜ ์ ์ˆ˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ค‘์š”ํ•˜์ง€ ์•Š์€ ๊ณผ๊ฑฐ ํ† ํฐ์˜ KV๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ํ† ํฐ์„ ์œ ์ง€ํ•˜์ง€ ์•Š๊ณ , ์‹ค์งˆ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ํ† ํฐ๋งŒ ๋‚จ๊น๋‹ˆ๋‹ค.

์ฃผ์š” ํŠน์ง•:
- ์–ดํ…์…˜ ํžˆ์Šคํ† ๋ฆฌ ๋ถ„์„์œผ๋กœ ์ค‘์š” ํ† ํฐ ์„ ๋ณ„
- ์ถ”๊ฐ€ ํ•™์Šต ์—†์ด(profiling ๊ธฐ๋ฐ˜) ์ ์šฉ ๊ฐ€๋Šฅ
- ์ตœ๊ทผ ํ† ํฐยทspecial tokenยทHeavy Hitter ๋“ฑ ๋ณด์กด ์ „๋žต์ด ๋‹ค์–‘
- ํ† ํฐ ์ˆ˜ ์ž์ฒด๋ฅผ ์ค„์—ฌ ๋ฉ”๋ชจ๋ฆฌ์™€ ๋Œ€์—ญํญ ๋™์‹œ ์ ˆ๊ฐ

๋ณด์กด ์ „๋žต ์œ ํ˜•:
- ์ตœ์‹  ํ† ํฐ ๋ณด์กด (Sliding Window)
- Attention Sink ๋ณด์กด (StreamingLLM)
- ์–ดํ…์…˜ ์ ์ˆ˜ ๊ธฐ๋ฐ˜ ์„ ๋ณ„ (H2O)
- ํŒจํ„ด ๊ธฐ๋ฐ˜ ์ ์‘ํ˜• ์ œ๊ฑฐ (FastGen, Scissorhands)

2.3 ๋žญํฌ ์••์ถ• (Rank Compression)

Key/Value ํ–‰๋ ฌ์„ ์ €์ฐจ์›์œผ๋กœ ํˆฌ์˜ํ•ด ์ •๋ณด๋ฅผ ์••์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์„ ํ˜•๋Œ€์ˆ˜ํ•™์  ์„ฑ์งˆ์„ ํ™œ์šฉํ•ด ํ–‰๋ ฌ์˜ ๋ณธ์งˆ์ ์ธ ์ฐจ์›์„ ์ถ•์†Œํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ํŠน์ง•:
- SVD, Random Projection ๋“ฑ์˜ ์„ ํ˜• ๋ณ€ํ™˜ ์‚ฌ์šฉ
- ์–ดํ…์…˜ ์—ฐ์‚ฐ ์ž์ฒด๋ฅผ ์ €์ฐจ์›์—์„œ ์ˆ˜ํ–‰ ๊ฐ€๋Šฅ
- ์ •๋ณด ์†์‹ค์ด ์žˆ์ง€๋งŒ, ๊ตฌ์กฐ์ ์œผ๋กœ ๋ณด์กด ๊ฐ€๋Šฅํ•œ ์ €์ฐจ์› ํŠน์„ฑ ํ™œ์šฉ
- ์–‘์žํ™”์™€ ๊ฒฐํ•ฉํ•˜๋ฉด ์‹œ๋„ˆ์ง€ ํšจ๊ณผ

2.4 ํ˜ผํ•ฉ ์ „๋žต (Hybrid/Adaptive)

์—ฌ๋Ÿฌ ์••์ถ• ๊ธฐ๋ฒ•์„ ๊ฒฐํ•ฉํ•˜๊ฑฐ๋‚˜, ๋ ˆ์ด์–ดยทํ† ํฐยท์‹œํ€€์Šค๋ณ„๋กœ ์ฐจ๋“ฑ ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ตœ์‹  ์—ฐ๊ตฌ์—์„œ ๊ฐ€์žฅ ํ™œ๋ฐœํ•œ ์˜์—ญ์ž…๋‹ˆ๋‹ค.

์ „๋žต ์œ ํ˜•:
- ๋ ˆ์ด์–ด๋ณ„ ๋น„ํŠธํญ ํ• ๋‹น (KVmix)
- ์ค‘์š”/๋น„ ์ค‘์š” ํ† ํฐ ๊ฐ„ ์ •๋ฐ€๋„ ์ฐจ๋“ฑ (MiKV)
- ํ† ํฐ ์ œ๊ฑฐ + ์ €๋น„ํŠธ ์–‘์žํ™” ๊ฒฐํ•ฉ
- ๋™์  ๋ฌธ๋งฅ ๊ธธ์ด ์ ์‘

3. ์ฃผ์š” ๊ธฐ๋ฒ• ์ƒ์„ธ

3.1 ์–‘์žํ™” ๊ธฐ๋ฒ•

FP8 / INT8 โ€” 8๋น„ํŠธ (๊ธฐ๋ณธ ์ง€์›)

FP16 ๋Œ€๋น„ 2๋ฐฐ ๋ฉ”๋ชจ๋ฆฌ ์ ˆ๊ฐ์œผ๋กœ, ๊ฑฐ์˜ ๋ฌด์†์‹ค ์ˆ˜์ค€์˜ ์ •ํ™•๋„๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

  • FP8 E4M3: 4์ง€์ˆ˜ 3๊ฐ€์ˆ˜, ยฑ240 ๋ฒ”์œ„. vLLM์—์„œ kv_cache_dtype="fp8"๋กœ ์ง€์›. ์ •ํ™•๋„ ์ €ํ•˜๊ฐ€ ๋Œ€์ฒด๋กœ ๋ฏธ๋ฏธ
  • FP8 E5M2: 5์ง€์ˆ˜ 2๊ฐ€์ˆ˜, ๋™์  ๋ฒ”์œ„๊ฐ€ ๋„“์ง€๋งŒ ์ •๋ฐ€๋„ ๋‚ฎ์Œ
  • INT8: TensorRT-LLM์—์„œ ์ง€์›. scale ์ €์žฅ์ด ์ถ”๊ฐ€๋กœ ํ•„์š”ํ•ด FP8๋ณด๋‹ค ๋ฉ”๋ชจ๋ฆฌ ์ด๋“์ด ์•ฝ๊ฐ„ ์ž‘์Œ
  • ํ•˜๋“œ์›จ์–ด ๊ฐ€์†: NVIDIA Hopper/Ada, AMD MI300์—์„œ ํ•˜๋“œ์›จ์–ด FP8 ๋ณ€ํ™˜ ์ง€์›

KIVI โ€” ๋น„๋Œ€์นญ 2๋น„ํŠธ (ICML 2024)

Key๋Š” per-channel, Value๋Š” per-token์œผ๋กœ ์–‘์žํ™”ํ•˜๋Š” ๋น„๋Œ€์นญ 2๋น„ํŠธ ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค.

  • ๋™์ž‘ ์›๋ฆฌ: Key์˜ ์ฑ„๋„ ์ด์ƒ์น˜๋ฅผ ์ฑ„๋„ ๋‹จ์œ„๋กœ, Value์˜ ํ† ํฐ๋ณ„ ๋ถ„ํฌ๋ฅผ ํ† ํฐ ๋‹จ์œ„๋กœ ์ฒ˜๋ฆฌ
  • ์ตœ๊ทผ ํ† ํฐ ๋ณด์กด: ๊ฐ€์žฅ ์ตœ๊ทผ ํ† ํฐ ์ผ๋ถ€๋ฅผ full precision ์ž”์ฐจ(sliding window)๋กœ ์œ ์ง€
  • ํŠœ๋‹ ๋ถˆํ•„์š”: plug-and-play๋กœ ์ฆ‰์‹œ ์ ์šฉ ๊ฐ€๋Šฅ
  • ์„ฑ๊ณผ: LLaMA-2ยทFalconยทMistral์—์„œ ๋ฉ”๋ชจ๋ฆฌ 2.6๋ฐฐ ์ ˆ๊ฐ, ๋ฐฐ์น˜ 4๋ฐฐ ํ™•๋Œ€, ์ฒ˜๋ฆฌ๋Ÿ‰ 2.35~3.47๋ฐฐ ํ–ฅ์ƒ

KVQuant โ€” 3๋น„ํŠธ (NeurIPS 2024)

๋„ค ๊ฐ€์ง€ ๊ธฐ๋ฒ•์„ ๊ฒฐํ•ฉํ•ด sub-4-bit ์ •๋ฐ€๋„๋ฅผ ๋‹ฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

  1. Per-Channel Key ์–‘์žํ™”: Key๋ฅผ ์ฑ„๋„ ๋‹จ์œ„๋กœ ์–‘์žํ™”
  2. Pre-RoPE Key ์–‘์žํ™”: RoPE ์ ์šฉ ์ „์— Key๋ฅผ ์–‘์žํ™”ํ•ด ์ด์ƒ์น˜ ๊ตฌ์กฐ ๋ณด์กด
  3. ๋น„๊ท ๋“ฑ ์–‘์žํ™” (NUQ): ๋ ˆ์ด์–ด๋ณ„ ๋ฏผ๊ฐ๋„ ๊ฐ€์ค‘์น˜๋ฅผ ์ ์šฉํ•œ ๋น„๊ท ๋“ฑ ๋ฐ์ดํ„ฐ ํƒ€์ž…
  4. Per-Vector Dense-and-Sparse: ๊ฐ ๋ฒกํ„ฐ์—์„œ ์ด์ƒ์น˜๋ฅผ ๋”ฐ๋กœ ๋ถ„๋ฆฌํ•ด ์ฒ˜๋ฆฌ

์„ฑ๊ณผ: LLaMA/Llama-2/3ยทMistral์—์„œ 3๋น„ํŠธ perplexity ์ €ํ•˜ 0.1 ๋ฏธ๋งŒ. LLaMA-7B ๊ธฐ์ค€ A100-80GB์—์„œ 100๋งŒ ํ† ํฐ, 8-GPU์—์„œ 1000๋งŒ ํ† ํฐ ๋ฌธ๋งฅ ์„œ๋น™ ๊ฐ€๋Šฅ.

QuaRot โ€” 4๋น„ํŠธ ๋กœํ…Œ์ด์…˜ ์–‘์žํ™”

ํšŒ์ „ ๋ณ€ํ™˜(Rotation)์„ ํ†ตํ•ด LLM์˜ ์€๋‹‰ ์ƒํƒœ์—์„œ ์ด์ƒ์น˜๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค.

  • ๋™์ž‘ ์›๋ฆฌ: ํŠน์ˆ˜ ์ง๊ต ํ–‰๋ ฌ(orthogonal matrix)๋กœ ์€๋‹‰ ์ƒํƒœ๋ฅผ ํšŒ์ „ํ•ด ์ด์ƒ์น˜ ๋ถ„ํฌ๋ฅผ ํ‰ํƒ„ํ™”
  • ์ ์šฉ ๋ฒ”์œ„: ๊ฐ€์ค‘์น˜ยทํ™œ์„ฑ๊ฐ’ยทKV Cache๋ฅผ ๋ชจ๋‘ 4๋น„ํŠธ๋กœ ์–‘์žํ™”
  • ์„ฑ๊ณผ: LLaMA2-70B 4๋น„ํŠธ์—์„œ perplexity ์ €ํ•˜ 0.47 ์ดํ•˜, zero-shot ์„ฑ๋Šฅ 99% ์œ ์ง€

3.2 ํ† ํฐ ์ œ๊ฑฐ ๊ธฐ๋ฒ•

FastGen โ€” ์ ์‘ํ˜• KV Cache ์••์ถ• (ICLR 2024)

์–ดํ…์…˜ ๋ชจ๋“ˆ์˜ ๋‚ด์žฌ์  ๊ตฌ์กฐ๋ฅผ ํ”„๋กœํŒŒ์ผ๋งํ•ด ํ—ค๋“œ๋ณ„๋กœ ๋‹ค๋ฅธ ์••์ถ• ์ „๋žต์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ํ—ค๋“œ ์œ ํ˜•๋ณ„ ์ „๋žต:
  • ๋กœ์ปฌ ์ปจํ…์ŠคํŠธ ํ—ค๋“œ โ†’ ์žฅ๊ฑฐ๋ฆฌ ์ปจํ…์ŠคํŠธ ์ œ๊ฑฐ
  • special token ์ค‘์‹ฌ ํ—ค๋“œ โ†’ non-special ํ† ํฐ ์ œ๊ฑฐ
  • ๊ด‘๋ฒ”์œ„ ์–ดํ…์…˜ ํ—ค๋“œ โ†’ ํ‘œ์ค€ KV Cache ์œ ์ง€
  • ์žฅ์ : fine-tuning ์—†์ด(profiling ๊ธฐ๋ฐ˜) ์ ์šฉ, GPU ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„ ๋Œ€ํญ ์ ˆ๊ฐ

H2O โ€” Heavy-Hitter Oracle

์–ดํ…์…˜ ์ ์ˆ˜๊ฐ€ ๋†’์€ "Heavy Hitter" ํ† ํฐ์„ ๋ณด์กดํ•˜๊ณ  ๋‚˜๋จธ์ง€๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค.

  • ๋™์ž‘ ์›๋ฆฌ: ๊ณผ๊ฑฐ ์–ดํ…์…˜ ํžˆ์Šคํ† ๋ฆฌ์—์„œ ๋ˆ„์  ์–ดํ…์…˜ ์ ์ˆ˜๊ฐ€ ๋†’์€ ํ† ํฐ ์„ ๋ณ„
  • ๋ณด์กด ๋Œ€์ƒ: ์ตœ๊ทผ ํ† ํฐ + Heavy Hitter ํ† ํฐ
  • ํšจ๊ณผ: ์ ์€ ๋ฉ”๋ชจ๋ฆฌ๋กœ๋„ ํ•ต์‹ฌ ์ •๋ณด๋ฅผ ๋ณด์กด

Scissorhands

Attention Sink ํŒจํ„ด์„ ํ™œ์šฉํ•ด ์ค‘์š” ํ† ํฐ์„ ์‹๋ณ„ํ•˜๋Š” ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค.

  • ํ•ต์‹ฌ ๊ด€์ฐฐ: ํŠน์ • ํ† ํฐ(์ฒซ ๋ฒˆ์งธ ํ† ํฐ, ํŠน์ˆ˜ ํ† ํฐ ๋“ฑ)์ด ์ง€์†์ ์œผ๋กœ ๋†’์€ ์–ดํ…์…˜์„ ๋ฐ›์Œ
  • ์ „๋žต: ์ด๋Ÿฐ ํŒจํ„ด์„ ๋ฏธ๋ฆฌ ํ•™์Šตํ•ด ์ค‘์š” ํ† ํฐ์„ ์ž๋™ ๋ณด์กด

3.3 ๋žญํฌ ์••์ถ• ๊ธฐ๋ฒ•

CaM โ€” Cache Merge

Key/Value ํ–‰๋ ฌ์„ ์ €์ฐจ์›์œผ๋กœ ํˆฌ์˜ํ•ด ์••์ถ•ํ•˜๋Š” ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค.

  • ๋™์ž‘ ์›๋ฆฌ: SVD ๋“ฑ์„ ํ™œ์šฉํ•ด KV ํ–‰๋ ฌ์˜ ๋ณธ์งˆ์  ์ฐจ์›์„ ์ถ”์ถœ
  • ์žฅ์ : ์–ดํ…์…˜ ์—ฐ์‚ฐ ์ž์ฒด๋ฅผ ์ €์ฐจ์›์—์„œ ์ˆ˜ํ–‰ ๊ฐ€๋Šฅ
  • ํ•œ๊ณ„: ์ถ”๊ฐ€ ์—ฐ์‚ฐ ์˜ค๋ฒ„ํ—ค๋“œ, ๋น„์„ ํ˜• ๋ณ€ํ™˜์ด ์–ด๋ ค์›€

3.4 ํ˜ผํ•ฉ ์ •๋ฐ€๋„ ๊ธฐ๋ฒ•

MiKV โ€” Importance-Aware Mixed Precision (2024)

์ค‘์š”๋„์— ๋”ฐ๋ผ ํ† ํฐ๋ณ„๋กœ ๋‹ค๋ฅธ ์ •๋ฐ€๋„๋ฅผ ์ ์šฉํ•˜๋Š” ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค.

  • ๋™์ž‘ ์›๋ฆฌ:
  • ์ค‘์š” ํ† ํฐ โ†’ ๊ณ ์ •๋ฐ€(FP16) ์œ ์ง€
  • ๋œ ์ค‘์š”ํ•œ ํ† ํฐ โ†’ ์ €๋น„ํŠธ ์–‘์žํ™”
  • ์ œ๊ฑฐ๋œ ํ† ํฐ๋„ ์ €๋น„ํŠธ๋กœ ๋ณด์กด (info loss ์ตœ์†Œํ™”)
  • ํ•ต์‹ฌ ๋ฐœ๊ฒฌ: ํ† ํฐ์„ ์™„์ „ํžˆ ์ œ๊ฑฐํ•˜๋ฉด ์•ˆ์ „ ๋ฌธ์ œยทํ• ๋ฃจ์‹œ๋„ค์ด์…˜ยท์ปจํ…์ŠคํŠธ ์œ ์‹ค์ด ๋ฐœ์ƒํ•˜์ง€๋งŒ, ์ €๋น„ํŠธ๋กœ๋ผ๋„ ๋ณด์กดํ•˜๋ฉด ์ƒ๋‹น ๋ถ€๋ถ„ ํšŒ๋ณต๋จ

KVmix โ€” Gradient-Based Layer Importance (AAAI 2026)

๋ ˆ์ด์–ด ์ค‘์š”๋„๋ฅผ ๊ทธ๋ž˜๋””์–ธํŠธ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ถ„์„ํ•ด ๋ ˆ์ด์–ด๋ณ„ ๋น„ํŠธํญ์„ ์ฐจ๋“ฑ ํ• ๋‹นํ•˜๋Š” ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค.

  • ๋™์ž‘ ์›๋ฆฌ:
  • ๊ทธ๋ž˜๋””์–ธํŠธ ๊ธฐ๋ฐ˜ ์ค‘์š”๋„ ๋ถ„์„์œผ๋กœ ๊ฐ ๋ ˆ์ด์–ด์˜ ์†์‹ค ์˜ํ–ฅ๋„ ํ‰๊ฐ€
  • ์ค‘์š”ํ•œ ๋ ˆ์ด์–ด โ†’ ๋†’์€ ์ •๋ฐ€๋„, ๋œ ์ค‘์š”ํ•œ ๋ ˆ์ด์–ด โ†’ ๊ณต๊ฒฉ์  ์–‘์žํ™”
  • ๋™์  ๊ธด ๋ฌธ๋งฅ ์ตœ์ ํ™”: ์ตœ๊ทผ ์ค‘์š” ํ† ํฐ์€ full precision, ์˜ค๋ž˜๋œ ํ† ํฐ์€ ์••์ถ•
  • ์„ฑ๊ณผ: Key 2.19๋น„ํŠธ, Value 2.38๋น„ํŠธ์—์„œ ๊ฑฐ์˜ ๋ฌด์†์‹ค ์ถ”๋ก , 4.9๋ฐฐ ๋ฉ”๋ชจ๋ฆฌ ์••์ถ•, 5.3๋ฐฐ ์ฒ˜๋ฆฌ๋Ÿ‰ ํ–ฅ์ƒ

4. ๋น„๊ต ๋ถ„์„

๊ธฐ๋ฒ•๋ณ„ ๋น„๊ตํ‘œ

๊ธฐ๋ฒ• ์œ ํ˜• ๋น„ํŠธํญ ๋ฉ”๋ชจ๋ฆฌ ์ ˆ๊ฐ ์ •ํ™•๋„ ํŠœ๋‹ ํ•„์š” ์ฃผ์š” ๋…ผ๋ฌธ
FP8 E4M3 ์–‘์žํ™” 8๋น„ํŠธ ~2๋ฐฐ ๊ฑฐ์˜ ๋ฌด์†์‹ค ๋ถˆํ•„์š” OCP ํ‘œ์ค€
INT8 ์–‘์žํ™” 8๋น„ํŠธ ~2๋ฐฐ ๊ฑฐ์˜ ๋ฌด์†์‹ค ๋ถˆํ•„์š” TensorRT-LLM
KIVI ๋น„๋Œ€์นญ ์–‘์žํ™” 2๋น„ํŠธ ~2.6๋ฐฐ ์–‘ํ˜ธ ๋ถˆํ•„์š” ICML 2024
KVQuant ์–‘์žํ™” 3๋น„ํŠธ ~5.3๋ฐฐ <0.1 ppl ์ €ํ•˜ ๋ณด์ • ํ•„์š” NeurIPS 2024
QuaRot ๋กœํ…Œ์ด์…˜ ์–‘์žํ™” 4๋น„ํŠธ ~4๋ฐฐ <0.47 ppl ์ €ํ•˜ ๋ถˆํ•„์š” arXiv 2024
FastGen ํ† ํฐ ์ œ๊ฑฐ ๊ฐ€๋ณ€ ๊ฐ€๋ณ€ ์–‘ํ˜ธ ํ”„๋กœํŒŒ์ผ๋ง ICLR 2024
H2O ํ† ํฐ ์ œ๊ฑฐ ๊ฐ€๋ณ€ ๊ฐ€๋ณ€ ์–‘ํ˜ธ ๋ถˆํ•„์š” arXiv 2023
MiKV ํ˜ผํ•ฉ ์ •๋ฐ€๋„ ๊ฐ€๋ณ€ ๊ฐ€๋ณ€ ์šฐ์ˆ˜ ์ค‘์š”๋„ ๋ถ„์„ arXiv 2024
KVmix ๋ ˆ์ด์–ด๋ณ„ ํ˜ผํ•ฉ ๊ทน์ €๋น„ํŠธ ~4.9๋ฐฐ ๊ฑฐ์˜ ๋ฌด์†์‹ค ๊ทธ๋ž˜๋””์–ธํŠธ ๋ถ„์„ AAAI 2026

๋น„ํŠธํญ๋ณ„ ์ •ํ™•๋„-์••์ถ• ํŠธ๋ ˆ์ด๋“œ์˜คํ”„

๋น„ํŠธํญ ์ •ํ™•๋„ ๊ฒฝํ–ฅ ํ•„์š” ๊ธฐ๋ฒ• ์‹ค์šฉ์„ฑ
8๋น„ํŠธ (FP8/INT8) ๊ฑฐ์˜ ๋ฌด์†์‹ค per-tensor scale๋กœ ์ถฉ๋ถ„ ํ”„๋ ˆ์ž„์›Œํฌ ๊ธฐ๋ณธ ์ง€์›
4๋น„ํŠธ ๋Œ€์ฒด๋กœ ์–‘ํ˜ธ ๊ทธ๋ฃน ์–‘์žํ™”, ๋กœํ…Œ์ด์…˜ ๋ณ€ํ™˜ ์‹ค์šฉ์ 
3๋น„ํŠธ ์ •๊ตํ•˜๋ฉด ๊ฑฐ์˜ ๋ฌด์†์‹ค KVQuant (pre-RoPEยทNUQยทdense-sparse) ํŠน์ • ๋ชจ๋ธ์—์„œ ์‹ค์šฉ
2๋น„ํŠธ ์ฃผ์˜ ํ•„์š” ๋น„๋Œ€์นญ + full-precision ์ž”์ฐจ (KIVI) ์ œํ•œ์  ์‹ค์šฉ
2๋น„ํŠธ ๋ฏธ๋งŒ ์–ด๋ ค์›€ ํ˜ผํ•ฉ ์ •๋ฐ€๋„ + ์ค‘์š” ํ† ํฐ ๊ณ ์ •๋ฐ€ ์—ฐ๊ตฌ ๋‹จ๊ณ„

5. ๋™์ž‘ ์›๋ฆฌ

5.1 ์–‘์žํ™” ํŒŒ์ดํ”„๋ผ์ธ

KV Cache Quantization Pipeline

๊ทธ๋ฆผ 2. KV Cache ์–‘์žํ™” ํŒŒ์ดํ”„๋ผ์ธ: ์ธ์ฝ”๋”ฉ โ†’ ์–‘์žํ™” โ†’ ์ €์žฅ โ†’ ์—ญ์–‘์žํ™” โ†’ ์–ดํ…์…˜

์ฒ˜๋ฆฌ ํ๋ฆ„:
1. ์ƒˆ ํ† ํฐ์˜ Key/Value ๊ณ„์‚ฐ (FP16/BF16)
2. ์–‘์žํ™”: per-channel/per-token/per-tensor ์Šค์ผ€์ผ๋ง์œผ๋กœ ์ €๋น„ํŠธ๋กœ ๋ณ€ํ™˜
3. ์••์ถ•๋œ KV๋ฅผ GPU ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ
4. ์–ดํ…์…˜ ๊ณ„์‚ฐ ์ง์ „ ์—ญ์–‘์žํ™” (fused dequant kernel ๊ถŒ์žฅ)
5. ์ €๋น„ํŠธ ๋˜๋Š” ๊ณ ์ •๋ฐ€ ์–ดํ…์…˜ ์—ฐ์‚ฐ ์ˆ˜ํ–‰

์ปค๋„ ์œตํ•ฉ์˜ ์ค‘์š”์„ฑ: ์—ญ์–‘์žํ™”๋ฅผ ๋ณ„๋„ ์ปค๋„๋กœ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋Œ€์—ญํญ ์ ˆ๊ฐ์œผ๋กœ ์–ป์€ ์ด๋“์ด ์ƒ์‡„๋ฉ๋‹ˆ๋‹ค. fused kernel(์–‘์žํ™”๋œ KV๋ฅผ ์ง์ ‘ ์ฝ์–ด ์–ดํ…์…˜ ๊ณ„์‚ฐ)์ด ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค.

5.2 ํ† ํฐ ์ œ๊ฑฐ ์ „๋žต

Token Eviction Strategies

๊ทธ๋ฆผ 3. ํ† ํฐ ์ œ๊ฑฐ ์ „๋žต ๋น„๊ต: Sliding Window, Attention Sink, Heavy Hitter, ์ ์‘ํ˜•

๋ณด์กด ์šฐ์„ ์ˆœ์œ„:
1. ์ตœ๊ทผ ํ† ํฐ: ๋””์ฝ”๋”ฉ์— ์ง์ ‘ ํ™œ์šฉ๋˜๋ฏ€๋กœ ๊ฐ€์žฅ ๋†’์€ ์šฐ์„ ์ˆœ์œ„
2. Attention Sink: ์ฒซ ๋ฒˆ์งธ ํ† ํฐ, special token ๋“ฑ ์ง€์†์ ์œผ๋กœ ๋†’์€ ์–ดํ…์…˜์„ ๋ฐ›๋Š” ํ† ํฐ
3. Heavy Hitter: ๋ˆ„์  ์–ดํ…์…˜ ์ ์ˆ˜๊ฐ€ ๋†’์€ ํ•ต์‹ฌ ์ปจํ…์ŠคํŠธ ํ† ํฐ
4. ํŒจํ„ด ๊ธฐ๋ฐ˜: ํ—ค๋“œ๋ณ„ ์–ดํ…์…˜ ํŒจํ„ด ๋ถ„์„์œผ๋กœ ์ ์‘ํ˜• ์ œ๊ฑฐ

์™„์ „ ์ œ๊ฑฐ vs ์ €๋น„ํŠธ ๋ณด์กด: MiKV ์—ฐ๊ตฌ์— ๋”ฐ๋ฅด๋ฉด ํ† ํฐ์„ ์™„์ „ํžˆ ์ œ๊ฑฐํ•˜๋ฉด ์•ˆ์ „ ๋ฌธ์ œยทํ• ๋ฃจ์‹œ๋„ค์ด์…˜์ด ๋ฐœ์ƒํ•˜์ง€๋งŒ, ์ €๋น„ํŠธ๋กœ๋ผ๋„ ๋ณด์กดํ•˜๋ฉด ์ƒ๋‹น ๋ถ€๋ถ„ ํšŒ๋ณต๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” "์ œ๊ฑฐํ•˜์ง€ ๋ง๊ณ  ์••์ถ•ํ•˜๋ผ"๋Š” ์„ค๊ณ„ ์›์น™์„ ์‹œ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

5.3 ๋ ˆ์ด์–ด๋ณ„ ์ฐจ๋“ฑ ํ• ๋‹น

Layer-wise Bit Allocation

๊ทธ๋ฆผ 4. ๋ ˆ์ด์–ด ์ค‘์š”๋„์— ๋”ฐ๋ฅธ ๋น„ํŠธํญ ์ฐจ๋“ฑ ํ• ๋‹น (KVmix ์ ‘๊ทผ)

๋ ˆ์ด์–ด ์ค‘์š”๋„ ๋ถ„์„:
- ๊ทธ๋ž˜๋””์–ธํŠธ ๊ธฐ๋ฐ˜: ๊ฐ ๋ ˆ์ด์–ด์˜ KV๊ฐ€ ์†์‹ค ํ•จ์ˆ˜์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ๋„ ๊ณ„์‚ฐ
- ์–ดํ…์…˜ ๊ธฐ๋ฐ˜: ๋ ˆ์ด์–ด๋ณ„ ์–ดํ…์…˜ ์—”ํŠธ๋กœํ”ผ ๋ถ„์„ (๋†’์€ ์—”ํŠธ๋กœํ”ผ = ๋” ๋งŽ์€ ์ •๋ณด ์ €์žฅ)
- ํ”„๋กœํŒŒ์ผ๋ง ๊ธฐ๋ฐ˜: ๋Œ€ํ‘œ ์ž…๋ ฅ์œผ๋กœ ์ค‘์š”๋„ ์ธก์ •

ํ• ๋‹น ์ „๋žต:
- ์ค‘์š” ๋ ˆ์ด์–ด (ํ•˜์œ„ ๋ ˆ์ด์–ด, ์–ดํ…์…˜ ์ง‘์ค‘ ๋ ˆ์ด์–ด): FP16/FP8 ์œ ์ง€
- ์ค‘๊ฐ„ ๋ ˆ์ด์–ด: INT4/INT8
- ๋œ ์ค‘์š”ํ•œ ๋ ˆ์ด์–ด (์ƒ์œ„ ๋ ˆ์ด์–ด): INT2/INT4 ๊ณต๊ฒฉ์  ์–‘์žํ™”

6. ์‹œ์Šคํ…œ ํ†ตํ•ฉ

6.1 ํ”„๋ ˆ์ž„์›Œํฌ ์ง€์› ํ˜„ํ™ฉ

ํ”„๋ ˆ์ž„์›Œํฌ ์ง€์› ์••์ถ• ์„ค์ • ๋ฐฉ๋ฒ•
vLLM FP8 KV Cache kv_cache_dtype="fp8"
TensorRT-LLM FP8, INT8 KV Cache ๋นŒ๋“œ ํƒ€์ž„ ์„ค์ •
LLM Compressor ๋‹ค์–‘ํ•œ ๋น„ํŠธํญ ๋ณด์ •(calibration) ๋ฐ์ดํ„ฐ ํ•„์š”
SqueezeLLM ๋น„๊ท ๋“ฑ ์–‘์žํ™” ์ปค์Šคํ…€ ์ปค๋„

6.2 ๋‹ค๋ฅธ ๊ธฐ๋ฒ•๊ณผ์˜ ๊ฒฐํ•ฉ

PagedAttention๊ณผ ๊ฒฐํ•ฉ: ๋ธ”๋ก ์•ˆ์˜ K,V๋ฅผ ์ €๋น„ํŠธ๋กœ ๋‹ด์œผ๋ฉด ๋ธ”๋ก๋‹น ๋” ๋งŽ์€ ํ† ํฐ์ด ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค. ๋‘ ๊ธฐ๋ฒ•์€ ์ง๊ต์ ์ด๋ฉฐ ํ•จ๊ป˜ ์“ฐ๋ฉด ํšจ๊ณผ๊ฐ€ ๋ฐฐ๊ฐ€๋ฉ๋‹ˆ๋‹ค.

KV Offloading๊ณผ ๊ฒฐํ•ฉ: ์–‘์žํ™”๋กœ KV๋ฅผ ์ค„์ด๋ฉด CXL/PCIe๋กœ ์˜ฎ๊ธธ ๋ฐ์ดํ„ฐ์™€ ๋Œ€์—ญํญ ๋ถ€๋‹ด์ด ํ•จ๊ป˜ ๊ฐ์†Œํ•ฉ๋‹ˆ๋‹ค.

๋ฉ”๋ชจ๋ฆฌ ํ‹ฐ์–ด๋ง๊ณผ ๊ฒฐํ•ฉ: hot KV๋Š” GPU์—์„œ ๊ณ ์ •๋ฐ€, warm KV๋Š” CPU DRAM์—์„œ ์ €๋น„ํŠธ, cold KV๋Š” CXL/NVMe์—์„œ ๋” ๊ณต๊ฒฉ์  ์–‘์žํ™”๋กœ precision tiering ๊ฐ€๋Šฅ.

6.3 ๊ตฌํ˜„ ์‹œ ๊ณ ๋ ค์‚ฌํ•ญ

  • ์–‘์žํ™” ์œ„์น˜: ์ƒˆ ํ† ํฐ์˜ K,V ๊ณ„์‚ฐ ์งํ›„ ์–‘์žํ™”ํ•ด ์ €์žฅ
  • ์—ญ์–‘์žํ™” ๋น„์šฉ: fused kernel ์—†์œผ๋ฉด ๋Œ€์—ญํญ ์ ˆ๊ฐ ํšจ๊ณผ ์ƒ์‡„
  • ๋ณด์ • ๋ฐ์ดํ„ฐ: KVQuant ๋“ฑ์€ ๋ณด์ • ๋ฐ์ดํ„ฐ๊ฐ€ ํ’ˆ์งˆ์— ์˜ํ–ฅ
  • GQA/MQA ํ˜ธํ™˜: KV ํ—ค๋“œ ์ˆ˜๊ฐ€ ์ ์œผ๋ฉด per-channel ์–‘์žํ™”์˜ ์ด๋“์ด ์ž‘์•„์งˆ ์ˆ˜ ์žˆ์Œ
  • FlashAttention ํ˜ธํ™˜: ์ €๋น„ํŠธ ์–ดํ…์…˜ ์ปค๋„์˜ ๊ตฌํ˜„ ์ˆ˜์ค€์— ๋”ฐ๋ผ ์„ฑ๋Šฅ ์˜ํ–ฅ

7. ์žฅ๋‹จ์ 

์žฅ์ 

  • ๋ฉ”๋ชจ๋ฆฌ ์ ˆ๊ฐ ํšจ๊ณผ๊ฐ€ ์ง์ ‘์ : 8๋น„ํŠธ๋กœ ์•ฝ 2๋ฐฐ, 3~4๋น„ํŠธ๋กœ 4~5๋ฐฐ, 2๋น„ํŠธ๋กœ ๊ทธ ์ด์ƒ์˜ ์ ˆ๊ฐ์ด ๊ฐ€๋Šฅํ•ด ๊ธด ๋ฌธ๋งฅยทํฐ ๋ฐฐ์น˜๋ฅผ ๊ฐ™์€ GPU์— ๋‹ด์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋Œ€์—ญํญ ๋ณ‘๋ชฉ ์™„ํ™”: ๋งค ๋””์ฝ”๋”ฉ ์Šคํ…๋งˆ๋‹ค KV๋ฅผ ์ฝ๋Š” ์–‘์ด ์ค„์–ด๋“ค์–ด HBM ์ฝ๊ธฐ๋Ÿ‰๊ณผ offloading ์ „์†ก๋Ÿ‰์ด ํ•จ๊ป˜ ๊ฐ์†Œํ•ฉ๋‹ˆ๋‹ค.
  • ๊ธฐ์กด ๊ธฐ๋ฒ•๊ณผ ์ง๊ต์ : PagedAttention, KV offloading, ๋ฉ”๋ชจ๋ฆฌ ํ‹ฐ์–ด๋ง๊ณผ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๊ฒฐํ•ฉ ๊ฐ€๋Šฅํ•ด ํšจ๊ณผ๋ฅผ ๋ˆ„์ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ฒ˜๋ฆฌ๋Ÿ‰ ํ–ฅ์ƒ: ๋ฉ”๋ชจ๋ฆฌ ์ ˆ๊ฐ์€ ๊ณง ๋ฐฐ์น˜ ํ™•๋Œ€๋กœ ์ด์–ด์ง€๋ฉฐ, ์ฒ˜๋ฆฌ๋Ÿ‰(throughput)์ด ๋น„๋ก€์ ์œผ๋กœ ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค.
  • ๊ธด ๋ฌธ๋งฅ ์ง€์›: 100๋งŒ ํ† ํฐ ์ด์ƒ์˜ ๋ฌธ๋งฅ์„ ๋‹จ์ผ GPU์—์„œ ์„œ๋น™ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค(KVQuant).

๋‹จ์ 

  • ์ •ํ™•๋„ ์ €ํ•˜ ์œ„ํ—˜: ํŠนํžˆ 2๋น„ํŠธ ์ดํ•˜์—์„œ๋Š” Key/Value ๋น„๋Œ€์นญ, RoPE, ์ตœ๊ทผ ํ† ํฐ ๋ณด์กด์„ ๋ฌด์‹œํ•˜๋ฉด ํ’ˆ์งˆ์ด ๊ธ‰๊ฒฉํžˆ ๋ฌด๋„ˆ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ตฌํ˜„ ๋ณต์žก๋„: per-channel/per-token scale ๊ด€๋ฆฌ, ์ด์ƒ์น˜ ๋ถ„๋ฆฌ, fused dequant kernel, backend๋ณ„ dtype ์ œ์•ฝ์„ ํ•จ๊ป˜ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ํ”„๋ ˆ์ž„์›Œํฌ ์˜์กด: ์šฉ๋Ÿ‰ ์ ˆ๊ฐ์€ ๋น„๊ต์  ์•ˆ์ •์ ์ด์ง€๋งŒ, ์ง€์—ฐ ์‹œ๊ฐ„ยท์ฒ˜๋ฆฌ๋Ÿ‰ ๊ฐœ์„ ์€ kernel fusion, attention backend, batch ํฌ๊ธฐ์— ํฌ๊ฒŒ ์ขŒ์šฐ๋ฉ๋‹ˆ๋‹ค.
  • ๋ณด์ • ๋น„์šฉ: KVQuant ๋“ฑ ๊ณ ๊ธ‰ ๊ธฐ๋ฒ•์€ ๋ณด์ •(calibration) ๋ฐ์ดํ„ฐ์™€ ํ”„๋กœํŒŒ์ผ๋ง์— ์ถ”๊ฐ€ ๋น„์šฉ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • ์•ˆ์ „์„ฑ ๋ฌธ์ œ: ํ† ํฐ ์ œ๊ฑฐ ์‹œ ์™„์ „ ์ œ๊ฑฐ๋Š” ์•ˆ์ „ ๋ฌธ์ œยทํ• ๋ฃจ์‹œ๋„ค์ด์…˜์„ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ์–ด ์ €๋น„ํŠธ ๋ณด์กด์ด ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค.

8. ํ•ต์‹ฌ ์ •๋ฆฌ

KV Cache ์••์ถ•์€ ์–‘์žํ™”, ํ† ํฐ ์ œ๊ฑฐ, ๋žญํฌ ์••์ถ•, ํ˜ผํ•ฉ ์ „๋žต์˜ ๋„ค ๋ฒ”์ฃผ๋กœ ๋‚˜๋‰˜๋ฉฐ, ์‹ค์ „์—์„œ๋Š” ์ด๋“ค์„ ์กฐํ•ฉํ•ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์–‘์žํ™”๋Š” ๊ฐ€์žฅ ์ง์ ‘์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ, FP8/INT8์€ ๊ฑฐ์˜ ๋ฌด์†์‹ค์ด๋ฉฐ 3~4๋น„ํŠธ๋Š” KVQuantยทQuaRot๋กœ ์‹ค์šฉํ™” ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. 2๋น„ํŠธ ์ดํ•˜๋Š” KIVI์˜ ๋น„๋Œ€์นญ+์ž”์ฐจ ๋ณด์กด์ด ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค. ํ† ํฐ ์ œ๊ฑฐ๋Š” FastGenยทH2O ๋“ฑ์œผ๋กœ ํ—ค๋“œ๋ณ„ยทํŒจํ„ด๋ณ„ ์ ์‘ํ˜• ์ „๋žต์ด ๋ฐœ์ „ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ์™„์ „ ์ œ๊ฑฐ๋ณด๋‹ค ์ €๋น„ํŠธ ๋ณด์กด์ด ์•ˆ์ „์„ฑ ์ธก๋ฉด์—์„œ ์šฐ์ˆ˜ํ•ฉ๋‹ˆ๋‹ค. ๋ ˆ์ด์–ด๋ณ„ ์ฐจ๋“ฑ ํ• ๋‹น(KVmix)์€ ๊ทน์ €๋น„ํŠธ์—์„œ๋„ ๊ฑฐ์˜ ๋ฌด์†์‹ค์„ ๋‹ฌ์„ฑํ•˜๋Š” ์ตœ์‹  ๊ฒฝํ–ฅ์ž…๋‹ˆ๋‹ค. ์–‘์žํ™”๋Š” PagedAttentionยทKV Offloadingยท๋ฉ”๋ชจ๋ฆฌ ํ‹ฐ์–ด๋ง๊ณผ ์ง๊ต์ ์ด๋ผ ๊ฒฐํ•ฉ ์‹œ ํšจ๊ณผ๊ฐ€ ๋ฐฐ๊ฐ€๋˜๋ฉฐ, precision tiering์œผ๋กœ hot/warm/cold KV์— ์ •๋ฐ€๋„๋ฅผ ์ฐจ๋“ฑํ•˜๋Š” ๊ฒƒ์ด ์‹ค์ „ ์ตœ์  ํ•ด๋ฒ•์ž…๋‹ˆ๋‹ค.

9. ๊ด€๋ จ ๊ธฐ์ˆ 

๋ฌธ์„œ/์—ฐ๊ตฌ ์—ฐ๊ฒฐ์ 
KV Cache Quantization Analysis ์–‘์žํ™” ๊ธฐ๋ฒ• ์‹ฌ์ธต ๋ถ„์„ (KIVI, KVQuant, FP8)
KV Cache Offloading Analysis KV๋ฅผ GPU ๋ฐ–์œผ๋กœ ์˜ฎ๊ธฐ๋Š” ์˜คํ”„๋กœ๋”ฉ๊ณผ์˜ ๊ฒฐํ•ฉ
PagedAttention Analysis KV ๋ธ”๋ก ๋‹จ์œ„ ๊ด€๋ฆฌ์™€ ๊ฒฐํ•ฉ
StreamingLLM Analysis Attention Sink์™€ ์ตœ๊ทผ ํ† ํฐ ๋ณด์กด ์•„์ด๋””์–ด
Prefix Caching Analysis ํ”„๋ฆฌํ”ฝ์Šค ์บ์‹ฑ๊ณผ์˜ ์‹œ๋„ˆ์ง€
Continuous Batching Analysis ์ง€์†์  ๋ฐฐ์นญ๊ณผ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ
LLM Inference Scheduler Analysis ์ถ”๋ก  ์Šค์ผ€์ค„๋Ÿฌ์™€์˜ ํ†ตํ•ฉ
KIVI (arXiv 2402.02750) 2-bit asymmetric KV quantization
KVQuant (arXiv 2401.18079) pre-RoPE, NUQ, dense-and-sparse, 3-bit quantization
FastGen (arXiv 2310.01801) Adaptive KV cache compression via attention profiling
MiKV (arXiv 2402.18096) Importance-aware mixed precision quantization
KVmix (arXiv 2506.08018) Gradient-based layer importance mixed precision
QuaRot (arXiv 2404.00456) Outlier-free 4-bit inference via rotation
H2O (arXiv 2306.14048) Heavy-Hitter Oracle for KV cache eviction
Scissorhands (arXiv 2305.17118) Sink token-based KV cache compression