Disaggregated LLM Serving Analysis
Disaggregated LLM Serving ์ฌ์ธต ๋ถ์
Prefill-Decode Disaggregation ยท KV Transfer ยท Network Fabric ยท Remote Cache ยท Elastic Pooling
Disaggregated LLM serving์ prefill๊ณผ decode๋ฅผ ๊ฐ์ GPU ์์์ ํจ๊ป ์ฒ๋ฆฌํ์ง ์๊ณ , ์๋ก ๋ค๋ฅธ ์์ ํน์ฑ์ ๋ง๋ ํ๋ก ๋ถ๋ฆฌํด ์ด์ํ๋ ๊ตฌ์กฐ์ ๋๋ค. ํต์ฌ์ ๋จ์ํ ์ญํ ๋ถ๋ด์ด ์๋๋ผ prefill์ด ๋ง๋ KV๋ฅผ decode ์ชฝ์ผ๋ก ์ด๋ค ์ง์ฐ๊ณผ ๋น์ฉ์ผ๋ก ์ ๋ฌํ๋๋๋ฅผ ์์คํ ์ 1๊ธ ๋ฌธ์ ๋ก ๋ค๋ฃจ๋ ๋ฐ ์์ต๋๋ค.
์ต๊ทผ ์ฐ๊ตฌ๋ค์ ์ด ๋ถ๋ฆฌ๊ฐ TTFT์ TPOT๋ฅผ ๋์์ ๋ค๋ฃจ๋ ๋ฐฉ๋ฒ์ผ๋ก ์๋ ดํ๊ณ ์์ต๋๋ค. DistServe๋ phase๋ฅผ ๋ค๋ฅธ GPU์ ๋ฐฐ์นํด ๊ฐ์ญ์ ์ ๊ฑฐํ๊ณ , Sarathi-Serve๋ chunked prefill๊ณผ stall-free scheduling์ผ๋ก decode๋ฅผ ๋ฉ์ถ์ง ์๊ฒ ๋ง๋ค๋ฉฐ, Mooncake๋ KVCache ์ค์ฌ์ ๋ถ๋ฆฌํ ์ํคํ ์ฒ๋ก ์ฅ๋ฌธ๋งฅ๊ณผ ๊ณผ๋ถํ ์ํฉ์ ํจ๊ป ๋ค๋ฃน๋๋ค.
1. ์ Prefill๊ณผ Decode๋ฅผ ๋ถ๋ฆฌํ๋ ค ํ๋๊ฐ
๊ธด ํ๋กฌํํธ๋ฅผ ์ธ์ฝ๋ฉํ๋ prefill์ ํฐ GEMM ๋น์ค์ด ๋์ ์ฐ์ฐ ์ง์ฝ์ ์ด๋ฉฐ, ์ฒซ ํ ํฐ๊น์ง์ ์๊ฐ(TTFT)์ ์ง์ ์ํฅ์ ์ค๋๋ค. ๋ฐ๋ฉด decode๋ ๋น๊ต์ ์์ step์ ์ค๋ ๋ฐ๋ณตํ๋ฉด์ KV๋ฅผ ์ง์์ ์ผ๋ก ์ฝ๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ๋์ญํญ๊ณผ locality๊ฐ ๋ ์ค์ํฉ๋๋ค.
์ฆ ๋ ๋จ๊ณ๋ ๊ฐ์ ์ถ๋ก ์ด์ง๋ง ์ข์ํ๋ ํ๋์จ์ด ์กฐ๊ฑด์ด ๋ค๋ฆ ๋๋ค. ๊ทธ๋์ ํ ํ์ prefill ํจ์จ์, ๋ค๋ฅธ ํ์ decode ์์ ์ฑ์ ๋ง๊ฒ ๊ตฌ์ฑํ๋ฉด ์ ์ฒด ํด๋ฌ์คํฐ ํ์ฉ์ด ๋ ์ข์์ง ์ ์์ต๋๋ค. DistServe๊ฐ TTFT์ TPOT๋ฅผ ๋ถ๋ฆฌํด ์ต์ ํํ ์ด์ ๋ ์ฌ๊ธฐ์ ์์ต๋๋ค.
๊ทธ๋ฆผ 1. prefill๊ณผ decode๊ฐ ์๊ตฌํ๋ ์์ ํน์ฑ์ ์ฐจ์ด
2. ํต์ฌ ๊ฐ๋
| ๊ฐ๋ | ์๋ฏธ | ์๋น ๊ด์ |
|---|---|---|
| Prefill | ํ๋กฌํํธ ์ ์ฒด๋ฅผ ํ ๋ฒ์ ์ธ์ฝ๋ฉํ๋ ๋จ๊ณ | TTFT๋ฅผ ์ข์ฐํ๋ ์ฐ์ฐ ์ง์ฝ ๊ตฌ๊ฐ |
| Decode | ๋ค์ ํ ํฐ์ ํ๋์ฉ ์์ฑํ๋ ๋จ๊ณ | TPOT์ tail latency๋ฅผ ์ข์ฐํ๋ ๋ฉ๋ชจ๋ฆฌ ์ง์ฝ ๊ตฌ๊ฐ |
| KV Handoff | prefill์์ ๋ง๋ KV๋ฅผ decode ํ๋ก ๋๊ธฐ๋ ๊ณผ์ | ์ ์ก ์ง์ฐ๊ณผ ์ค์น ๋น์ฉ์ด ํต์ฌ ๋ณ๋ชฉ |
| Affinity | ๊ฐ์ prefix๋ KV๋ฅผ ๊ฐ์ง ์์ฒญ์ ๊ฐ๊น์ด decode ํ๋ก ๋ชจ์ผ๋ ์ ์ฑ | ์บ์ ์ ์ค๋ฅ ๊ณผ locality๋ฅผ ๋์ |
| Remote KV | KV๋ฅผ local HBM ๋ฐ์ DRAM, CXL, ๋คํธ์ํฌ ํ์ ๋๋ ๋ฐฉ์ | ์ฉ๋์ ๋์ง๋ง ์ง์ฐ ์์ฐ์ ๋ ์จ์ผ ํจ |
3. ๋น๊ต/๋ถ์
| ์ ๊ทผ | ๋ฐฐ์น/๋ฐฐํฌ ๋ฐฉ์ | ๊ฐ์ | ํ๊ณ |
|---|---|---|---|
| Colocated serving | ํ๋์ GPU/ํ์์ prefill๊ณผ decode๋ฅผ ํจ๊ป ์ฒ๋ฆฌ | ๊ตฌ์กฐ๊ฐ ๋จ์ํ๊ณ ์ ์ก ๋น์ฉ์ด ์๋ค | prefill์ด decode๋ฅผ ํ๋ค๊ธฐ ์ฝ๋ค |
| Chunked prefill / stall-free batching | ๊ฐ์ ํด๋ฌ์คํฐ ์์์ prefill์ ์๊ฒ ๋๋ decode ์ฌ์ด์ ์๋๋ค | throughput๊ณผ latency์ ๊ท ํ์ ๋ง์ถ๊ธฐ ์ฝ๋ค | ์์ ๋ถ๋ฆฌ๋ ์๋์ด์ ๊ฐ์ญ์ด ๋จ๋๋ค |
| Disaggregated serving | prefill๊ณผ decode๋ฅผ ๋ค๋ฅธ GPU ๋๋ ๋ค๋ฅธ ํด๋ฌ์คํฐ์ ๋๋ค | phase๋ณ ์์ ์ต์ ํ๊ฐ ์ฝ๊ณ ๊ฐ์ญ์ด ์ค์ด๋ ๋ค | KV handoff, affinity, routing์ด ๋ณต์กํด์ง๋ค |
DistServe๋ ๋ถ๋ฆฌํ ๋ฐฐ์น์์ 7.4x ๋ ๋ง์ ์์ฒญ ๋๋ 12.6x ๋ ํ์ดํธํ SLO๋ฅผ ๋ณด๊ณ ํ๊ณ , Sarathi-Serve๋ Mistral-7B์์ 2.6x, Falcon-180B์์ ์ต๋ 5.6x์ serving capacity ํฅ์์ ๋ณด๊ณ ํ์ต๋๋ค. Mooncake๋ KVCache-centric disaggregation์ผ๋ก ์ฅ๋ฌธ๋งฅ ์ํฌ๋ก๋์ ๊ณผ๋ถํ ์ํฉ์ ํจ๊ป ๋ค๋ฃน๋๋ค.
4. ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ KV๋ฅผ ์๋น์ค ๊ฒฝ๊ณ ๋๋จธ๋ก ๋๊ธฐ๋ ๊ตฌ์กฐ๋ค
disaggregation์์๋ ingress๊ฐ ์์ฒญ์ ๋ฐ๊ณ , prefill cluster๊ฐ ํ๋กฌํํธ๋ฅผ ์ฒ๋ฆฌํด layer๋ณ KV๋ฅผ ์์ฑํฉ๋๋ค. ์ดํ ์ด KV๋ฅผ chunk ๋๋ page ๋จ์๋ก ์ง๋ ฌํํด decode cluster๋ก ๋ณด๋ด๊ณ , decode ์ชฝ์ ์ด๋ฅผ block pool์ ์ ์ฌํ ๋ค active sequence์ ์ฐ๊ฒฐํฉ๋๋ค.
์ด๋ ๋ณ๋ชฉ์ '์ด๋์ ๊ณ์ฐํ๋๋'๋ง์ด ์๋๋ผ 'KV๋ฅผ ์ธ์ ์ค์นํ๊ณ ์ด๋ decode ๋ ธ๋์ ๋ถ์ด๋๋'๋ก ์ด๋ํฉ๋๋ค. ๊ทธ๋์ ๋คํธ์ํฌ ๊ณ์ธต, install metadata, affinity ์ ์ฑ ์ด ๋ชจ๋ธ ์์ฒด๋งํผ ์ค์ํด์ง๋๋ค.
- ingress๊ฐ ์์ฒญ์ ๋ฐ๊ณ prefix์ queue ์ํ๋ฅผ ๋ณธ๋ค.
- prefill cluster๊ฐ ํ๋กฌํํธ๋ฅผ ์ฒ๋ฆฌํ๊ณ layer๋ณ KV๋ฅผ ๋ง๋ ๋ค.
- KV๋ฅผ chunk๋ page ๋จ์๋ก ์ง๋ ฌํํด fabric์ผ๋ก ๋ณด๋ธ๋ค.
- decode cluster๊ฐ local block pool์ KV๋ฅผ ์ค์นํ๊ณ sequence์ ์ฐ๊ฒฐํ๋ค.
- scheduler๋ local fast path์ remote path๋ฅผ ํจ๊ป ๋ณด๋ฉฐ ๋ค์ ํ ํฐ ์์ฑ์ ์ด์ด๊ฐ๋ค.
๊ทธ๋ฆผ 2. ingress, prefill cluster, KV transfer, decode cluster๋ก ์ด์ด์ง๋ ๊ธฐ๋ณธ ๊ตฌ์กฐ
Remote KV๋ ๋ฉ๋ชจ๋ฆฌ ์ ์ฝ์ด์ ๋คํธ์ํฌ ์์กด์ฑ์ด๋ค
remote KV ๋๋ disaggregated cache๋ decode ๋ ธ๋์ HBM ์๋ฐ์ ์ค์ฌ ์ฃผ์ง๋ง, ๋ฐ๋๋ก latency budget ์ผ๋ถ๋ฅผ ๋คํธ์ํฌ์ ๋งก๊น๋๋ค. ๋ฐ๋ผ์ remote path์ local fast path๋ฅผ ํจ๊ป ๋๊ณ , ์์ฃผ ์ฐ๋ prefix๋ ๊ฐ๊น์ด ๊ณณ์ ๊ณ ์ ํ๋ ์์ ๊ณ์ธตํ ์ด์์ด ๋ง์ต๋๋ค.
prefill์ด ๋ง๋ KV๋ ํ๋กฌํํธ ๊ธธ์ด์ layer ์์ ๋น๋กํด ์ปค์ง๋ฏ๋ก, ์ ์ก ๋น์ฉ์ด ์์ง ์์ต๋๋ค. ์์ ์์ฒญ์ serialization๊ณผ ์ค์น ๊ณ ์ ๋น๊ฐ ๋ฌธ์ ์ด๊ณ , ํฐ ์์ฒญ์ ๋คํธ์ํฌ ๋์ญํญ๊ณผ ์์ ์ธก install ์ง์ฐ์ด ๋ณ๋ชฉ์ด ๋ฉ๋๋ค.
๋ํ decode๊ฐ KV ๋์ฐฉ์ ๊ธฐ๋ค๋ฆฌ๋ ๋์์ GPU๊ฐ ๊ณ์ฐํ ์ค๋น๊ฐ ๋์ด ์์ด๋ ์ค์ ํ ํฐ ์์ฑ์ด ์ง์ฐ๋ ์ ์์ต๋๋ค. ๊ทธ๋์ page ์ ๋ ฌ, chunk streaming, partial install, KV compression๊ณผ ๊ฐ์ ๋ณด์ ๊ธฐ๋ฒ์ด ํจ๊ป ๋ฐ๋ผ์ต๋๋ค.
๊ทธ๋ฆผ 3. build, pack, ship, install, attach๋ก ์ด์ด์ง๋ KV handoff ํ์ดํ๋ผ์ธ
5. ์ฅ๋จ์
| ์ํฉ | ์ ๋ฆฌํ ์ด์ | ๋ถ๋ฆฌํ ์ด์ |
|---|---|---|
| ๊ธด ํ๋กฌํํธ๊ฐ ๋ง๊ณ ์์ฑ์ ์งง๋ค | prefill๊ณผ decode์ ์์ ์ฑ๊ฒฉ์ด ํฌ๊ฒ ๋ฌ๋ผ ๋ถ๋ฆฌ ์ด๋์ด ํฌ๋ค | KV handoff๊ฐ ๊ธธ์ด์ง๋ฉด ์ด๋์ด ์ค์ด๋ ๋ค |
| ๋ฉํฐํ ๋ํธ decode pool์ ์์ ์ ์ผ๋ก ์ ์งํ๊ณ ์ถ๋ค | decode ์ชฝ์ ๋ฐ๋ก ๋ณดํธํ ์ ์๋ค | ์ด์ ์ ์ฑ ๊ณผ ์ฅ์ ๋ฉด์ด ์ปค์ง๋ค |
| prefix reuse๊ฐ ๋๋ค | affinity์ cache hit๊ฐ ์ข์์ง๋ค | ์์ฒญ์ด ์์ฃผ ๋ฐ๋๋ฉด remote fetch๊ฐ ๋ฐ๋ณต๋๋ค |
| ๋คํธ์ํฌ๊ฐ ๋นก๋นกํ๋ค | local pool์ HBM ์๋ฐ์ ์ค์ผ ์ ์๋ค | ์ ์ก ์ง์ฐ์ด TPOT๋ฅผ ๊ฐ์๋จน๋๋ค |
๊ธด ํ๋กฌํํธ๊ฐ ๋ง๊ณ ์์ฑ ๊ธธ์ด๋ ์งง๊ฑฐ๋, prefill burst์ decode steady-state๋ฅผ ๋ถ๋ฆฌํด ๊ด๋ฆฌํ๊ณ ์ถ์ ์ํฌ๋ก๋์์๋ disaggregation์ ์ด๋์ด ํฝ๋๋ค. ๋ํ ๋ฉํฐํ ๋ํธ ํ๊ฒฝ์์ decode pool์ ์์ ์ ์ผ๋ก ์ ์งํ๊ณ ์ถ์ ๋๋ ์ฅ์ ์ด ๋ถ๋ช ํฉ๋๋ค.
๋ฐ๋๋ก KV ์ ์ก ์ง์ฐ์ด ์ถฉ๋ถํ ์์ง ์๊ฑฐ๋, affinity๋ฅผ ์์ด remote fetch๊ฐ ๋ฐ๋ณต๋๋ฉด ๋ถ๋ฆฌ ์ด๋์ด ๋น ๋ฅด๊ฒ ์ค์ด๋ญ๋๋ค. ์ด์ ๋ณต์ก๋์ ์ฅ์ ๋ฉด์ด ์ปค์ง๋ค๋ ์ ๋ ์ค์ ๋์ ์ฅ๋ฒฝ์ ๋๋ค.
๊ทธ๋ฆผ 4. disaggregation์ด ์ ๋ฆฌํ ๊ฒฝ์ฐ, ๋น์ฉ์ด ์ปค์ง๋ ๊ฒฝ์ฐ, ์ค์ ๋ณด์์ฑ
6. ๊ด๋ จ ๊ธฐ์
prefill cluster์ decode cluster๊ฐ ๋ถ๋ฆฌ๋๋ฉด, ์ค์ผ์ค๋ฌ๋ ๋จ์ผ GPU ์์ batch๋ง ๋ณด๋ ๊ฒ์ด ์๋๋ผ ๋ ํ์ ํ ๊ธธ์ด, KV ์ ์ก ๋๊ธฐ, decode affinity, remote cache ์ํ๊น์ง ํจ๊ป ํ๋จํด์ผ ํฉ๋๋ค. ๋์ผ prefix๋ฅผ ๊ณต์ ํ๋ ์์ฒญ์ ๊ฐ์ decode ์ชฝ์ผ๋ก ๋ชจ์ผ๋ ํธ์ด ์ ๋ฆฌํ๊ณ , prefill burst๋ decode ITL์ ํ๋ค์ง ์๋๋ก ๋ณ๋ ์์ถฉ์ด ํ์ํฉ๋๋ค.
์ฆ disaggregated serving์ ๋ฐฐํฌ ํ ํด๋ก์ง ๋ณ๊ฒฝ์ด๋ฉด์ ๋์์ ์ค์ผ์ค๋ง ๋ฌธ์ ์ ์ฐจ์ ํ์ฅ์ ๋๋ค. prefix caching, paged KV, admission control, elastic pooling์ด ํจ๊ป ๋ฌถ์ฌ์ผ ์๋ฏธ ์๋ ์ฑ๋ฅ์ด ๋์ต๋๋ค.
๊ทธ๋ฆผ 5. router, prefill service, KV fabric, decode service๋ก ์ด์ด์ง๋ disaggregated serving ์คํ
| ์๋ฃ | ํฌ์ธํธ |
|---|---|
| Continuous Batching Analysis | token-level slot refill๊ณผ chunked prefill๋ก prefill/decode ๊ฐ์ญ์ ์ค์ธ๋ค |
| Prefix Caching Analysis | shared prefix์ KV๋ฅผ ์ฌ์ฌ์ฉํด prefill ์ค๋ณต์ ์ค์ธ๋ค |
| KV Cache Offloading Analysis | KV budget์ HBM ๋ฐ์ผ๋ก ๋ํ disaggregated cache์ ์ด์ด์ง๋ค |
| LLM Inference Scheduler Analysis | admission, backpressure, queue ๊ธธ์ด๋ฅผ ํจ๊ป ๋ณธ๋ค |
| DistServe: arXiv:2401.09670 | prefill/decode๋ฅผ ๋ค๋ฅธ GPU์ ๋ถ๋ฆฌํ๊ณ TTFT/TPOT ์๊ตฌ๋ฅผ ํจ๊ป ๋ง์ถ๋ค |
| Sarathi-Serve: arXiv:2403.02310 | chunked-prefills์ stall-free schedules๋ก batching ๊ฐ์ญ์ ์ค์ธ๋ค |
| Mooncake: arXiv:2407.00079 | KVCache-centric disaggregation, early rejection, ์ฅ๋ฌธ๋งฅ ์ค์ฌ ์ด์ |
DistServe์ Sarathi-Serve๋ ๊ฐ์ prefill/decode ๋ฌธ์ ๋ฅผ ์๋ก ๋ค๋ฅธ ์ด์ ์ฒ ํ์ผ๋ก ํ๊ณ , Mooncake๋ ์ด๋ฅผ ๋ถ๋ฆฌํ cache์ scheduler๊น์ง ํ์ฅํฉ๋๋ค. ์ด ๋ฌธ์์ ํต์ฌ์ ๋ถ๋ฆฌ ์์ฒด๋ณด๋ค KV handoff, affinity, ๊ทธ๋ฆฌ๊ณ ์ค์ผ์ค๋ฌ๊ฐ ํจ๊ป ์์ง์ฌ์ผ ํ๋ค๋ ์ ์ ๋๋ค.
7. ํต์ฌ ์ ๋ฆฌ
disaggregated LLM serving์ ๋ณธ์ง์ prefill๊ณผ decode์ ๋น๋์นญ์ฑ์ ์ธ์ ํ๊ณ , ๋ ๋จ๊ณ๋ฅผ ๊ฐ๊ธฐ ๋ค๋ฅธ ์ต์ ํ ๋์์ผ๋ก ๋ถ๋ฆฌํ๋ ๋ฐ ์์ต๋๋ค. ํ์ง๋ง ์ฑ๋ฅ์ ์ง์ง ์น๋ถ์ฒ๋ ๋ถ๋ฆฌ ์์ฒด๊ฐ ์๋๋ผ ๊ทธ ์ฌ์ด์ KV handoff์ affinity ์ ์ง์ ๋๋ค.
๋ฐ๋ผ์ ์ด ๊ตฌ์กฐ๋ ๋จ์ํ GPU๋ฅผ ๋๋ก ๋๋๋ ์์ด๋์ด๊ฐ ์๋๋ผ, ๋คํธ์ํฌ, ๋ฉ๋ชจ๋ฆฌ, ์บ์, ์ค์ผ์ค๋ฌ๊ฐ ํจ๊ป ์ฌ์ค๊ณ๋๋ ๋ถ์ฐ serving ์ํคํ ์ฒ๋ก ์ดํดํ๋ ํธ์ด ์ ํํฉ๋๋ค. TTFT์ TPOT๋ฅผ ๊ฐ๊ฐ ๋ฐ๋ก ๋ณด๋ฉด์๋, ์ค์ ์ด์์์๋ SLO์ ํ ๊ธธ์ด๋ฅผ ํจ๊ป ๋ฌถ์ด ๋ด์ผ ํฉ๋๋ค.
- prefill๊ณผ decode๋ฅผ ๋ถ๋ฆฌํ๋ฉด compute-bound ๋จ๊ณ์ memory-bound ๋จ๊ณ๋ฅผ ์๋ก ๋ค๋ฅธ ํ์ ๋ง์ถฐ ์ต์ ํํ ์ ์์ต๋๋ค.
- ํ์ง๋ง ์ค์ ์ฑ๋ฅ์ ๊ฐ๋ฅด๋ ์์๋ KV handoff์ ์ง๋ ฌํ, ์ ์ก, ์ค์น ๋น์ฉ๊ณผ decode affinity ์ ์ง์ ๋๋ค.
- ๋ฐ๋ผ์ disaggregated serving์ ๋จ์ํ ๋ฐฐ์น ๋ถ๋ฆฌ๊ฐ ์๋๋ผ router, KV fabric, scheduler, remote cache๋ฅผ ํจ๊ป ์ค๊ณํ๋ ๋ถ์ฐ ์ถ๋ก ๊ตฌ์กฐ์ ๋๋ค.
- ๋คํธ์ํฌ ์ง์ฐ์ด ํฐ ํ๊ฒฝ์์๋ local fast path, page ๋จ์ ์คํธ๋ฆฌ๋ฐ, sticky routing ๊ฐ์ ๋ณด์์ฑ ์ด ํ์ํฉ๋๋ค.