Ryotta's Basic

LLM
๐Ÿค– LLM ๊ฒ€์ฆ์™„๋ฃŒ

PagedAttention Analysis

PagedAttention ์‹ฌ์ธต ๋ถ„์„ โ€” LLM KV ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ

vLLM ยท KV Cache Paging ยท Block Table ยท Copy-on-Write ยท Continuous Batching ยท KV Offloading

๊ฐœ์š”

PagedAttention(Kwon et al., SOSP 2023)์€ ์šด์˜์ฒด์ œ์˜ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌยทํŽ˜์ด์ง•์„ LLM์˜ KV ์บ์‹œ ๊ด€๋ฆฌ์— ์ ์šฉํ•œ ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค. ๊ธฐ์กด ์„œ๋น™ ์‹œ์Šคํ…œ์ด ๋‹จํŽธํ™”์™€ ๊ณผ๋‹ค ์˜ˆ์•ฝ์œผ๋กœ KV ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ์˜ 60~80%๋ฅผ ๋‚ญ๋น„ํ•˜๋˜ ๋ฌธ์ œ๋ฅผ, KV ์บ์‹œ๋ฅผ ๊ณ ์ • ํฌ๊ธฐ ๋ธ”๋ก์œผ๋กœ ์ชผ๊ฐœ๊ณ  ๋ธ”๋ก ํ…Œ์ด๋ธ”๋กœ ๋น„์—ฐ์† ๊ด€๋ฆฌํ•จ์œผ๋กœ์จ 4% ๋ฏธ๋งŒ์œผ๋กœ ์ค„์˜€์Šต๋‹ˆ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ ๋™์ผ ํ•˜๋“œ์›จ์–ด์—์„œ ์ฒ˜๋ฆฌ๋Ÿ‰์„ 2~4๋ฐฐ ๋Œ์–ด์˜ฌ๋ ธ๊ณ , ์ด๋ฅผ ๊ตฌํ˜„ํ•œ vLLM์€ ์‚ฌ์‹ค์ƒ์˜ ํ‘œ์ค€ ์„œ๋น™ ์—”์ง„์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ณธ ๋ฌธ์„œ๋Š” ๋‹จํŽธํ™” ๋ฌธ์ œ โ†’ OS ํŽ˜์ด์ง• ์œ ์ถ” โ†’ ๋ธ”๋ก ํ…Œ์ด๋ธ”ยท์ปค๋„ โ†’ copy-on-writeยทํ”„๋ฆฌํ”ฝ์Šค ๊ณต์œ  โ†’ ์„ฑ๋Šฅ โ†’ ๋ฉ”๋ชจ๋ฆฌ ํ‹ฐ์–ด๋ง/์˜คํ”„๋กœ๋”ฉ ์—ฐ๊ฒฐ์˜ ์ˆœ์„œ๋กœ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.

PagedAttention์€ ๋‹จ์ผ ์š”์ฒญ์˜ ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๋ฅผ ์ค„์ด๋Š” ๋ฐ์„œ ๋๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ์š”์ฒญ์ด ๊ฐ™์€ ํ”„๋ฆฌํ”ฝ์Šค๋ฅผ ๊ณต์œ ํ•  ๋•Œ copy-on-write๋กœ ๋ธ”๋ก์„ ์žฌ์‚ฌ์šฉํ•˜๊ณ , ๋ธ”๋ก ํฌ๊ธฐ๋ฅผ ๊ณ ์ •ํ•ด ์Šค์™‘ยท์˜คํ”„๋กœ๋”ฉ ๋‹จ์œ„๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด ๋•Œ๋ฌธ์— ์„œ๋น™ ์ฒ˜๋ฆฌ๋Ÿ‰, ๋ฐฐ์น˜ ์œ ์—ฐ์„ฑ, ๊ณ„์ธตํ˜• ๋ฉ”๋ชจ๋ฆฌ ์—ฐ๊ณ„๊ฐ€ ํ•จ๊ป˜ ์ข‹์•„์ง‘๋‹ˆ๋‹ค.

ํ•ต์‹ฌ ๊ฐœ๋…

  • KV ๋ธ”๋ก: KV ์บ์‹œ๋ฅผ ๊ณ ์ • ํฌ๊ธฐ ํ† ํฐ ๋ฌถ์Œ์œผ๋กœ ๋‚˜๋ˆˆ ๋‹จ์œ„์ž…๋‹ˆ๋‹ค.
  • ๋ธ”๋ก ํ…Œ์ด๋ธ”: ๋…ผ๋ฆฌ ๋ธ”๋ก ๋ฒˆํ˜ธ๋ฅผ ๋น„์—ฐ์† ๋ฌผ๋ฆฌ ๋ธ”๋ก์— ๋งคํ•‘ํ•˜๋Š” ํ‘œ์ž…๋‹ˆ๋‹ค.
  • on-demand ํ• ๋‹น: ํ•„์š”ํ•œ ์‹œ์ ์—๋งŒ ๋ฌผ๋ฆฌ ๋ธ”๋ก์„ ๋ถ™์—ฌ ๋‚ด๋ถ€ ๋‹จํŽธํ™”๋ฅผ ๋งˆ์ง€๋ง‰ ๋ธ”๋ก ํ•˜๋‚˜๋กœ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค.
  • copy-on-write: ๊ณต์œ  ์ค‘์ธ ๋ธ”๋ก์— ์“ฐ๊ธฐ๊ฐ€ ํ•„์š”ํ•œ ์ˆœ๊ฐ„์—๋งŒ ๋ณต์‚ฌํ•ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ ˆ์•ฝํ•ฉ๋‹ˆ๋‹ค.

1. ๋ฌธ์ œ โ€” KV ์บ์‹œ์˜ ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„

LLM ์„œ๋น™์—์„œ ๋””์ฝ”๋”ฉ์€ ๋ฉ”๋ชจ๋ฆฌ ๋ฐ”์šด๋“œ์ด๋ฏ€๋กœ, ์ฒ˜๋ฆฌ๋Ÿ‰์„ ๋†’์ด๋ ค๋ฉด ๋” ๋งŽ์€ ์š”์ฒญ์„ ํ•œ ๋ฒˆ์— ๋ฐฐ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๊ฐ ์š”์ฒญ์˜ KV ์บ์‹œ๊ฐ€ ํฌ๊ณ  ๋™์ ์ด๋ผ, ์ด๋ฅผ ์–ด๋–ป๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ์— ๋‹ด๋А๋ƒ๊ฐ€ ๊ณง ์ฒ˜๋ฆฌ๋Ÿ‰์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด ์‹œ์Šคํ…œ์€ ๋”ฅ๋Ÿฌ๋‹ ํ”„๋ ˆ์ž„์›Œํฌ์˜ '์—ฐ์† ํ…์„œ' ์ œ์•ฝ ๋•Œ๋ฌธ์— ์š”์ฒญ๋งˆ๋‹ค ์ตœ๋Œ€ ์‹œํ€€์Šค ๊ธธ์ด๋งŒํผ์˜ ์—ฐ์† ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ฏธ๋ฆฌ ์˜ˆ์•ฝํ–ˆ๊ณ , ์ด๊ฒƒ์ด ํฐ ๋‚ญ๋น„๋ฅผ ๋‚ณ์•˜์Šต๋‹ˆ๋‹ค.

llm_0010_pagedattention_analysis

๊ทธ๋ฆผ 1. ์—ฐ์† ํ• ๋‹น ๋ฐฉ์‹์˜ ์„ธ ๊ฐ€์ง€ KV ์บ์‹œ ๋‚ญ๋น„(์˜ˆ์•ฝยท๋‚ด๋ถ€ ๋‹จํŽธํ™”ยท์™ธ๋ถ€ ๋‹จํŽธํ™”)

์„ธ ๊ฐ€์ง€ ๋‚ญ๋น„์™€ ๊ทธ ๊ทœ๋ชจ

  • ์˜ˆ์•ฝ(reserved) โ€” ๋ฏธ๋ž˜ ํ† ํฐ์šฉ์œผ๋กœ ์žก์•„๋‘” ์Šฌ๋กฏ. ์ง€๊ธˆ ๋‹ค๋ฅธ ์š”์ฒญ์ด ์“ฐ์ง€ ๋ชปํ•จ.

  • ๋‚ด๋ถ€ ๋‹จํŽธํ™”(internal fragmentation) โ€” ์‹ค์ œ ์‹œํ€€์Šค ๊ธธ์ด๊ฐ€ ์˜ˆ์•ฝํ•œ ์ตœ๋Œ€ ๊ธธ์ด๋ณด๋‹ค ์งง์•„ ์˜์˜ ์•ˆ ์“ฐ์ด๋Š” ๊ณต๊ฐ„.

  • ์™ธ๋ถ€ ๋‹จํŽธํ™”(external fragmentation) โ€” ์—ฐ์† ์ฒญํฌ๋“ค ์‚ฌ์ด์— ์ƒ๊ธฐ๋Š”, ํฌ๊ธฐ๊ฐ€ ๋งž์ง€ ์•Š์•„ ์žฌ์‚ฌ์šฉ ๋ถˆ๊ฐ€๋Šฅํ•œ ํ‹ˆ.

vLLM ์ž๋ฃŒ์— ๋”ฐ๋ฅด๋ฉด ๊ธฐ์กด ์‹œ์Šคํ…œ์€ KV ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ์˜ 60~80%๋ฅผ ๋‚ญ๋น„ํ–ˆ๊ณ , ์‹ค์ œ ํ† ํฐ์ด ์ฐจ์ง€ํ•˜๋Š” ๋น„์œจ์€ Orca ๊ณ„์—ด์—์„œ 13.3~38.2%์— ๋ถˆ๊ณผํ–ˆ์Šต๋‹ˆ๋‹ค. 13B OPT ๋ชจ๋ธ ๊ธฐ์ค€ ํ† ํฐ 1๊ฐœ์˜ KV ์บ์‹œ๋Š” ์•ฝ 800KB, ์‹œํ€€์Šค 1๊ฐœ๋Š” ์ตœ๋Œ€ 1.6~1.7GB(OPT/LLaMA-13B)์— ๋‹ฌํ•˜๋ฏ€๋กœ, ์ด ๋‚ญ๋น„๋Š” ๊ณง ๋ฐฐ์น˜ ํฌ๊ธฐ์™€ ์ฒ˜๋ฆฌ๋Ÿ‰์˜ ์ง์ ‘์  ์†์‹ค์ž…๋‹ˆ๋‹ค.

2. ํ•ต์‹ฌ ์•„์ด๋””์–ด โ€” OS ํŽ˜์ด์ง•์„ KV ์บ์‹œ์—

PagedAttention์˜ ํ†ต์ฐฐ์€ ์ด ๋ฌธ์ œ๊ฐ€ ์šด์˜์ฒด์ œ๊ฐ€ ์ด๋ฏธ ํ‘ผ ๋ฌธ์ œ์™€ ๊ฐ™๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. OS๋Š” ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณ ์ • ํฌ๊ธฐ ํŽ˜์ด์ง€๋กœ ๋‚˜๋ˆ„๊ณ , ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”๋กœ ๊ฐ€์ƒ ์ฃผ์†Œ๋ฅผ ๋น„์—ฐ์† ๋ฌผ๋ฆฌ ํ”„๋ ˆ์ž„์— ๋งคํ•‘ํ•ด ์™ธ๋ถ€ ๋‹จํŽธํ™”๋ฅผ ์—†์•ฑ๋‹ˆ๋‹ค. ๊ฐ™์€ ๋ฐœ์ƒ์„ KV ์บ์‹œ์— ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

PagedAttention Analysis

๊ทธ๋ฆผ 2. OS ๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ์™€์˜ ๋Œ€์‘, ๊ทธ๋ฆฌ๊ณ  ๋ธ”๋ก ํ…Œ์ด๋ธ”์˜ ๋…ผ๋ฆฌโ†’๋ฌผ๋ฆฌ ๋งคํ•‘

๋Œ€์‘ ๊ด€๊ณ„

