vAttention Analysis
vAttention ์ฌ์ธต ๋ถ์
CUDA Virtual Memory ยท Contiguous KV Cache ยท Demand Paging ยท ASPLOS 2025
vAttention(Prabhu et al., ASPLOS 2025, arXiv 2405.04437)์ KV cache๋ฅผ ์ฐ์๋ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ๋๊ณ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๋ง ํ์ํ ๋ ๋งคํํ๋ ๋ฐฉ์์ผ๋ก ๋์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์ํํฉ๋๋ค. PagedAttention์ฒ๋ผ KV๋ฅผ ๋ธ๋ก์ผ๋ก ์ชผ๊ฐ์ง ์๊ธฐ ๋๋ฌธ์, ๊ธฐ์กด attention kernel์ ๊ทธ๋๋ก ์ฌ์ฉํ๋ฉด์๋ ๋ฌผ๋ฆฌ ๋จํธํ๋ฅผ ์ค์ผ ์ ์์ต๋๋ค.
์ด ์ ๊ทผ์ ํต์ฌ์ ๋จํธํ์ ๋ณธ์ง์ด ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ ์๋ค๋ ์ ์ ๋๋ค. CUDA virtual memory management(VMM) API๋ก ๊ฐ์ ์ฃผ์ ์์ฝ๊ณผ ๋ฌผ๋ฆฌ ํ ๋น์ ๋ถ๋ฆฌํ๋ฉด, OS์ demand paging๊ณผ ๊ฐ์ ๊ตฌ์กฐ๋ฅผ GPU ์๋น์๋ ์ ์ฉํ ์ ์์ต๋๋ค. ๋ ผ๋ฌธ์ decode throughput ์ต๋ 1.99x, ์จ๋ผ์ธ end-to-end throughput ์ต๋ 1.23x, FlashAttention-3๊น์ง์ ์ฆ์ ํ์ฉ ๊ฐ๋ฅ์ฑ์ ๋ณด๊ณ ํฉ๋๋ค.
1. ๋ฌธ์ ์์
PagedAttention์ ๋ด๋ถ ๋จํธํ๋ฅผ ์ค์ด๋ ๋ฐ ํจ๊ณผ์ ์ด์ง๋ง, KV cache์ ๊ฐ์ ์ฃผ์๊น์ง ๋น์ฐ์์ผ๋ก ๋ฐ๊พธ๋ ๋๊ฐ๊ฐ ์์ต๋๋ค. ๊ทธ ๊ฒฐ๊ณผ attention kernel์ ๋ธ๋ก ํ ์ด๋ธ์ ๋ฐ๋ผ๊ฐ๋ฉฐ ํ ํฐ์ ์ฐธ์กฐํด์ผ ํ๊ณ , ์๋น ํ๋ ์์ํฌ๋ ๋ณ๋์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๋ก์ง์ ๊ฐ์ถฐ์ผ ํฉ๋๋ค.
๊ทธ๋ฆผ 1. PagedAttention์ ๋น์ฐ์ ๋ ์ด์์๊ณผ vAttention์ ๊ฐ์ ์ฐ์์ฑ ๋๋น
PagedAttention์ ๋น์ฉ
- ์ปค๋ ์ฌ์์ฑ ํ์: ๋น์ฐ์ KV๋ฅผ ์ฒ๋ฆฌํ๋๋ก attention kernel์ ๋ค์ ๊ตฌํํด์ผ ํฉ๋๋ค.
- ๋ธ๋ก ํ ์ด๋ธ ๊ด๋ฆฌ ํ์: ํ๋ ์์ํฌ๊ฐ ๋์ ๋ธ๋ก์ ์ฃผ์์ ๋งคํ์ ์ถ์ ํด์ผ ํฉ๋๋ค.
- CPU/GPU ์ค๋ฒํค๋ ์ฆ๊ฐ: ๋ธ๋ก ํ ์ด๋ธ ๊ตฌ์ฑ๊ณผ ๊ฐ์ ์ฐธ์กฐ๊ฐ ์๊ณ ๊ฒฝ๋ก์ ๋ค์ด๊ฐ๋๋ค.
- ์ด์์ฑ ์ ํ: ์๋ก์ด attention kernel์ด ๋์ฌ ๋๋ง๋ค paged ๋ฒ์ ์ ๋ค์ ๋ง๋ค์ด์ผ ํฉ๋๋ค.
ํต์ฌ ๊ฐ๋
| ๊ฐ๋ | ์๋ฏธ |
|---|---|
| ๊ฐ์ ์ฐ์์ฑ | ์ปค๋ ์ ์ฅ์์๋ ํ๋์ ์ฐ์ ํ ์๋ก ๋ณด์ |
| ๋ฌผ๋ฆฌ on-demand | ์ค์ ํ ํฐ์ด ๋์ด๋ ๋๋ง ๋ฌผ๋ฆฌ ํ์ด์ง๋ฅผ ๋งคํ |
| page-group | ํ ๋ฒ์ VMM ํธ์ถ๋ก ๋ฌถ์ด ๋ค๋ฃจ๋ ๋ฌผ๋ฆฌ ํ์ด์ง ๋ฌถ์ |
| granularity | CUDA ๊ธฐ๋ณธ์ 2MB ์ค์ฌ, ๋ ผ๋ฌธ์ 64KB ์ง์์ ์ถ๊ฐ |
| request-level buffer | ์์ฒญ๋ณ K/V ๋ฒํผ๋ฅผ ๋ถ๋ฆฌํด ๊ด๋ฆฌ |
2. ๊ฐ์/๋ฌผ๋ฆฌ ๋ถ๋ฆฌ
vAttention์ CUDA VMM API๋ก ๊ฐ์ ์ฃผ์์ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ๋ถ๋ฆฌํฉ๋๋ค. ๊ฐ ์์ฒญ์ KV ํ ์์ ๋ํด ์ต๋ ๊ธธ์ด๋งํผ ์ฐ์๋ ๊ฐ์ ์ฃผ์๋ฅผ ๋ฏธ๋ฆฌ ์์ฝํ๊ณ , ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๋ ์ค์ ๋ก ํ์ํ ์์ ์๋ง ๋ถ์ ๋๋ค.
๊ทธ๋ฆผ 2. ์ฐ์ ๊ฐ์ ์ฃผ์ ์์ฝ๊ณผ ๋ฌผ๋ฆฌ on-demand ๋งคํ ํ๋ฆ
| ๋จ๊ณ | ๋์ | ๊ด๋ จ API |
|---|---|---|
| 1 | KV์ฉ ์ฐ์ ๊ฐ์ ์ฃผ์ ๊ณต๊ฐ์ ์์ฝ | cuMemAddressReserve |
| 2 | ํ์ํ ํฌ๊ธฐ์ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ ํธ๋ค์ ์์ฑ | cuMemCreate |
| 3 | ์์ฝ๋ ๊ฐ์ ์ฃผ์์ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋งคํ | cuMemMap |
| 4 | ์ ๊ทผ ๊ถํ์ ๋ถ์ฌํด ํ ์์ฒ๋ผ ์ฌ์ฉ | cuMemSetAccess |
| 5 | ์์ฒญ ์ข ๋ฃ ์ ํด์ ๋๋ ์ง์ฐ ํ์ | cuMemUnmap, cuMemRelease |
CUDA ๋ฌธ์๋ cuMemMap์ด ์ ๊ทผ ๊ถํ์ ์ฃผ์ง ์์ผ๋ฉฐ, ๋ณ๋์ cuMemSetAccess๊ฐ ํ์ํ๋ค๊ณ ์ค๋ช
ํฉ๋๋ค. vAttention์ ์ด ํ๋ฆ์ ์์ฒญ๋ณ KV cache์ ๊ทธ๋๋ก ์ ์ฉํฉ๋๋ค.
๋์ ์๋ฆฌ
- ๊ฐ์ ์์ฝ: 64-bit ์ฃผ์ ๊ณต๊ฐ์ ๋๋ํ๋ฏ๋ก, ์์ฒญ๋ณ ์ต๋ ๊ธธ์ด๋งํผ VA๋ฅผ ๋ฏธ๋ฆฌ ์ก์๋ ๋ถ๋ด์ด ์์ต๋๋ค. ๋ ผ๋ฌธ์ 64-bit ์์คํ ์ ์ฌ์ฉ์ ๊ณต๊ฐ์ด ์ถฉ๋ถํ ํฌ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
- ๋ฌผ๋ฆฌ ๋งคํ: ํ ํฐ์ด ๋์ด ๊ธฐ์กด ํ์ด์ง๊ฐ ๋ค ์ฐฐ ๋๋ง ์ ํ์ด์ง๋ฅผ ๋ถ์ ๋๋ค.
- ์ปค๋ ๊ด์ : attention kernel์ KV๊ฐ ์ฐ์์ด๋ผ๊ณ ๊ฐ์ ํ ์ฑ ๊ทธ๋๋ก ์คํํฉ๋๋ค.
3. LLM ํนํ ์ต์ ํ
CUDA VMM์ ์ ์ฉํ์ง๋ง, LLM ์๋น์ ๊ทธ๋๋ก ์ฐ๋ฉด ๋ ๊ฐ์ง ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ฒซ์งธ๋ ๋ฐํ์ ํธ์ถ ์ง์ฐ, ๋์งธ๋ 2MB ์ค์ฌ์ ํฐ ํ์ด์ง๊ฐ ๋ง๋๋ ๋ด๋ถ ๋จํธํ์ ๋๋ค.
๊ทธ๋ฆผ 3. 2MB granularity์ VMM ํธ์ถ ์ง์ฐ์ ๋ํ ๋์
| ๋ฌธ์ | ๋ ผ๋ฌธ ๊ด์ฐฐ | ๋์ |
|---|---|---|
| ํฐ ํ์ด์ง granularity | 2MB ๋จ์๋ ์งง์ ์ํ์ค์์ ๋ญ๋น๊ฐ ํผ | 64KB page-group ์ง์ |
| VMM ํธ์ถ ์ง์ฐ | ํธ์ถ๋น 5~15ms ์คํ์ดํฌ ๊ฐ๋ฅ | compute์ allocation overlap |
| ์์ฒญ ์ข ๋ฃ ์ ์ฌํ์ฉ | ์ ์์ฒญ์ด ๋ฐ๋ก ์ธ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฌ์ฉ์ด ์ ๋ฆฌ | deferred reclamation |
| ์๊ณ ๊ฒฝ๋ก ํ ๋น | decode ์ค ๋๊ธฐ ํ ๋น์ ์ง์ฐ์ ํค์ | eager / proactive allocation |
๋ ผ๋ฌธ์ Yi-6B, Llama-3-8B, Yi-34B์์ per-token ๋ฉ๋ชจ๋ฆฌ ํํ๋ฆฐํธ๊ฐ ๊ฐ๊ฐ 64KB, 128KB, 240KB์ด๋ฉฐ, ์ ์ฒด allocation rate์ ์ต๋์น๊ฐ 750MB/s ์์ค์ด๋ผ๊ณ ๋ณด๊ณ ํฉ๋๋ค. ์ฆ, ๋ฉ๋ชจ๋ฆฌ ํ ๋น ๋์ญํญ์ LLM inference์์ ๋ณ๋ชฉ์ด ์๋๋ฉฐ, ์ง์ฐ ์จ๊ธฐ๊ธฐ์ ๋จํธํ ์ํ๊ฐ ํต์ฌ์ ๋๋ค.
4. ์ฑ๋ฅ๊ณผ ๋น๊ต
๊ทธ๋ฆผ 4. ๋ณด๊ณ ๋ throughput๊ณผ PagedAttention ๋๋น ๋น๊ต
| ์งํ | ๊ฒฐ๊ณผ | ๋น๊ต ๋์ |
|---|---|---|
| decode throughput | ์ต๋ 1.99x | vLLM |
| prefill throughput | ์ต๋ 1.24x / 1.26x / 1.24x | FA2 Paged, 192K context |
| prefill throughput | ์ต๋ 1.25x / 1.36x / 1.17x | FlashInfer Paged |
| offline end-to-end | ์ต๋ 1.18x / 1.15x / 1.13x | FA2 Paged |
| offline end-to-end | ์ต๋ 1.19x / 1.23x / 1.14x | FlashInfer Paged |
| online median latency | ์ต๋ 42% ๊ฐ์ | FA2 Paged |
PagedAttention vs vAttention
| ์ธก๋ฉด | PagedAttention | vAttention |
|---|---|---|
| ๊ฐ์ KV ๋ ์ด์์ | ๋น์ฐ์ | ์ฐ์ |
| attention kernel | paged์ฉ ์ฌ์์ฑ ํ์ | ๊ธฐ์กด kernel ๊ทธ๋๋ก ์ฌ์ฉ |
| ๊ด๋ฆฌ ์ฃผ์ฒด | ํ๋ ์์ํฌ ์ค์ฌ | CUDA VMM / driver ์ค์ฌ |
| CPU/GPU ์ค๋ฒํค๋ | ๋์ | ๋ฎ์ |
| ์ด์์ฑ | ๋ฎ์ | ๋์ |
| ์์กด์ฑ | ๋ฒ์ฉ ๋ธ๋ก ์ถ์ํ | NVIDIA CUDA VMM |
vAttention์ FlashAttention-3์ฒ๋ผ PagedAttention ์ง์์ด ์๋ ์ปค๋๋ ๋ฐ๋ก ํ์ฉํ ์ ์๊ฒ ํด ์ค๋๋ค. ์ฆ, ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๋ฐฉ์์ ๋ณ๊ฒฝ์ด ์ปค๋ ํ์ ์๋๋ฅผ ๋ฐ๋ผ๊ฐ๋ ๋ฐ ๊ฑธ๋ฆผ๋์ด ๋์ง ์๋๋ก ๋ง๋๋ ์ชฝ์ ๊ฐ๊น์ต๋๋ค.
5. ์ฅ๋จ์
- ์ฅ์ : ์ปค๋ ์์ ์ด ๊ฑฐ์ ํ์ ์๊ณ , ์ต์ attention kernel์ ๊ทธ๋๋ก ํ์ฉํ๊ธฐ ์ฝ์ต๋๋ค.
- ์ฅ์ : ๋ธ๋ก ํ ์ด๋ธ ๊ด๋ฆฌ๊ฐ ์ฌ๋ผ์ ธ CPU/GPU ๊ฒฝ๋ก๊ฐ ๋จ์ํด์ง๋๋ค.
- ์ฅ์ : ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๋ง on-demand๋ก ๋ถ์ด๋ฏ๋ก ๋จํธํ์ ๋ญ๋น๋ฅผ ์ค์ ๋๋ค.
- ์ฅ์ : KV ํฌ๊ธฐ ์ถ์ ๊ธฐ๋ฒ(์์ํ, GQA, MLA)๊ณผ๋ ๋ ๋ฆฝ์ ์ผ๋ก ๊ฒฐํฉํ ์ ์์ต๋๋ค.
- ํ๊ณ: CUDA VMM๊ณผ NVIDIA ๋๋ผ์ด๋ฒ์ ์์กดํฉ๋๋ค.
- ํ๊ณ: ์์ ํ์ด์ง ์ง์์ ์ํด ๋๋ผ์ด๋ฒ ํ์ฅ์ด ํ์ํ ์ ์์ต๋๋ค.
- ํ๊ณ: ๋ฌผ๋ฆฌ ๋จํธํ๋ ์ค์ด์ง๋ง KV ์์ฒด๋ฅผ ์ค์ด์ง ์์ผ๋ฏ๋ก, ๋์ฉ๋ ๋ชจ๋ธ์์๋ ์์ํ์ ๋ณํํ๋ ํธ์ด ์ ๋ฆฌํฉ๋๋ค.
6. ๊ด๋ จ ๊ธฐ์
| ๋ฌธ์/๊ธฐ์ | ์ฐ๊ฒฐ์ |
|---|---|
| vAttention (ASPLOS 2025, arXiv 2405.04437) | CUDA VMM ๊ธฐ๋ฐ ์ค๊ณ, ์ฑ๋ฅ ์์น, ์ต์ ํ ๊ธฐ๋ฒ์ 1์ฐจ ์ถ์ฒ |
| PagedAttention Analysis | ๋ธ๋ก ๋จ์ KV ๊ด๋ฆฌ์ ๋๋น๋๋ ๊ธฐ์ค์ |
| CUDA Driver API Virtual Memory Management | cuMemAddressReserve, cuMemCreate, cuMemMap, cuMemSetAccess |
Unified Memory (cudaMallocManaged) |
๋ ผ๋ฌธ 8์ฅ์์ ๋น๊ตํ๋ ๋์ |
| FlashAttention-2 / FlashAttention-3 | vAttention์ด ๊ทธ๋๋ก ํ์ฉํ๋ attention kernel ๊ณ์ด |
| FlashInfer | paged / non-paged kernel ๋น๊ต ๋์ |
| vLLM / TensorRT-LLM | PagedAttention ๊ธฐ๋ฐ ์๋น ์์คํ ์ ๋ํ ์ฌ๋ก |
7. ํต์ฌ ์ ๋ฆฌ
vAttention์ PagedAttention๊ณผ ๊ฐ์ ๋ชฉํ, ์ฆ KV cache ๋จํธํ ์ํ๋ฅผ ๋ ๋จ์ํ ๋ฐฉ์์ผ๋ก ๋ฌ์ฑํฉ๋๋ค. PagedAttention์ด KV์ ๊ฐ์ ๋ ์ด์์๊น์ง ๋น์ฐ์์ผ๋ก ๋ฐ๊ฟจ๋ค๋ฉด, vAttention์ CUDA VMM์ ์ด์ฉํด ๊ฐ์ ์ฃผ์๋ ์ฐ์์ผ๋ก ์ ์งํ๊ณ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๋ง ํ์ํ ๋ ๋งคํํฉ๋๋ค. ๋๋ถ์ attention kernel์ ์์ ํ์ง ์๊ณ ๋ ์ต์ ์ปค๋์ ๊ทธ๋๋ก ํ์ฉํ ์ ์๊ณ , ๋ธ๋ก ํ ์ด๋ธ๊ณผ ๊ฐ์ ์ฐธ์กฐ ์ค๋ฒํค๋๋ ์ค์ด๋ญ๋๋ค.
๋ ผ๋ฌธ์ 2MB ๊ธฐ๋ณธ granularity์ VMM ํธ์ถ ์ง์ฐ์ 64KB page-group, overlap, deferred reclamation, eager allocation์ผ๋ก ๋ณด์ํฉ๋๋ค. ๋ณด๊ณ ์ฑ๋ฅ์ decode throughput ์ต๋ 1.99x, offline end-to-end ์ต๋ 1.23x์ด๋ฉฐ, online ํ๊ฒฝ์์๋ latency๊ฐ ๊ฐ์ํฉ๋๋ค. CUDA VMM ์์กด์ฑ์ด ์๋ ๋์ , KV ์์ํ๋ GQA/MLA์๋ ์ง๊ต์ ์ผ๋ก ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค.