Prefix Caching Analysis
Prefix Caching / Prompt Caching ์ฌ์ธต ๋ถ์
๊ณตํต ํ๋ฆฌํฝ์ค KV ์ฌ์ฌ์ฉ ยท ๋ธ๋กยทํด์ ๋งค์นญ ยท RadixAttention vs APC ยท ํ๋ก๋ฐ์ด๋ Prompt Caching ยท ๋ฉํฐํดยทRAG
ํ๋ฆฌํฝ์ค ์บ์ฑ(prefix caching, prompt caching)์ ์ฌ๋ฌ ์์ฒญ์ด ๊ณต์ ํ๋ ์๋ถ๋ถ(ํ๋ฆฌํฝ์ค)์ KV ์บ์๋ฅผ ํ ๋ฒ๋ง ๊ณ์ฐํด ์ฌ์ฌ์ฉํจ์ผ๋ก์จ, ๊ฐ์ prefill ์ฐ์ฐ์ด ๋ฐ๋ณต๋๋ ๊ฒ์ ๋ง๋ ๊ธฐ๋ฒ์ ๋๋ค. KV ์บ์๊ฐ ํ๋ฆฌํฝ์ค์๋ง ์์กดํ๋ค๋ ์ฑ์ง์ ์ด์ฉํด ๊ณตํต๋ถ์ prefill์ ํต์งธ๋ก ๊ฑด๋๋ฐ๋ฏ๋ก, ์ถ๋ ฅ์ ๋ฐ๊พธ์ง ์์ผ๋ฉด์(๋ฌด์์ค) TTFT์ ๋น์ฉ์ ํฌ๊ฒ ์ค์ ๋๋ค. ๋ฉํฐํด ๋ํยทRAGยทfew-shotยท์์ด์ ํธ์ฒ๋ผ ๊ณตํต ํ๋ฆฌํฝ์ค๊ฐ ํฐ ์ํฌ๋ก๋๋ฅผ ๋ ๋ฐ์น๋ ์ค๋ฌด ํ์ค์ด๋ฉฐ, ๊ฑฐ์ ๋ชจ๋ ์ถ๋ก ์์ง(vLLMยทSGLang)๊ณผ ํ๋ก๋ฐ์ด๋(OpenAIยทAnthropic ๋ฑ)๊ฐ ์ฑํํ๊ณ ์์ต๋๋ค.
์ค๋ฌด ๊ด์ ์์ ์ค์ํ ์ ์ ์ด ๊ธฐ๋ฒ์ด "์ข์ ํ๋กฌํํธ ์์ฑ๋ฒ"๊ณผ ์ง์ ์ฐ๊ฒฐ๋๋ค๋ ๊ฒ์ ๋๋ค. ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์์คํ ํ๋กฌํํธ, ํด ์ ์, few-shot ์์, ์ฅ๋ฌธ ๋ฌธ์๋ฅผ ํ๋กฌํํธ ์์ชฝ์ ๊ณ ์ ํ๊ณ , ์ฌ์ฉ์๋ณ ๊ฐ๋ณ ์ ๋ ฅ์ ๋ค๋ก ๋ฐ์๋ก ํํธ์จ์ด ์ฌ๋ผ๊ฐ๋๋ค. ๋ฐ๋๋ก ์ค๊ฐ์ ๋ํ ์ด๋ ฅ์ ์๋ผ๋ด๊ฑฐ๋, ํด ์คํค๋ง๋ ์ด๋ฏธ์ง ์ ๋ ฅ์ด ๋ฐ๋๊ฑฐ๋, ํ๋ฆฌํฝ์ค ์๋ถ๋ถ์ด ์กฐ๊ธ์ด๋ผ๋ ๋ฌ๋ผ์ง๋ฉด ์บ์๊ฐ ๊นจ์ง๋ฏ๋ก ๋ผ์ฐํ ์ ์ฑ ๊ณผ ํ๋กฌํํธ ๋ ์ด์์๊น์ง ํจ๊ป ์ค๊ณํด์ผ ํฉ๋๋ค. ๋ณธ ๋ฌธ์๋ ํต์ฌ ์์ด๋์ด โ ๋งค์นญ ๋ฉ์ปค๋์ฆ(๋ธ๋กยทํด์) โ ๋ ๊ตฌํ(RadixAttentionยทAPC) โ ์ฌ์ฉ ์ฌ๋กยทํ๋ก๋ฐ์ด๋ API โ ์ถ์ถยท๋ฉ๋ชจ๋ฆฌ ๊ณ์ธตยทํ๊ณ์ ์์๋ก ๋ถ์ํฉ๋๋ค.
1. ํต์ฌ ์์ด๋์ด โ ๊ณตํต ํ๋ฆฌํฝ์ค์ KV๋ฅผ ์ฌ์ฌ์ฉ
์ฌ๋ฌ ์์ฒญ์ด ๊ฐ์ ์๋ถ๋ถ์ผ๋ก ์์ํ๋ ๊ฒฝ์ฐ๋ ํํฉ๋๋ค. ์์คํ ํ๋กฌํํธ, few-shot ์์, RAG๋ก ๋ถ์ธ ๋ฌธ์, ๋ฉํฐํด ๋ํ์ ์ด๋ ฅ์ด ๊ทธ๋ ์ต๋๋ค. ์์งํ๊ฒ๋ ๋งค ์์ฒญ๋ง๋ค ์ด ๊ณตํต๋ถ๋ฅผ ์ฒ์๋ถํฐ prefillํ์ง๋ง, ๊ทธ๊ฒ์ ๊ฐ์ ๊ณ์ฐ์ ๋ฐ๋ณต์ ๋๋ค.
๊ทธ๋ฆผ 1. ๊ณตํต ํ๋ฆฌํฝ์ค๋ฅผ ํ ๋ฒ๋ง ๊ณ์ฐํด ์บ์ํ๊ณ ์ฌ์ฌ์ฉํ๋ ๊ตฌ์กฐ
์ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ๊ณ , ์ '๊ฑฐ์ ๊ณต์ง'์ธ๊ฐ
-
KV ์บ์๋ ๊ทธ ํ ํฐ๊น์ง์ ์๋ถ๋ถ(ํ๋ฆฌํฝ์ค)์๋ง ์์กดํฉ๋๋ค. ๋ฐ๋ผ์ ๊ฐ์ ํ๋ฆฌํฝ์ค๋ฉด KV๊ฐ ์ ํํ ๋์ผํ๊ณ , ํ ๋ฒ ๊ณ์ฐํด ์ ์ฅํ๋ฉด ๊ฐ์ ํ๋ฆฌํฝ์ค๋ก ์์ํ๋ ๋ค๋ฅธ ์์ฒญ์ด ๊ทธ๋๋ก ์ฌ์ฌ์ฉํ ์ ์์ต๋๋ค.
-
prefill์ ๊ณต๋ต โ ๊ณตํต๋ถ์ prefill(๊ณ์ฐ์ง์ฝ ๋จ๊ณ)์ ํต์งธ๋ก ๊ฑด๋๋ฐ๋ฏ๋ก TTFT๊ฐ ํฌ๊ฒ ์ค๊ณ GPU ์ฐ์ฐ์ด ์ ์ฝ๋ฉ๋๋ค.
-
๋ฌด์์ค โ ์บ์๋ KV๋ ์ฌ๊ณ์ฐํ ๊ฒ๊ณผ ์ํ์ ์ผ๋ก ๋์ผํ๋ฏ๋ก ์ถ๋ ฅ์ด ๋ฐ๋์ง ์์ต๋๋ค. ๊ทธ๋์ '๊ฑฐ์ ๊ณต์ง ์ ์ฌ(almost free lunch)'์ผ๋ก ๋ถ๋ฆฝ๋๋ค.
-
ํนํ ๋ฉํฐํด โ ๋งค ํด๋ง๋ค ์ ์ฒด ๋ํ๋ฅผ ๋ค์ prefillํ์ง ์๊ณ ์ด์ ํด๋ค์ KV๋ฅผ ์ฌ์ฌ์ฉํฉ๋๋ค. ๋ค๋ง ํ๋ฆฌํฝ์ค๊ฐ ์ ํํ ์ผ์นํด์ผ ํ๋ฉฐ, ํ ํ ํฐ๋ง ๋ฌ๋ผ๋ ๊ทธ ์ง์ ๋ถํฐ ์บ์ ๋ฏธ์ค๊ฐ ๋ฉ๋๋ค.
์ด ๊ธฐ๋ฒ์ KV ์ ๊ฐ ๊ธฐ๋ฒ(์์ํยทMLAยทGQA)๊ณผ๋ ๋ค๋ฅธ ์ถ์ ๋๋ค. ์์ํยทMLA๊ฐ 'KV๋ฅผ ์๊ฒ' ๋ง๋ ๋ค๋ฉด, ํ๋ฆฌํฝ์ค ์บ์ฑ์ 'KV๋ฅผ ๋ค์ ๋ง๋ค์ง ์๊ฒ' ํฉ๋๋ค. ๊ทธ๋์ ๋์ ์ง๊ต์ ์ผ๋ก ํจ๊ป ์ธ ์ ์์ต๋๋ค.
2. ๋งค์นญ ๋ฉ์ปค๋์ฆ โ ๋ธ๋ก ๋จ์ + ํด์
ํ๋ฆฌํฝ์ค ์บ์ฑ์ PagedAttention์ ๋ธ๋ก ์ถ์ํ ์์์ ์์ฐ์ค๋ฝ๊ฒ ๋์ํฉ๋๋ค. KV๋ฅผ ๊ณ ์ ํ ํฐ ์์ ๋ธ๋ก์ผ๋ก ์ชผ๊ฐ๊ณ , ๊ฐ ๋ธ๋ก์ '๊ทธ ๋ธ๋ก๊น์ง์ ํ๋ฆฌํฝ์ค'๋ฅผ ๋ฐ์ํ ํด์๋ก ์๋ณํฉ๋๋ค.
๊ทธ๋ฆผ 2. ๋ธ๋ก๋ณ ํด์ ์ฒด์ธ๊ณผ ์ ๋ ์ผ์น(prefix match) ๊ธฐ๋ฐ ์ฌ์ฌ์ฉ
๋ธ๋ก ํด์์ ๋งค์นญ (vLLM APC ๊ฐ๋ )
๋งค์นญ์ ํต์ฌ
-
ํด์๊ฐ ๋ด์ฉ๊ณผ ์์น(์ ๋ธ๋ก๋ค)๋ฅผ ๋ชจ๋ ๋ฐ์ํ๋ฏ๋ก, ๊ฐ์ ํด์๋ฉด ๊ฐ์ KV ๋ธ๋ก์์ด ๋ณด์ฅ๋ฉ๋๋ค. ๋ ผ๋ฆฌ ๋ธ๋ก์ ํด์ ํ ์ด๋ธ์ ๊ฑฐ์ณ ๋ฌผ๋ฆฌ ๋ธ๋ก์ ๋งคํํ๊ณ , ๊ฐ์ ํด์๋ ๊ฐ์ ๋ฌผ๋ฆฌ ๋ธ๋ก์ ๊ฐ๋ฆฌ์ผ ๊ณต์ ํฉ๋๋ค.
-
์ ๋ ์ผ์น(prefix match) โ ์์์๋ถํฐ ํด์๊ฐ ๊ฐ์ ๋ธ๋ก๊น์ง๋ง ์ฌ์ฌ์ฉํ๊ณ , ์ฒ์ ๋ฌ๋ผ์ง๋ ๋ธ๋ก๋ถํฐ ์ฌ๊ณ์ฐํฉ๋๋ค. ํ๋ฆฌํฝ์ค ์ ์ฒด๊ฐ ๊ฐ์ง ์์๋ ์ผ์นํ๋ ์๋ถ๋ถ๊น์ง๋ ์ฌ์ฌ์ฉ๋ฉ๋๋ค(๋ถ๋ถ ๋งค์นญ).
-
์ ํ ์ผ์น ํ์ โ ํ ํฐ ์ํ์ค๊ฐ ๊ฐ์์ผ ํ๊ณ ์์น๋ ๊ฐ์์ผ ํฉ๋๋ค(์ดํ ์ ยทRoPE๊ฐ ์์น์ ์์กด). ๋ธ๋ก ํฌ๊ธฐ(์: 16ํ ํฐ) ๋จ์๋ก ๋งค์นญ๋๋ฏ๋ก, ๋ธ๋ก ์ค๊ฐ์์ ๊ฐ๋ฆฌ๋ฉด ๊ทธ ๋ธ๋ก์ ์ฌ๊ณ์ฐ๋ฉ๋๋ค.
3. ๋ ๊ฐ์ง ๊ตฌํ ๋ฐฉ์
ํ๋ฆฌํฝ์ค ์บ์ฑ์ ๊ตฌํํ๋ ๋ํ์ ๋ฐฉ์์ ๋ ๊ฐ์ง์ ๋๋ค. SGLang์ RadixAttention์ ํ ํฐ ๋จ์ radix tree๋ฅผ, vLLM์ Automatic Prefix Caching(APC)์ ๋ธ๋ก ๋จ์ ํด์ ํ ์ด๋ธ์ ์๋๋ค.
๊ทธ๋ฆผ 3. RadixAttention(ํ ํฐ ๋จ์ ํธ๋ฆฌ)๊ณผ hash ๋ธ๋ก ์บ์ฑ(vLLM APC)
| ํญ๋ชฉ | RadixAttention (SGLang) | APC (vLLM) |
|---|---|---|
| ๊ธฐ๋ณธ ๋จ์ | ํ ํฐ ์ํ์ค ๊ฒฝ๋ก | ๊ณ ์ ํฌ๊ธฐ KV ๋ธ๋ก |
| ํต์ฌ ์๋ฃ๊ตฌ์กฐ | radix tree | ํด์ ํ ์ด๋ธ + ๋ฌผ๋ฆฌ ๋ธ๋ก ๋งคํ |
| ์ฅ์ | ์ธ๋ฐํ prefix ๊ฒ์, ๋ถ๊ธฐ ์ํฌ๋ก๋์ ์ ๋ฆฌ | ๋จ์ํ๊ณ PagedAttention๊ณผ ๊ฒฐํฉ์ด ์ฌ์ |
| ์ฃผ์์ | ํธ๋ฆฌ ์ ์งยท์ถ์ถ ์ ์ฑ ์ด ๋ณต์กํด์ง ์ ์์ | ๋ธ๋ก ๊ฒฝ๊ณ์์ ๊ฐ๋ฆฌ๋ฉด ํด๋น ๋ธ๋ก ์ ์ฒด๋ฅผ ์ฌ๊ณ์ฐ |
| ์ ๋ง๋ ์ํฉ | ๋ฉํฐํด, ์์ด์ ํธ, ๊ตฌ์กฐํ๋ ๋ถ๊ธฐ ์ถ๋ก | ์ผ๋ฐ ์๋น, ๋๊ท๋ชจ ๋ฐฐ์น, ๋ธ๋ก ๊ด๋ฆฌ ์๋ํ |
RadixAttention (SGLang)
-
KV ์บ์๋ฅผ ํ ํฐ ์ํ์ค์ radix tree์ ๋ณด๊ดํด, ๋น ๋ฅธ ํ๋ฆฌํฝ์ค ๊ฒ์ยท์ฝ์ ยท์ถ์ถ์ ์ง์ํฉ๋๋ค. ์์ฑ์ด ๋๋๋ KV๋ฅผ ๋ฒ๋ฆฌ์ง ์๊ณ ํธ๋ฆฌ์ ์ ์งํฉ๋๋ค.
-
๊ณต์ ํ๋ฆฌํฝ์ค๋ ํธ๋ฆฌ์ ๊ณต์ ๊ฒฝ๋ก๊ฐ ๋๊ณ , ๊ฐ๋ผ์ง๋ ์ง์ ์์ ์ ๊ฐ์ง๊ฐ ์๊น๋๋ค. fork ํ๋ฆฌ๋ฏธํฐ๋ธ๋ก ๋ถ๊ธฐ๋๋ ๋์ ํธ๋ฆฌ(์์ด์ ํธยท๋ค๋จ๊ณ ์ถ๋ก )์ ํนํ ์ ํฉํ๋ฉฐ, ๋ฉํฐํด ์๋๋ฆฌ์ค์์ vLLM ๋๋น 10~20% ํฅ์์ด ๋ณด๊ณ ๋ฉ๋๋ค.
Hash ๋ธ๋ก ์บ์ฑ (vLLM APC)
-
๊ฐ ๋ธ๋ก์ ํด์๋ก ์๋ณํด ํด์ ํ ์ด๋ธ๋ก ๊ณต์ ํ๋ฉฐ, OS ํ์ด์ง ์บ์์ฒ๋ผ ๊ด๋ฆฌํฉ๋๋ค. ์ฐธ์กฐ ์นด์ดํธ๊ฐ 0์ธ ๋ธ๋ก๋ง LRU๋ก ์ถ์ถํ๋ฉด RadixAttention๊ณผ ์ฌ์ค์ ๊ฐ์ ํจ๊ณผ๋ฅผ ๋ ๋๋ค.
-
๋์ ์ฐจ์ด๋ ์ ์๋์ ๋๋ค โ radix tree๋ ํ ํฐ ๋จ์(์ ์ฐ), hash๋ ๋ธ๋ก ๋จ์(๋จ์ยท๊ตฌํ ์ฉ์ด)์ ๋๋ค.
๊ณตํต์ โ ๋ ๋ฐฉ์ ๋ชจ๋ LRU ์ถ์ถ๊ณผ cache-aware ์ค์ผ์ค๋ง(๊ฐ์ ํ๋ฆฌํฝ์ค๋ฅผ ๊ฐ์ง ์์ฒญ์ ํจ๊ป ๋ฐฐ์น)์ผ๋ก hit์จ๊ณผ ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ ๋์ธ๋ค. ๋ PagedAttentionยท์ฐ์ ๋ฐฐ์นญยทํ ์ ๋ณ๋ ฌ๊ณผ ํธํ๋๋ฉฐ, ์บ์ ๋ฏธ์ค๊ฐ ๋๋ ์ถ๊ฐ ์ค๋ฒํค๋๊ฐ ๊ฑฐ์ ์์ด ํญ์ ์ผ๋ ์ ์๋ค.
4. ์ฌ์ฉ ์ฌ๋ก์ ํ๋ก๋ฐ์ด๋ Prompt Caching
๊ทธ๋ฆผ 4. ์ฌ์ฉ ์ฌ๋ก, ํ๋กฌํํธ ๊ตฌ์กฐ, ํ๋ก๋ฐ์ด๋๋ณ ํจ๊ณผ
์ด๋์ ์ฐ์ด๋
๊ณตํต ํ๋ฆฌํฝ์ค๊ฐ ํฐ ์ํฌ๋ก๋์์ ํจ๊ณผ์ ์ ๋๋ค. ๋ฉํฐํด ๋ํ(์ด์ ํด KV ์ฌ์ฌ์ฉ), RAG(๊ฒ์ ๋ฌธ์ ํ๋ฆฌํฝ์ค), few-shotยท์์คํ ํ๋กฌํํธ(๊ณตํต ์ง์ยท์์), ์์ด์ ํธ(๊ณตํต ํด ์ ์ยท์ปจํ ์คํธ)๊ฐ ๋ํ์ ์ ๋๋ค.
ํ๋ก๋ฐ์ด๋ Prompt Caching API
OpenAIยทAnthropic ๋ฑ์ ์ด ๊ธฐ๋ฒ์ API๋ก ์ ํํํ์ต๋๋ค. ํต์ฌ ํจํด์ ๋ณํ์ง ์๋ ์ ์ ์ฝํ
์ธ (์์คํ
ํ๋กฌํํธยทํด ์ ์ยท๋ฌธ์)๋ฅผ ํ๋กฌํํธ ๋งจ ์์ ๋๊ณ ๊ฐ๋ณ ๋ถ๋ถ(์ฌ์ฉ์ ์ง๋ฌธ)์ ๋ค์ ๋๋ ๊ฒ์
๋๋ค. ๊ทธ๋ฌ๋ฉด ์์ชฝ ์ ์ ํ๋ฆฌํฝ์ค๊ฐ ๋งค๋ฒ ์บ์ ํํธํฉ๋๋ค. Anthropic์ cache_control๋ก ์๋/๋ช
์์ ์บ์ฑ์ ์ ์ดํ๊ณ ๊ธฐ๋ณธ 5๋ถ TTL๊ณผ 1์๊ฐ TTL ์ต์
์ ์ ๊ณตํ๋ฉฐ, OpenAI๋ 1024ํ ํฐ ์ด์์์ ์๋ ์บ์ฑ๋๊ณ prompt_cache_key์ retention ์ ์ฑ
์ผ๋ก ๋ผ์ฐํ
๊ณผ ๋ณด์กด ์๊ฐ์ ๋ณด์ํ ์ ์์ต๋๋ค.
| ํ๋ก๋ฐ์ด๋ | ๋์ ๋ฐฉ์ | ์ต์ ์กฐ๊ฑด/๋ณด์กด | ์ค๋ฌด ํฌ์ธํธ |
|---|---|---|---|
| OpenAI | exact prefix match ๊ธฐ๋ฐ ์๋ ์บ์ฑ | 1024ํ ํฐ ์ด์, ๊ธฐ๋ณธ in-memory 5~10๋ถ, ์ผ๋ถ ๋ชจ๋ธ์ ์ต๋ 24์๊ฐ retention | ์ ์ ์ฝํ
์ธ ๋ฅผ ์์ ๋๊ณ prompt_cache_key๋ก ๋์ผ prefix ์์ฒญ์ ๊ฐ์ ์บ์ ๊ตฐ์ง์ผ๋ก ์ ๋ |
| Anthropic | cache_control ๊ธฐ๋ฐ ์๋ ๋๋ ๋ช
์์ breakpoint ์บ์ฑ |
๋ชจ๋ธ๋ณ ์ต์ ํ ํฐ ์, ๊ธฐ๋ณธ 5๋ถ TTL, ์ ํ์ 1์๊ฐ TTL | ๊ณ ์ prefix ๋ ์ง์ ์ breakpoint๋ฅผ ๋๊ณ , ๋ํ๊ฐ ๊ธธ์ด์ง ๋๋ lookback window์ block ์๋ฅผ ๊ณ ๋ ค |
์ฃผ์ํ ์ ์ ์ ํ ์ผ์น์ ๋๋ค โ ํ๋ฆฌํฝ์ค๊ฐ ํ ํ ํฐ์ด๋ผ๋ ๋ค๋ฅด๋ฉด ๊ทธ ์ง์ ๋ถํฐ ๋ฏธ์ค์ด๋ฉฐ, ์ด๋ฏธ์งยทํด ์คํค๋ง๋ ๋์ผํด์ผ ํฉ๋๋ค. ๋ ๊ฐ์ ํ๋ฆฌํฝ์ค ์์ฒญ์ ์บ์ ๋ณด์ ์๋ฒ๋ก ๋ณด๋ด๋ sticky ๋ผ์ฐํ ์ด ๋ง์์ผ ์บ์๊ฐ ์ธ๋ชจ ์๊ณ , ๋ฉํฐํด์์ ๋ํ ์ด๋ ฅ์ ์๋ฅด๊ฑฐ๋(truncation) ์ค๊ฐ์ ์์ ํ๋ฉด ํ๋ฆฌํฝ์ค๊ฐ ๊นจ์ ธ hit์จ์ด ๊ธ๋ฝํฉ๋๋ค.
5. ์ฅ๋จ์
| ์ฅ์ | ๋จ์ |
|---|---|
| ๊ณตํต ํ๋ฆฌํฝ์ค์ prefill์ ์ค์ฌ TTFT์ ๋น์ฉ์ ๋ฎ์ถ๋ค | ํ๋ฆฌํฝ์ค๊ฐ ์ ํํ ๊ฐ์์ผ ํด์ ์์ ์ฐจ์ด์๋ ํํธ๊ฐ ๊นจ์ง๋ค |
| ๋ฉํฐํดยทRAGยทfew-shotยท์์ด์ ํธ์์ ํจ๊ณผ๊ฐ ํฌ๋ค | ๊ณตํต ํ๋ฆฌํฝ์ค๊ฐ ์งง์ผ๋ฉด ์ฒด๊ฐ ์ด๋์ด ์๋ค |
| ์์ํยทMLAยท์คํ๋ก๋ฉ๊ณผ ์ง๊ต์ ์ผ๋ก ๊ฒฐํฉํ ์ ์๋ค | ์บ์ ์ ์ง, ์ถ์ถ, sticky ๋ผ์ฐํ ๊ด๋ฆฌ๊ฐ ํ์ํ๋ค |
6. ์ถ์ถยท๋ฉ๋ชจ๋ฆฌ ๊ณ์ธต๊ณผ ํ๊ณ
๊ทธ๋ฆผ 5. ์บ์ ์ถ์ถ, ๋ฉ๋ชจ๋ฆฌ ๊ณ์ธต ํ์ฅ, ๋ค์ธต ์บ์, ๊ทธ๋ฆฌ๊ณ ํ๊ณ
์ถ์ถ๊ณผ ๋ฉ๋ชจ๋ฆฌ ๊ณ์ธต
-
์ถ์ถ โ GPU ์บ์๋ ์์ผ๋ฏ๋ก LRU์ ์ฐธ์กฐ ์นด์ดํธ๋ก ๊ด๋ฆฌํฉ๋๋ค. ์ฐ์ง ์๋ ๋ธ๋ก(ref=0)์ ๋ณด์กดํ ์ด์ ๊ฐ ์๊ณ , ์ค๋๋ ๋ธ๋ก๋ถํฐ ์ถ์ถํฉ๋๋ค. hot ํ๋ฆฌํฝ์ค๋ฅผ ์ค๋ ์ ์งํ๋ ๊ฒ์ด hit์จ์ ๊ด๊ฑด์ ๋๋ค.
-
๋ฉ๋ชจ๋ฆฌ ๊ณ์ธต ํ์ฅ โ GPU์ ๋ค ๋ด์ง ๋ชปํ๋ ํ๋ฆฌํฝ์ค ์บ์๋ CPU DRAMยทCXLยทNVMe๋ก ๋ด๋ ค ๋ ๋ง์ด ๋ณด๊ดํ ์ ์์ต๋๋ค. ์ด๊ฒ์ด ์์ ๋ณธ KV ์บ์ ์คํ๋ก๋ฉ๊ณผ ๊ฒฐํฉ๋๋ ์ง์ ์ ๋๋ค(HotPrefixยทLMCache ๋ฑ์ด GPU/CPU ๊ฐ ํ๋ฆฌํฝ์ค ์น๊ฒฉยท๊ฐ๋ฑ์ ๊ด๋ฆฌ).
-
๋ค์ธต ์บ์ โ ์ค๋ฌด์์๋ ์๋งจํฑ ์บ์(์๋ต ์์ฒด ์ฌ์ฌ์ฉ) โ ํ๋ฆฌํฝ์ค ์บ์(KV ์ฌ์ฌ์ฉ) โ ์ ์ฒด ์ถ๋ก ์ ๊ณ์ธต์ ๋ก๋๋ค. ์ ๋จ๊ณ์์ ๋ง์์๋ก ์ ๊ฐ์ด ํฝ๋๋ค(์๋ต ์บ์๋ 100%, ํ๋ฆฌํฝ์ค ์บ์๋ ๋ถ๋ถ, ๋ฏธ์ค๋ฉด 0%).
ํ๊ณ
- ์ ํ ์ผ์น ์์กด โ ํ ํ ํฐ ์ฐจ์ดยท์์น ๋ณํ์ ์ทจ์ฝํด ์ผ์นํ๋ ์๋ถ๋ถ๊น์ง๋ง ์ฌ์ฌ์ฉ๋ฉ๋๋ค.
- ๊ณตํต ํ๋ฆฌํฝ์ค ์ ์ โ ๊ณ ์ ํ ํ๋กฌํํธ๋ง ์์ผ๋ฉด ์ฌ์ฌ์ฉํ ๊ฒ ์์ด ํจ๊ณผ๊ฐ ์์ต๋๋ค.
- hit์จ ๋ณ๋ โ truncationยท์ค๊ฐ ์์ ์ด hit์จ์ ํฌ๊ฒ ๋จ์ด๋จ๋ฆด ์ ์์ต๋๋ค.
- ์ฉ๋ยท๋ผ์ฐํ โ GPU ์บ์ ์ฉ๋ ํ๊ณ ๋๋ฌธ์ ์ถ์ถยทํฐ์ด๋งยทcache-aware ๋ผ์ฐํ ์ด ํ์ํฉ๋๋ค.
7. ๊ด๋ จ ๊ธฐ์
| ์๋ฃ | ํต์ฌ |
|---|---|
| SGLang: Efficient Execution of Structured Language Model Programs | RadixAttention๊ณผ structured generation ๋ฐํ์ |
| Anthropic Prompt Caching | cache_control, automatic caching, 5๋ถ ๊ธฐ๋ณธ TTL๊ณผ 1์๊ฐ TTL |
| OpenAI Prompt Caching | 1024ํ ํฐ ์ด์ ์๋ ์บ์ฑ, exact prefix match, prompt_cache_key |
| PagedAttention Analysis | ๋ธ๋ก ๋จ์ KV ๊ด๋ฆฌ์ ๊ธฐ๋ฐ |
| KV Cache Quantization Analysis | KV๋ฅผ ์๊ฒ ๋ง๋ค์ด ๋ ๋ง์ด ๋ด๋ ์ง๊ต ๊ธฐ๋ฒ |
| KV Cache Offloading Analysis | GPU ๋ฐ ํฐ์ด๋ก KV๋ฅผ ๋ด๋ฆฌ๋ ์คํ๋ก๋ฉ |
| Continuous Batching Analysis | cache-aware scheduling๊ณผ ํจ๊ป ์ฐ๋ ๋ฐฐ์น ์ถ |
8. ํต์ฌ ์ ๋ฆฌ
ํ๋ฆฌํฝ์ค ์บ์ฑ์ ๊ณตํต ํ๋ฆฌํฝ์ค์ KV๋ฅผ ํ ๋ฒ ๊ณ์ฐํด ์ฌ์ฌ์ฉํจ์ผ๋ก์จ ์ค๋ณต prefill์ ์ ๊ฑฐํ๋ ๋ฌด์์ค ๊ธฐ๋ฒ์ด๋ค. KV๊ฐ ํ๋ฆฌํฝ์ค์๋ง ์์กดํ๋ ์ฑ์ง์ ์ด์ฉํ๋ฉฐ, PagedAttention ๋ธ๋ก ์์์ ๋ธ๋ก ํด์๋ก ๋งค์นญํ๋ค. ๊ตฌํ์ RadixAttention(ํ ํฐ ๋จ์ radix tree)๊ณผ vLLM APC(๋ธ๋ก ๋จ์ ํด์)๋ก ๋๋๊ณ ๋ ๋ค LRU+cache-aware ์ค์ผ์ค๋ง์ ์ด๋ค. ํ๋ก๋ฐ์ด๋ API(OpenAI ์๋ยทAnthropic cache_control)๋ ์ ์ ์ฝํ ์ธ ๋ฅผ ์์ ๋๋ฉด ์บ์ ํํธ๋ก ๋น์ฉ์ ํฌ๊ฒ ์ค์ธ๋ค. KV ์ ๊ฐ(์์ํยทMLA)๊ณผ๋ ์ง๊ต์ ์ด๊ณ , GPU์ ๋ชป ๋ด๋ ํ๋ฆฌํฝ์ค ์บ์๋ CPUยทCXLยทNVMe๋ก ๋ด๋ ค ๋ ๋ง์ด ์ฌ์ฌ์ฉํ ์ ์๋ค. ํ๊ณ๋ ์ ํ ์ผ์น ์์กด๊ณผ ๊ณตํต ํ๋ฆฌํฝ์ค ์ ์ ์ด๋ฉฐ, hit์จ ์ ์ง์ cache-aware ๋ผ์ฐํ ์ด ํต์ฌ์ด๋ค.
๋ฉ๋ชจ๋ฆฌ ์์คํ ๊ด์ (์ฐ๊ตฌ ํ์ฅ) โ ํ๋ฆฌํฝ์ค ์บ์๋ '์ด๋ค ํ๋ฆฌํฝ์ค KV๋ฅผ ์ด๋ ํฐ์ด(GPU/CPU/CXL/NVMe)์ ์ผ๋ง๋ ์ค๋ ๋์ง'๋ผ๋ ์บ์ยทํฐ์ด๋ง ๋ฌธ์ ๋ก, KV ์คํ๋ก๋ฉยท์ ๋ขฐ์ฑ ์ค๊ณ์ ๋์ผํ ์ถ์ ์๋ค. hot ํ๋ฆฌํฝ์ค๋ฅผ ์์ ํฐ์ด์ ๋๊ณ ์ฝ๋ ํ๋ฆฌํฝ์ค๋ฅผ CXL๋ก ๋ด๋ฆฌ๋ ์ ์ฑ , ๊ทธ๋ฆฌ๊ณ ํฐ์ด๋ณ ๋นํธ ์ค๋ฅ ํน์ฑ์ ๋ง์ถ ์ ๋ฐ๋ยทECC ๊ฒฐ์ ์ด ์์ฐ์ค๋ฌ์ด ํ์ฅ์ด๋ค.
์ฃผ์ โ ๋ณธ๋ฌธ์ ์์งยทํ๋ก๋ฐ์ด๋ ๋ฌธ์์ ์ฐ๊ตฌ ์๋ฃ(RadixAttention/SGLang arXiv 2312.07104, Anthropic prompt caching ๋ฌธ์, OpenAI prompt caching ๋ฌธ์, HotPrefixยทLMCache ๋ฑ)์ ๊ธฐ๋ฐํ๋ค. ๋น์ฉยท์ง์ฐยท์ต์ ํ ํฐยทTTL ๊ฐ์ ์์น๋ ํน์ ํ๋ก๋ฐ์ด๋ยท๋ชจ๋ธยท์กฐ๊ฑด์ ๋ณด๊ณ ๊ฐ์ผ๋ก, ํ๋กฌํํธ ๊ตฌ์ฑยทhit์จยท๋ผ์ฐํ ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ค. ํ๋ก๋ฐ์ด๋๋ณ ์ ์ฑ (์ต์ ํ ํฐยทTTLยท๊ฐ๊ฒฉ)์ ์์๋ก ๋ฐ๋ ์ ์์ผ๋ ์ค์ ์ ์ฉ ์ ๊ณต์ ๋ฌธ์๋ฅผ ํ์ธํด์ผ ํ๋ค.