KV ์บ์‹œ๋ฅผ ๊ณ ์ • ํฌ๊ธฐ KV ๋ธ”๋ก(๋ธ”๋ก๋‹น B๊ฐœ ํ† ํฐ์˜ KยทV)์œผ๋กœ ๋‚˜๋ˆ„๊ณ  ๋น„์—ฐ์† ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์— ๋ฐฐ์น˜ํ•ฉ๋‹ˆ๋‹ค. ๋ธ”๋ก ํฌ๊ธฐ๊ฐ€ ๋ชจ๋‘ ๊ฐ™์œผ๋ฏ€๋กœ ์™ธ๋ถ€ ๋‹จํŽธํ™”๊ฐ€ ์›์ฒœ ์ œ๊ฑฐ๋˜๊ณ , ๋ธ”๋ก์„ ํ•„์š”ํ•  ๋•Œ(on-demand) ํ• ๋‹นํ•˜๋ฏ€๋กœ ๋‚ด๋ถ€ ๋‹จํŽธํ™”๋Š” ์‹œํ€€์Šค๋‹น ๋งˆ์ง€๋ง‰ ๋ธ”๋ก ํ•˜๋‚˜(์ตœ๋Œ€ Bโˆ’1=15ํ† ํฐ)๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋‚ญ๋น„ 4% ๋ฏธ๋งŒ์˜ ๊ทผ๊ฑฐ์ž…๋‹ˆ๋‹ค. ์–ดํ…์…˜์€ ๊ณผ๊ฑฐ K/V๋ฅผ ์ˆœํšŒ๋งŒ ํ•˜๋ฉด ๋˜๋ฏ€๋กœ ๋น„์—ฐ์† ์ €์žฅ์ด ์ •ํ™•๋„์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

3. PagedAttention ์ปค๋„ โ€” ๋ธ”๋ก ๋‹จ์œ„ ์–ดํ…์…˜

KV ์บ์‹œ๊ฐ€ ๋น„์—ฐ์† ๋ธ”๋ก์— ํฉ์–ด์ ธ ์žˆ์œผ๋ฏ€๋กœ, ์–ดํ…์…˜ ์ปค๋„๋„ ์ด๋ฅผ ๋ธ”๋ก ๋‹จ์œ„๋กœ ์ˆœํšŒํ•˜๋„๋ก ์žฌ์ •์‹ํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜ํ•™์ ์œผ๋กœ๋Š” ๊ธฐ์กด ์–ดํ…์…˜๊ณผ ์™„์ „ํžˆ ๋™์ผํ•˜๋ฉฐ, ๋‹จ์ง€ K/V๋ฅผ ๋ธ”๋ก ๋ฌถ์Œ์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋ถ€๋ถ„ํ•ฉ์„ ๋ˆ„์ ํ•  ๋ฟ์ž…๋‹ˆ๋‹ค.

PagedAttention Analysis

๊ทธ๋ฆผ 3. query๊ฐ€ ๋น„์—ฐ์† KV ๋ธ”๋ก์„ ๋ธ”๋ก ๋‹จ์œ„๋กœ fetchํ•˜์—ฌ ์–ดํ…์…˜์„ ๊ณ„์‚ฐ

๋ธ”๋ก ๋‹จ์œ„ ์–ดํ…์…˜ (๊ฐœ๋…์  ์˜์‚ฌ์ฝ”๋“œ)

  • vLLM ์ปค๋„์—์„œ ํ•œ ๋ธ”๋ก์€ ํ•œ ํ—ค๋“œ์˜ 16ํ† ํฐ ร— head_dim(์˜ˆ: 128) = 2048๊ฐœ ์š”์†Œ๋ฅผ ๋‹ด์œผ๋ฉฐ, ์›Œํ”„(32 ์Šค๋ ˆ๋“œ)๊ฐ€ ํ•œ ๋ฒˆ์— ํ•œ ๋ธ”๋ก์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

  • ๋น„์šฉ: ๋ธ”๋ก ํ…Œ์ด๋ธ” ์กฐํšŒ์™€ ์ถ”๊ฐ€ ๋ถ„๊ธฐ ๋•Œ๋ฌธ์— ๋น„ํŽ˜์ด์ง€๋“œ ์ปค๋„ ๋Œ€๋น„ ์•ฝ 20~26% ๋А๋ฆฝ๋‹ˆ๋‹ค(๋…ผ๋ฌธ ์ธก์ •). ๊ทธ๋Ÿฌ๋‚˜ ๋ฉ”๋ชจ๋ฆฌ ์ ˆ์•ฝ์œผ๋กœ ๋ฐฐ์น˜๋ฅผ ํฌ๊ฒŒ ํ‚ค์šธ ์ˆ˜ ์žˆ์–ด ์ „์ฒด ์ฒ˜๋ฆฌ๋Ÿ‰์€ ํฌ๊ฒŒ ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค.

  • vLLM์€ ์ด indirection ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์–ดํ…์…˜ ๋“ฑ ๋‹ค๋ฅธ ์—ฐ์‚ฐ๊ณผ GPU ์ปค๋„์„ ์œตํ•ฉ(fuse)ํ•ด ์™„ํ™”ํ•ฉ๋‹ˆ๋‹ค.

4. ๋ฉ”๋ชจ๋ฆฌ ๊ณต์œ  โ€” Copy-on-Write์™€ ํ”„๋ฆฌํ”ฝ์Šค ๊ณต์œ 

๋ธ”๋ก ํ…Œ์ด๋ธ”์ด๋ผ๋Š” ๊ฐ„์ ‘ ๊ณ„์ธต์€ ๋‹จํŽธํ™” ์ œ๊ฑฐ๋ฅผ ๋„˜์–ด ๋˜ ํ•˜๋‚˜์˜ ๊ฐ•๋ ฅํ•œ ๋Šฅ๋ ฅ์„ ์ค๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ์‹œํ€€์Šค๊ฐ€ ๊ฐ™์€ ๋ฌผ๋ฆฌ ๋ธ”๋ก์„ ๊ณต์œ ํ•˜๊ณ , ์“ฐ๊ธฐ๊ฐ€ ํ•„์š”ํ•œ ์ˆœ๊ฐ„์—๋งŒ ๋ณต์‚ฌํ•˜๋Š” copy-on-write์ž…๋‹ˆ๋‹ค. ์ด๋Š” OS๊ฐ€ fork๋œ ํ”„๋กœ์„ธ์Šค๋ผ๋ฆฌ ํŽ˜์ด์ง€๋ฅผ ๊ณต์œ ํ•˜๋Š” ๋ฐฉ์‹๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

PagedAttention Analysis

๊ทธ๋ฆผ 4. ๋ณ‘๋ ฌ ์ƒ˜ํ”Œ๋ง์˜ COW์™€ ๊ณต์œ  ํ”„๋ฆฌํ”ฝ์Šค(์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ) ๊ณต์œ 

๊ณต์œ  ์‹œ๋‚˜๋ฆฌ์˜ค

  • ๋ณ‘๋ ฌ ์ƒ˜ํ”Œ๋ง โ€” ํ•œ ํ”„๋กฌํ”„ํŠธ๋กœ ์—ฌ๋Ÿฌ ๋‹ต์„ ์ƒ์„ฑํ•  ๋•Œ, ํ”„๋กฌํ”„ํŠธ์˜ KV ๋ธ”๋ก์„ ์ฐธ์กฐ ์นด์šดํŠธ์™€ ํ•จ๊ป˜ ๊ณต์œ ํ•˜๊ณ , ๊ฐ ์ƒ˜ํ”Œ์ด ๋ถ„๊ธฐํ•ด ์„œ๋กœ ๋‹ค๋ฅธ ํ† ํฐ์„ ์“ฐ๋Š” ์ˆœ๊ฐ„(ref>1 ๊ฐ์ง€)์—๋งŒ ๋ธ”๋ก์„ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.

  • ๋น”์„œ์น˜ โ€” ํ›„๋ณด(beam)๋“ค์ด ํ”„๋กฌํ”„ํŠธ๋ฟ ์•„๋‹ˆ๋ผ ์ค‘๊ฐ„ ๋ธ”๋ก๊นŒ์ง€ ๊ณต์œ ํ•˜๋ฉฐ, ๊ณต์œ  ํŒจํ„ด์ด ๋™์ ์œผ๋กœ ์ง„ํ™”ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด ์‹œ์Šคํ…œ์˜ ์žฆ์€ KV ๋ณต์‚ฌ๋ฅผ ๋ธ”๋ก ๊ณต์œ ๋กœ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค.

  • ๊ณต์œ  ํ”„๋ฆฌํ”ฝ์Šค โ€” ์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ๋‚˜ few-shot ์˜ˆ์‹œ์ฒ˜๋Ÿผ ๋ชจ๋“  ์š”์ฒญ์ด ๊ณต์œ ํ•˜๋Š” ์•ž๋ถ€๋ถ„์˜ KV๋ฅผ ๋ฏธ๋ฆฌ ์บ์‹œํ•ด๋‘๋ฉด, ํ”„๋ฆฌํ”ฝ์Šค ๊ณ„์‚ฐ์€ 1ํšŒ๋กœ ๋๋‚˜๊ณ  ๋ฉ”๋ชจ๋ฆฌ๋„ 1๋ฒŒ๋งŒ ์ฐจ์ง€ํ•ฉ๋‹ˆ๋‹ค.

๋ฉ”๋ชจ๋ฆฌ ์ ˆ๊ฐ(๋…ผ๋ฌธ ์‹ค์ธก) โ€” ๋ณ‘๋ ฌ ์ƒ˜ํ”Œ๋ง๊ณผ ๋น”์„œ์น˜์—์„œ ์ตœ๋Œ€ 55% ์ ˆ๊ฐ(๋น”์„œ์น˜ 37.6~55.2%, ๋ณ‘๋ ฌ ์ƒ˜ํ”Œ๋ง 6.1~9.8%, ShareGPT ์›Œํฌ๋กœ๋“œ์—์„  16.2~30.5%). ๋…ผ๋ฆฌโ†’๋ฌผ๋ฆฌ ๋งคํ•‘ ๊ณ„์ธต์ด ๊ณต์œ ์˜ ๋ณต์žก์„ฑ์„ ์ˆจ๊ธฐ๋ฏ€๋กœ, ์„œ๋กœ ๋‹ค๋ฅธ ์ƒ˜ํ”Œ๋ง ์š”๊ตฌ๋ฅผ ๊ฐ€์ง„ ์š”์ฒญ๋“ค๋„ ํ•œ ๋ฐฐ์น˜์— ์„ž์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž๋™ ํ”„๋ฆฌํ”ฝ์Šค ์บ์‹ฑ(APC)

vLLM์€ ๊ฐ KV ๋ธ”๋ก์„ 'ํ”„๋ฆฌํ”ฝ์Šค ํ† ํฐ๋“ค์˜ ํ•ด์‹œ'๋กœ ์‹๋ณ„ํ•ด ์ „์—ญ ํ•ด์‹œ ํ…Œ์ด๋ธ”์— ๋“ฑ๋กํ•จ์œผ๋กœ์จ, ํŠธ๋ฆฌ ๊ตฌ์กฐ ์—†์ด๋„ ๊ณตํ†ต ํ”„๋ฆฌํ”ฝ์Šค๋ฅผ ์ž๋™์œผ๋กœ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค(enable_prefix_caching). SGLang์˜ RadixAttention์€ ๊ฐ™์€ ๋ชฉํ‘œ๋ฅผ radix tree(ํŠธ๋ผ์ด)๋กœ ๋‹ฌ์„ฑํ•˜๋Š” ๋Œ€์•ˆ์ž…๋‹ˆ๋‹ค.

5. ์„ฑ๋Šฅ๊ณผ vLLM ์‹œ์Šคํ…œ

PagedAttention์˜ ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์€ ๊ทธ๋Œ€๋กœ ์ฒ˜๋ฆฌ๋Ÿ‰์œผ๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค. ๋‚ญ๋น„๋ฅผ ์—†์•ค ๋งŒํผ ๋” ๋งŽ์€ ์š”์ฒญ์˜ KV๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ๋“ค์–ด๊ฐ€๊ณ , ๋” ํฐ ๋ฐฐ์น˜๊ฐ€ ๋””์ฝ”๋”ฉ์˜ ๋ฉ”๋ชจ๋ฆฌ ๋Œ€์—ญํญ์„ ๋” ์ž˜ ํ™œ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

PagedAttention Analysis

๊ทธ๋ฆผ 5. KV ๋ฉ”๋ชจ๋ฆฌ ํ™œ์šฉ๋ฅ (96.3% vs 13~38%)๊ณผ ์ฒ˜๋ฆฌ๋Ÿ‰ ํ–ฅ์ƒ, continuous batching๊ณผ์˜ ์ƒ๋ณด์„ฑ

Continuous Batching๊ณผ์˜ ์ƒ๋ณด์„ฑ

vLLM์€ PagedAttention์„ continuous batching(iteration-level scheduling, Orca์—์„œ ์œ ๋ž˜)๊ณผ ๊ฒฐํ•ฉํ•ฉ๋‹ˆ๋‹ค. Continuous batching์ด ๋งค ๋””์ฝ”๋”ฉ ์Šคํ…๋งˆ๋‹ค ์™„๋ฃŒ๋œ ์š”์ฒญ์„ ๋นผ๊ณ  ์ƒˆ ์š”์ฒญ์„ ๋„ฃ์–ด GPU๋ฅผ ๊ฝ‰ ์ฑ„์šฐ๋Š” ์Šค์ผ€์ค„๋ง ์ธก๋ฉด์ด๋ผ๋ฉด, PagedAttention์€ ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๋ฅผ ์—†์•  ๋” ๋งŽ์€ ์š”์ฒญ์˜ working set์ด ๋ฉ”๋ชจ๋ฆฌ์— ๋“ค์–ด๊ฐ€๊ฒŒ ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ธก๋ฉด์ž…๋‹ˆ๋‹ค. ๋‘ ๊ธฐ๋ฒ•์€ ์ƒ๋ณด์ ์ด๋ฉฐ, ํ•จ๊ป˜ ์ž‘๋™ํ•ด ์ฒ˜๋ฆฌ๋Ÿ‰์„ ๊ทน๋Œ€ํ™”ํ•ฉ๋‹ˆ๋‹ค. vLLM์€ UC Berkeley์—์„œ ์‹œ์ž‘ํ•ด 2000๋ช… ์ด์ƒ์ด ๊ธฐ์—ฌํ•˜๋Š” ๋Œ€ํ‘œ์  ์˜คํ”ˆ์†Œ์Šค ์„œ๋น™ ์—”์ง„์œผ๋กœ ์„ฑ์žฅํ–ˆ์Šต๋‹ˆ๋‹ค.

6. ์„ ์ ยท์Šค์™‘ยท์žฌ๊ณ„์‚ฐ๊ณผ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„

๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ ์‹œ โ€” ์Šค์™‘ vs ์žฌ๊ณ„์‚ฐ

์š”์ฒญ์ด ๋ชฐ๋ ค GPU ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•˜๋ฉด vLLM์€ FCFS๋กœ ์ตœ์‹  ์š”์ฒญ์„ ์„ ์ (preempt)ํ•˜๊ณ , ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ณต๊ตฌํ•ฉ๋‹ˆ๋‹ค.

  • ์Šค์™‘(swapping) โ€” ํ‡ด์ถœ๋œ ๋ธ”๋ก์„ CPU RAM์œผ๋กœ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. vLLM์€ GPU ๋ธ”๋ก ํ• ๋‹น๊ธฐ ์™ธ์— CPU ๋ธ”๋ก ํ• ๋‹น๊ธฐ๋ฅผ ๋‘๋ฉฐ, CPU๋กœ ์Šค์™‘๋˜๋Š” ๋ธ”๋ก ์ˆ˜๋Š” GPU ๋ฌผ๋ฆฌ ๋ธ”๋ก ์ด์ˆ˜๋ฅผ ๋„˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์Šค์™‘ ๊ณต๊ฐ„์˜ ์ƒํ•œ์ด ์ •ํ•ด์ง‘๋‹ˆ๋‹ค.

  • ์žฌ๊ณ„์‚ฐ(recomputation) โ€” ํ‡ด์ถœ ํ›„ ๋‹ค์‹œ admitํ•  ๋•Œ prefill์„ ์žฌ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. PCIe ๋Œ€์—ญํญ์„ ์“ฐ์ง€ ์•Š์•„ ๋ธ”๋ก ํฌ๊ธฐ์— ๋ฌด๊ด€ํ•˜๊ฒŒ ์ผ์ •ํ•œ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ๊ฐ€์ง€๋ฉฐ, ์ˆ˜ GB์˜ KV๋ฅผ PCIe๋กœ ์™•๋ณต์‹œํ‚ค๋А๋‹ˆ ์žฌ๊ณ„์‚ฐ์ด ๋” ๋น ๋ฅธ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. vLLM V1์—์„œ๋Š” ๊ธฐ๋ณธ ์„ ์  ๋ชจ๋“œ๊ฐ€ SWAP์ด ์•„๋‹ˆ๋ผ RECOMPUTE์ž…๋‹ˆ๋‹ค.

  • all-or-nothing ํ‡ด์ถœ โ€” ํ•œ ์‹œํ€€์Šค์˜ ๋ชจ๋“  ๋ธ”๋ก์„ ํ•จ๊ป˜ ์Šค์™‘/์žฌ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค(์š”์ฒญ ์ฒ˜๋ฆฌ์— ๋ชจ๋“  ํ† ํฐ ์ƒํƒœ๊ฐ€ GPU์— ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ์ ์„ ํ™œ์šฉ). OS ํŽ˜์ด์ง•์—๋Š” ์—†๋Š” LLM ํŠนํ™” ์ตœ์ ํ™”์ž…๋‹ˆ๋‹ค.

๋ธ”๋ก ํฌ๊ธฐ์˜ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„

๋ธ”๋ก์ด ๋„ˆ๋ฌด ์ž‘์œผ๋ฉด ๋ธ”๋ก ํ…Œ์ด๋ธ” ์กฐํšŒ ํšŸ์ˆ˜์™€ ๊ด€๋ฆฌ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋Š˜๊ณ , ๋„ˆ๋ฌด ํฌ๋ฉด ์งง์€ ์‘๋‹ต์—์„œ ๋‚ด๋ถ€ ๋‹จํŽธํ™”๊ฐ€ ์ปค์ง‘๋‹ˆ๋‹ค. ๋…ผ๋ฌธ ์‹คํ—˜์—์„œ ShareGPT(๊ธด ์‹œํ€€์Šค)๋Š” 16~128, Alpaca(์งง์€ ์‹œํ€€์Šค)๋Š” 16~32๊ฐ€ ์ข‹์•˜๊ณ , ๊ฒฐ๋ก ์ ์œผ๋กœ 16์ด GPU ํ™œ์šฉ์—๋Š” ์ถฉ๋ถ„ํžˆ ํฌ๊ณ  ๋‹จํŽธํ™” ๋ฐฉ์ง€์—๋Š” ์ถฉ๋ถ„ํžˆ ์ž‘์•„ ๊ธฐ๋ณธ๊ฐ’์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋Œ€์•ˆ โ€” vAttention

vAttention(ASPLOS 2025)์€ PagedAttention์˜ ๋น„์—ฐ์† ๋ ˆ์ด์•„์›ƒ์ด ์ƒˆ ์ปค๋„ ์ด์‹์„ ์–ด๋ ต๊ฒŒ ํ•˜๊ณ  ์ปค๋„ ์„ฑ๋Šฅ์„ ๋–จ์–ด๋œจ๋ฆฐ๋‹ค๊ณ  ๋น„ํŒํ•˜๋ฉฐ, user-space ํŽ˜์ด์ง• ๋Œ€์‹  CUDA ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ API(๊ฐ€์ƒ ์ฃผ์†Œ๋Š” ์—ฐ์† ์˜ˆ์•ฝ, ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๋Š” on-demand ๋งคํ•‘)๋กœ ๊ฐ™์€ ๋ชฉํ‘œ๋ฅผ ๋‹ฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋ฏธ์ˆ˜์ • ์–ดํ…์…˜ ์ปค๋„์„ ๊ทธ๋Œ€๋กœ ์“ฐ๋ฉด์„œ ์ตœ๋Œ€ 1.23๋ฐฐ ์ฒ˜๋ฆฌ๋Ÿ‰ ํ–ฅ์ƒ์„ ๋ณด๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค("up to" ๊ฐ’).

7. ๋ฉ”๋ชจ๋ฆฌ ํ‹ฐ์–ด๋งยทKV ์บ์‹œ ์˜คํ”„๋กœ๋”ฉ ์—ฐ๊ฒฐ

PagedAttention์˜ ๊ณ ์ • ํฌ๊ธฐ ๋ธ”๋ก์€ ๋‹จํŽธํ™” ํ•ด๊ฒฐ์„ ๋„˜์–ด, KV ์บ์‹œ๋ฅผ ๋‹ค๋ฅธ ๋ฉ”๋ชจ๋ฆฌ ๊ณ„์ธต์œผ๋กœ ์˜ฎ๊ธฐ๋Š” '์ด๋™ ๋‹จ์œ„'๋กœ๋„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์“ฐ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๋ฉ”๋ชจ๋ฆฌ ํ‹ฐ์–ด๋ง์˜ ํŽ˜์ด์ง€์™€ ๋™ํ˜•์ด๋ฉฐ, KV ์บ์‹œ ์˜คํ”„๋กœ๋”ฉ ์—ฐ๊ตฌ์˜ ์ง์ ‘์  ๊ธฐ๋ฐ˜์ด ๋ฉ๋‹ˆ๋‹ค.

PagedAttention Analysis

๊ทธ๋ฆผ 6. ๋ธ”๋ก์„ ์ด๋™ ๋‹จ์œ„๋กœ ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณ„์ธต๊ณผ KV ์˜คํ”„๋กœ๋”ฉ ์—ฐ๊ตฌ์˜ ๊ณ„๋ณด

์˜คํ”„๋กœ๋”ฉ ๊ด€๋ จ ์—ฐ๊ตฌ์˜ ํ๋ฆ„์€ ์•„๋ž˜ ํ‘œ์™€ ๊ฐ™์ด ์ด์–ด์ง‘๋‹ˆ๋‹ค.

์™œ PagedAttention์ด ๊ธฐ๋ฐ˜์ธ๊ฐ€

  • ๊ณ ์ • ํฌ๊ธฐ ๋ธ”๋ก์€ ๊ทธ ์ž์ฒด๋กœ ๊ด€๋ฆฌยท์ด๋™์˜ ๋‹จ์œ„ โ†’ ๋ฉ”๋ชจ๋ฆฌ ํ‹ฐ์–ด๋ง์˜ ํŽ˜์ด์ง€์™€ ๋™ํ˜•. 'KV ๋ธ”๋ก์„ ์–ด๋А ํ‹ฐ์–ด์— ๋‘˜ ๊ฒƒ์ธ๊ฐ€'๊ฐ€ ๊ณง promotion/demotion ์ •์ฑ… ๋ฌธ์ œ๋กœ ํ™˜์›๋ฉ๋‹ˆ๋‹ค.

  • vLLM์€ ์ด๋ฏธ CPU ๋ธ”๋ก ํ• ๋‹น๊ธฐ๋กœ ๋ธ”๋ก์„ CPU๋กœ ์Šค์™‘ํ•ฉ๋‹ˆ๋‹ค. ๊ณ„์ธต์€ GPU HBM(~3.35TB/s) โ†’ CPU DRAM(~63GB/s PCIe5) โ†’ NVMe(~7GB/s) โ†’ ์›๊ฒฉ/CXL๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค.

  • CXL์˜ ์˜์˜๋Š” PCIe ์˜คํ”„๋กœ๋”ฉ(8~12GB/s)์˜ ๋Œ€์—ญํญยท์ง€์—ฐ ํ•œ๊ณ„๋ฅผ ์™„ํ™”ํ•˜๊ณ , CXLโ†’GPU ์ง์ ‘ ๊ฒฝ๋กœ๋ฅผ ๊ฐ€๋Šฅ์ผ€ ํ•œ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. Tang et al.์€ CXL-GPU ์ „์†ก์ด CPU-GPU ์ „์†ก๊ณผ ๋Œ€๋“ฑํ•จ์„ ์‹คํ—˜์œผ๋กœ ๋ณด์˜€์Šต๋‹ˆ๋‹ค.

๋น„๊ต/๋ถ„์„

PagedAttention์€ OS ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ์™€ ๊ฐ™์€ ์ถ”์ƒํ™”๋ฅผ ์‚ฌ์šฉํ•ด KV ์บ์‹œ๋ฅผ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

OS ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ PagedAttention
ํ”„๋กœ์„ธ์Šค ์š”์ฒญ(์‹œํ€€์Šค)
ํŽ˜์ด์ง€(๊ณ ์ • ํฌ๊ธฐ) KV ๋ธ”๋ก(๊ณ ์ • ํ† ํฐ ์ˆ˜, ๊ธฐ๋ณธ 16)
๋ฐ”์ดํŠธ ํ† ํฐ
ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ๋ธ”๋ก ํ…Œ์ด๋ธ”(๋…ผ๋ฆฌโ†’๋ฌผ๋ฆฌ + ์ฑ„์›Œ์ง„ ํ† ํฐ ์ˆ˜)

๋ธ”๋ก ํ…Œ์ด๋ธ” ์กฐํšŒ ์˜์‚ฌ์ฝ”๋“œ

# ๋ธ”๋ก ํ…Œ์ด๋ธ”: ๋…ผ๋ฆฌ ๋ธ”๋ก ๋ฒˆํ˜ธ โ†’ ๋ฌผ๋ฆฌ ๋ธ”๋ก ๋ฒˆํ˜ธ
# query q_i ์— ๋Œ€ํ•ด ํฉ์–ด์ง„ KV ๋ธ”๋ก๋“ค์„ ์ˆœํšŒํ•˜๋ฉฐ ๋ถ€๋ถ„ softmax ๋ˆ„์ 
out_i = 0
denom = 0
running_max = -inf
for j in range(num_blocks):                # ๋…ผ๋ฆฌ ๋ธ”๋ก 0..n
    phys = block_table[seq][j]             # ๋ฌผ๋ฆฌ ๋ธ”๋ก ์œ„์น˜ ์กฐํšŒ
    K_j = K_cache[phys]                    # ๋ธ”๋ก ๋‚ด B(=16)๊ฐœ ํ† ํฐ์˜ Key
    V_j = V_cache[phys]                    # ๋ธ”๋ก ๋‚ด B๊ฐœ ํ† ํฐ์˜ Value
    s   = (q_i @ K_j.T) / sqrt(d)          # ๋ธ”๋ก์— ๋Œ€ํ•œ ์ ์ˆ˜
    # ์˜จ๋ผ์ธ softmax (FlashAttention ์Šคํƒ€์ผ)๋กœ max/๋ถ„๋ชจ/๋ˆ„์ ์„ ๊ฐฑ์‹ 
    out_i, denom, running_max = online_softmax_update(
        out_i, denom, running_max, s, V_j
    )
o_i = out_i / denom                        # ์ตœ์ข… ์–ดํ…์…˜ ์ถœ๋ ฅ

์ฒ˜๋ฆฌ๋Ÿ‰ ๋น„๊ต

๋น„๊ต ๋Œ€์ƒ ์ฒ˜๋ฆฌ๋Ÿ‰ ํ–ฅ์ƒ ์กฐ๊ฑด
Orca / FasterTransformer 2~4๋ฐฐ ๋™์ผ ์ง€์—ฐ, ์‹œํ€€์Šค ๊ธธ์ˆ˜๋กยท๋ณต์žกํ• ์ˆ˜๋ก โ†‘
HuggingFace Transformers 14~24๋ฐฐ ๋‹จ์ผ ์ถœ๋ ฅ (LLaMA-7B/13B)
HuggingFace TGI 2.2~2.5๋ฐฐ ๋‹จ์ผ ์ถœ๋ ฅ
vs HF (๋ณ‘๋ ฌ ์ถœ๋ ฅ 3๊ฐœ) 8.5~15๋ฐฐ ๋ณต์žกํ•œ ๋””์ฝ”๋”ฉ์—์„œ ํšจ๊ณผ ๊ทน๋Œ€ํ™”

์žฅ๋‹จ์ 

์žฅ์ 

  • KV ์บ์‹œ๋ฅผ ๊ณ ์ • ํฌ๊ธฐ ๋ธ”๋ก์œผ๋กœ ๊ด€๋ฆฌํ•ด ์™ธ๋ถ€ ๋‹จํŽธํ™”๋ฅผ ์‚ฌ์‹ค์ƒ ์ œ๊ฑฐํ•˜๊ณ , ๋‚ด๋ถ€ ๋‹จํŽธํ™”๋„ ๋งˆ์ง€๋ง‰ ๋ธ”๋ก ํ•˜๋‚˜๋กœ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค.
  • copy-on-write์™€ ํ”„๋ฆฌํ”ฝ์Šค ๊ณต์œ ๋ฅผ ํ†ตํ•ด ๋ณ‘๋ ฌ ์ƒ˜ํ”Œ๋ง, ๋น”์„œ์น˜, ์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ ์žฌ์‚ฌ์šฉ์—์„œ ๋ฉ”๋ชจ๋ฆฌ ์ ˆ๊ฐ ํšจ๊ณผ๋ฅผ ๋ฐ”๋กœ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • continuous batching, CPU ์Šค์™‘, ๊ณ„์ธตํ˜• KV ์˜คํ”„๋กœ๋”ฉ๊ณผ ๊ฒฐํ•ฉํ•˜๊ธฐ ์‰ฌ์›Œ ์„œ๋น™ ์—”์ง„ ์ „์ฒด์˜ ํ™•์žฅ์„ฑ๊ณผ ์šด์˜ ์œ ์—ฐ์„ฑ์„ ๋†’์ž…๋‹ˆ๋‹ค.

๋‹จ์ 

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

๊ด€๋ จ ๊ธฐ์ˆ  ๋ฐ ์ฐธ๊ณ  ๋ฌธํ—Œ

์—ฐ๊ตฌ ํ•ต์‹ฌ ๋น„๊ณ 
vLLM CPU ๋ธ”๋ก ์Šค์™‘์œผ๋กœ ๋ธ”๋ก์„ CPU RAM์— ํ‡ด์ถœ ์˜คํ”„๋กœ๋”ฉ์˜ ์ถœ๋ฐœ์ 
LMCache GPUยทCPUยท๋””์Šคํฌยท์›๊ฒฉ ๋‹ค๊ณ„์ธต KV, ํฐ chunk(256ํ† ํฐ) ๋ฉ€ํ‹ฐํ„ดยทRAG์—์„œ TTFT 3~10๋ฐฐโ†“
Mooncake KVCache-centric ๋ถ„๋ฆฌ ์•„ํ‚คํ…์ฒ˜, ์ž์› ํ’€๋ง Transfer Engine(CXL/NVMe-oF)
CXL-KV (Tang et al.) save/load API, prefix ํ•ด์‹œ, CXLโ†’GPU ์ง์ ‘ ๊ฒฝ๋กœ ๋ฐฐ์น˜ 44โ†’57(+30%) ์‹ค์ธก
CXL-PNM CXL ๋ฉ”๋ชจ๋ฆฌ ๋‚ด ์—ฐ์‚ฐ์œผ๋กœ ํ† ํฐ ์„ ํƒ ์˜คํ”„๋กœ๋“œ ์ตœ๋Œ€ 21.9๋ฐฐ(์ €์ž ๋ณด๊ณ )
  • Kwon et al., "Efficient Memory Management for Large Language Model Serving with PagedAttention", SOSP 2023 / arXiv:2309.06180.
  • vLLM Project Documentation, "Paged Attention" ๋ฐ prefix caching, preemption, continuous batching ๊ด€๋ จ ๋ฌธ์„œ.
  • Tang et al., CXL ๊ธฐ๋ฐ˜ KV cache offloading ์—ฐ๊ตฌ(CXL-KV) ๋ฐœํ‘œ ์ž๋ฃŒ ๋ฐ ํ”„๋ฆฌํ”„๋ฆฐํŠธ.
  • LMCache, Mooncake, vAttention ๋…ผ๋ฌธ/ํ”„๋กœ์ ํŠธ ๋ฌธ์„œ.

ํ•ต์‹ฌ ์ •๋ฆฌ

PagedAttention์€ OS ํŽ˜์ด์ง•์„ KV ์บ์‹œ์— ์ ์šฉํ•ด, ์บ์‹œ๋ฅผ ๊ณ ์ • ํฌ๊ธฐ ๋ธ”๋ก์œผ๋กœ ์ชผ๊ฐœ๊ณ  ๋ธ”๋ก ํ…Œ์ด๋ธ”๋กœ ๋น„์—ฐ์† ๊ด€๋ฆฌํ•จ์œผ๋กœ์จ ๊ธฐ์กด์˜ 60~80% ๋‚ญ๋น„๋ฅผ 4% ๋ฏธ๋งŒ์œผ๋กœ ์ค„์˜€๋‹ค. ๋ธ”๋ก ๋‹จ์œ„ ์–ดํ…์…˜ ์ปค๋„์€ ์ˆ˜ํ•™์ ์œผ๋กœ ๋™์ผํ•˜๋ฉฐ, ์ฐธ์กฐ ์นด์šดํŒ…๊ณผ copy-on-write๋กœ ๋ณ‘๋ ฌ ์ƒ˜ํ”Œ๋งยท๋น”์„œ์น˜ยท๊ณต์œ  ํ”„๋ฆฌํ”ฝ์Šค์—์„œ KV๋ฅผ ๊ณต์œ ํ•œ๋‹ค. continuous batching๊ณผ ๊ฒฐํ•ฉํ•œ vLLM์€ ์ฒ˜๋ฆฌ๋Ÿ‰์„ 2~4๋ฐฐ, HuggingFace ๋Œ€๋น„ 14~24๋ฐฐ๊นŒ์ง€ ๋Œ์–ด์˜ฌ๋ ค ์‚ฌ์‹ค์ƒ์˜ ํ‘œ์ค€์ด ๋˜์—ˆ๋‹ค. ๊ณ ์ • ๋ธ”๋ก ์ถ”์ƒํ™”๋Š” ์Šค์™‘ยท์žฌ๊ณ„์‚ฐ์„ ๊ฑฐ์ณ CXLยท๊ณ„์ธตํ˜• ๋ฉ”๋ชจ๋ฆฌ๋กœ์˜ KV ์˜คํ”„๋กœ๋”ฉ์œผ๋กœ ์ด์–ด์ง€๋ฉฐ, ์ด๋Š” 'KV ๋ธ”๋ก์„ ์–ด๋А ํ‹ฐ์–ด์— ๋‘˜ ๊ฒƒ์ธ๊ฐ€'๋ผ๋Š” ๋ฉ”๋ชจ๋ฆฌ ํ‹ฐ์–ด๋ง ๋ฌธ์ œ์™€ ์ง์ ‘ ๋งž๋‹ฟ๋Š”๋‹ค.

์ฃผ์˜ โ€” ๋ณธ๋ฌธ ์ˆ˜์น˜๋Š” 1์ฐจ ๋…ผ๋ฌธ(arXiv 2309.06180)ยทvLLM ๊ณต์‹ ์ž๋ฃŒ์˜ ์‹ค์ธก์ด๋‚˜ ๋ชจ๋ธ(OPT/LLaMA)ยท๋ฐ์ดํ„ฐ์…‹(ShareGPT/Alpaca)ยทํ•˜๋“œ์›จ์–ด(A100/A10G) ์กฐ๊ฑด์— ๋”ฐ๋ฅธ ๊ฐ’์ด๋‹ค(14~24๋ฐฐ๋Š” HF ๋น„๋ฐฐ์น˜ ๋Œ€๋น„, 2~4๋ฐฐ๋Š” Orca/FasterTransformer ๋Œ€๋น„). CXL-KV์˜ 'GPU 87% ์ ˆ๊ฐ'๋ฅ˜ ์ˆ˜์น˜๋Š” ์ธก์ •์ด ์•„๋‹ˆ๋ผ ROI ๋ชจ๋ธ ์ถ”์ •์น˜(ํ•„์š” GPU ์ˆ˜ ๊ธฐ์ค€)์ด๋ฉฐ, CXL-PNM ๋“ฑ 2025๋ง~2026์ดˆ ํ”„๋ฆฌํ”„๋ฆฐํŠธ์˜ 'up to' ๊ฐ’์€ ๋™๋ฃŒ์‹ฌ์‚ฌ ์—ฌ๋ถ€์— ์œ ์˜ํ•ด์•ผ ํ•œ๋‹ค. vLLM V0/V1์€ ์„ ์  ๊ธฐ๋ณธ ๋ชจ๋“œ๊ฐ€ ๋‹ค๋ฅด๋‹ค.