์ฐธ๊ณ ์๋ฃ
1. ๊ธฐ์กด LLM ์ถ๋ก ๋ฐฉ์์ ํ๊ณ
๋๊ท๋ชจ ์ธ์ด ๋ชจ๋ธ(LLM)์ ์ฌ์ฉ์๊ฐ ์
๋ ฅํ ๋ฌธ์ฅ(ํ๋กฌํํธ)์ ๋ฐ์ ๋ค์ ๋จ์ด๋ ๋ฌธ์ฅ์ ์์ธกํ๋ฉฐ ์๋ต์ ์์ฑํ๋ ๋ฐฉ์์ผ๋ก ์๋ํจ
์ด๋ ๋งค๋ฒ ์์ธกํ ๋๋ง๋ค ์ด์ ์
๋ ฅ๊ณผ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ฑํ ์ค๊ฐ ๋ฐ์ดํฐ๋ฅผ KV ์บ์๋ผ๋ ํํ๋ก GPU ๋ฉ๋ชจ๋ฆฌ์ ์ฐ์์ ์ผ๋ก ๋ณด๊ดํ๋ ค ํ๊ธฐ ๋๋ฌธ์ ๋ง๋ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋ชจํจ
์ด๋ ๋์๊ด์์ ํ ๊ถ์ ์ฑ ์ ์ฐพ์ผ๋ ค ์ ์ฒด ์ฑ ์ฅ์ ํต์งธ๋ก ์์ฝํ๋ ๊ฒ๊ณผ ๋น์ทํด, ์ค์ ์ฌ์ฉํ๋ ๊ณต๊ฐ๋ณด๋ค ๋ญ๋น๋๋ ๊ณต๊ฐ์ด ํจ์ฌ ๋ง์์ ธ ๋ฉ๋ชจ๋ฆฌ ๋จํธํ๊ฐ ์ฌ๊ฐํด์ง
๋ํ, ์์ฒญ์ด ์ฌ๋ฌ ๊ฐ ์์ ๋ ์ด๋ฅผ ํ๋์ ๋ฌถ์(๋ฐฐ์น)์ผ๋ก ์ฒ๋ฆฌํ๋๋ฐ, ์ด ๋ฐฐ์น๋ ๊ณ ์ ์ ์ด๋ผ ๊ฐ์ฅ ๊ธด ์์ฒญ์ด ๋๋์ผ ๋ค๋ฅธ ์์ฒญ์ด ๋ค์ด๊ฐ ์ ์์ด ์๋ต์ด ๋๋ ค์ง๊ณ ์ฒ๋ฆฌ๋๋ ๊ฐ์ํจ
- ๋์ผํ ํ๋กฌํํธ๋ฅผ ๊ฐ๋ ์์ฒญ์ด ์ฌ๋ฌ ๊ฐ์ผ ๊ฒฝ์ฐ KV ์บ์๊ฐ ์ค๋ณต๋์ด ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น ์ฆ๊ฐ
- GPU ๋ฉ๋ชจ๋ฆฌ์ 60-80%๊ฐ ์ฌ์ค์ ์ ํด ์ํ๋ก ๋จ์, ์์์ด ์ ๋๋ก ํ์ฉ๋์ง ์์
- ์งง์ ์์ฒญ๋ง์ ๊ธด ์์ฒญ๊ณผ ํจ๊ป ์ฒ๋ฆฌ๋๋ฉด์ ๋ถํ์ํ ๋๊ธฐ ์๊ฐ ๋ฐ์
- ๋น ์์น ๋ฐ ๋ณ๋ ฌ ์ํ๋ง ๊ณผ์ ์์๋ ์ค๋ณต KV ์บ์๊ฐ ์์ฑ๋์ด ๋ฉ๋ชจ๋ฆฌ ์๋ชจ ์ฆ๊ฐ
2. vLLM์ ๋ชฉํ์ ๋ฑ์ฅ ๋ฐฐ๊ฒฝ
UC ๋ฒํด๋ฆฌ์ Sky Computing Lab์ ๊ธฐ์กด์ LLM ์ถ๋ก ๋ฐฉ์์์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๊ฐ ๊ฐ์ฅ ํฐ ๋ณ๋ชฉ์ด๋ผ๋ ์ ์ ๋ฐ๊ฒฌํจ
์ด์ ์ด์์ฒด์ ์์ ์ฌ์ฉ๋๋ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ฐ๋
์ ์ดํ
์
๋ฉ์ปค๋์ฆ์ ์ ์ฉํ PagedAttention์ด๋ผ๋ ์์ด๋์ด๋ฅผ ์ ์ํจ
vLLM์ ์ด PagedAttention ๊ธฐ์ ์ ํ์ฉํด GPU ๋ฉ๋ชจ๋ฆฌ์ ๋ญ๋น๋ฅผ ๊ฑฐ์ ์ ๊ฑฐํ๊ณ , ์ฐ์์ ์ผ๋ก ๋ฐฐ์น๋ฅผ ์ฒ๋ฆฌํ์ฌ GPU ์์์ ์ต๋ํ ํ์ฉํ๋ ๊ฒ์ ๋ชฉํ๋ก ๋ฑ์ฅํจ
๋ชจ๋ธ ๊ตฌ์กฐ๋ ๊ฐ์ค์น ์์ ์์ด ๊ธฐ์กด Hugging Face ์ถ๋ก ๋๋น ์ต๋ 24๋ฐฐ ๋์ ์ฒ๋ฆฌ๋์ ๋ณด์ฌ, ๋น ๋ฅด๊ฒ LLM ์๋น์ค์ ํ์ค์ผ๋ก ์๋ฆฌ ์ก๊ณ ์์
- ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์์ ๋จ์(ํ์ด์ง)๋ก ๋๋์ด ํ์ํ ๋๋ง ํ ๋นํ๋ ๋ฐฉ์
- ์์ฒญ์ด ๋ค์ด์ค๋ ์ฆ์ ์ฒ๋ฆฌํ ์ ์๋๋ก ๋์ ๋ฐฐ์นญ์ ์ง์ํ์ฌ GPU ํ์ฉ๋๋ฅผ ๊ทน๋ํ
- vLLM ๋ธ๋ก๊ทธ์ ๋ฐ๋ฅด๋ฉด, NVIDIA A100 GPU ํ๋๋ก LLaMA-13B ๋ชจ๋ธ์ ์ถ๋ก ์๋๋ฅผ 24๋ฐฐ ์ฆ๊ฐ์ํด
3. PagedAttention ํต์ฌ ๊ฐ๋
PagedAttention์ KV ์บ์๋ฅผ ์ฐ์๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์๋ ์์ ๊ณ ์ ํฌ๊ธฐ ๋ธ๋ก ๋จ์๋ก ๋๋์ด ๋น์ฐ์์ ์ผ๋ก ์ ์ฅํ๊ณ , ๊ฐ ๋ธ๋ก์ ํ์ด์ง ํ
์ด๋ธ๋ก ๊ด๋ฆฌํ๋ ๋ฐฉ์์ ์ฌ์ฉํจ
์ด๋ ์ฑ
์ฅ์ ์์ ์๋์ผ๋ก ๋๋ ํ์ํ ์ฑ
๋ง ์ ํํ ๊บผ๋ด ์ฌ์ฉํ๋ ๋ฐฉ์๊ณผ ์ ์ฌํ๋ฉฐ, ์ด๋ก ์ธํด KV ์บ์์ ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๊ฐ 4% ๋ฏธ๋ง์ผ๋ก ํฌ๊ฒ ์ค์ด๋ฆ
๋์ผํ ํ๋กฌํํธ๋ฅผ ๊ณต์ ํ๋ ์ฌ๋ฌ ์์ฒญ์ด ์๋ค๋ฉด ๊ฐ์ ๋ธ๋ก์ ๊ณต์ ํ์ฌ, ๋ฉ๋ชจ๋ฆฌ ์๋ชจ๋์ ์ ๋ฐ ์ด์ ์ ์ฝํ๋ Copy-on-Write ๊ธฐ๋ฒ์ ์ ์ฉํจ
- ๊ฐ ์ํ์ค๋ ์ค์ ํ์ํ ๋งํผ์ ๋ธ๋ก๋ง ํ ๋น๋ฐ์ ๋ฉ๋ชจ๋ฆฌ ํจ์จ ๊ทน๋ํ
- ๋ณ๋ ฌ ์ํ๋ง์ด๋ ๋น ์์น ์์๋ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ 55% ์ค์ด๊ณ ์ฒ๋ฆฌ๋์ 2๋ฐฐ ์ด์ ์ฆ๊ฐ
4. ์ํคํ ์ฒ ๋ฐ ์๋ ๋ฐฉ์
vLLM์ ํต์ฌ ์์ ์ค ํ๋์ธ ์ฐ์ ๋ฐฐ์นญ ์ค์ผ์ค๋ฌ๋ ์คํ ์ค์ธ ๋ฐฐ์น์์ ๋น ์ฌ๋กฏ์ด ๋ฐ์ํ๋ฉด ์ค์๊ฐ์ผ๋ก ์๋ก์ด ์์ฒญ์ ์ถ๊ฐํด GPU ์ ํด ์๊ฐ์ ์์ ๊ณ ํจ์จ์ฑ์ ๋์
PagedAttention์ ๊ธฐ๋ฐ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ๋ธ๋ก์ ํจ์จ์ ์ผ๋ก ์ฌํ์ฉํด ๋จํธํ๋ฅผ ๋ฐฉ์งํ๋ฉฐ, FlashAttentionยทCUDA GraphยทFlashInfer ๋ฑ์ ์ต์ ๊ธฐ์ ์ ๊ฒฐํฉํด ์ฑ๋ฅ์ ๊ทน๋ํํจ
๊ฐ๋ฐ์๋ pip install vllm
ํ ์ค๋ก ์ฝ๊ฒ vLLM์ ์ค์นํ๊ณ ๋ฐ๋ก ํ์ฉํ ์ ์์ผ๋ฉฐ, OpenAI์ ํธํ๋๋ REST API๋ฅผ ๊ธฐ๋ณธ ์ ๊ณตํด ๊ธฐ์กด ์๋น์ค์ ๋น ๋ฅด๊ฒ ํตํฉ ๊ฐ๋ฅํจ
- ๋น ์ฌ๋กฏ์ ์ฆ์ ์ฑ์ฐ๋ ์ฐ์ ๋ฐฐ์นญ์ผ๋ก ์ง์ฐ ์ต์ํ
- FlashAttention ์ ์ฉ์ผ๋ก ์ดํ ์ ์ฐ์ฐ ์๋๋ฅผ ํ๊ธฐ์ ์ผ๋ก ๋์
- CLI๋ก ๊ฐ๋จํ OpenAI ํธํ ์๋ฒ๋ฅผ ์์ ๊ฐ๋ฅ:
python -m vllm.entrypoints.openai.api_server
5. ์ฃผ์ ์ฑ๋ฅ ๋น๊ต
- Hugging Face Transformers์ ๋น๊ตํด ์ฒ๋ฆฌ๋์ ์ต์ 10๋ฐฐ ์ด์ ๋๊ณ , ์ง์ฐ๋ ํ์ ํ ๋ฎ์
- Hugging Face TGI ๋๋น ์ฒ๋ฆฌ๋์ 2-3๋ฐฐ ๋ฐ์ด๋จ
- DeepSpeed-FastGen์ ๊ทน๋จ์ ์ธ ์ผ์ด์ค์์๋ง ์ฐ์ธํ๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก vLLM์ด ๋๊ธ ์ด์์ ์ฑ๋ฅ ์ ๊ณต
- NVIDIA์ FasterTransformer๋ ๋จ์ผ ์์ฒญ ์ฒ๋ฆฌ ์๋๋ ๋น ๋ฅด๋ ๋ค์ค ์์ฒญ ์ฒ๋ฆฌ ์ vLLM์ด 2-4๋ฐฐ ์ฐ์ธ
6. ์ฑํ ์ฌ๋ก์ ์ํ๊ณ
์ค์ ๋ก LMSYS์ Vicuna ์ฑ๋ด๊ณผ Chatbot Arena๋ Hugging Face์์ vLLM์ผ๋ก ์ ํํด ๋์ผ ํ๋์จ์ด๋ก 5๋ฐฐ ์ด์ ๋ง์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ฉด์ ์ง์ฐ๋ ๋ํญ ๊ฐ์์ํด
์๋ง์กด Rufus, ๋งํฌ๋์ธ์ AI ์ถ์ฒ ๊ธฐ๋ฅ, ๋ ๋ํ์ AI ์๋ฒ ๋ฑ ๋ค์ํ ๊ธฐ์
์ ํ๋ก๋์
์๋น์ค์์ vLLM์ ์ฌ์ฉํ๊ณ ์์
LangChain, FastChat, LlamaIndex ๋ฑ ์ธ๊ธฐ ํ๋ ์์ํฌ์๋ ํตํฉ๋์ด ๊ฐ๋ฐ์ ์ ๊ทผ์ฑ์ด ๋์ฑ ๋์์ง
- ๊ธฐ์ ์๋น์ค ๋ฐ ์ฐ๊ตฌ ํ๊ฒฝ ๋ชจ๋์์ ํญ๋์ ์ฌ์ฉ
- GPU ์ฌ์ฉ ํจ์จ ์ฆ๊ฐ๋ก ์ด์ ๋น์ฉ์ด ์ต๋ 50% ์ ๊ฐ๋ ์ฌ๋ก ๋ณด๊ณ
- ํ๋ฐํ ์คํ์์ค ์ปค๋ฎค๋ํฐ๋ฅผ ํตํด ์ ์ํ ์ง์๊ณผ ๋ฐ์ ์ด๋ฃจ์ด์ง
7. ์คํ์์ค ์ง์ ๋ฒ์
vLLM์ Apache 2.0 ๋ผ์ด์ ์ค ์๋ ๊ณต๊ฐ๋์ด ๊ธฐ์
๊ณผ ๊ฐ์ธ์ด ์์ ๋กญ๊ฒ ์ฌ์ฉํ ์ ์์
LLaMA, Mistral, Falcon, StarCoder ๋ฑ ์ธ๊ธฐ ์๋ ๋ชจ๋ธ๋ค์ ๋ณ๋์ ์์ ์์ด ์ฆ์ ์คํํ ์ ์์ผ๋ฉฐ, GPU๋ฟ๋ง ์๋๋ผ AMD ROCm, TPU, AWS Inferentia2 ๋ฑ ๋ค์ํ ํ๋์จ์ด๋ ์ง์ํจ
- Hugging Face ๋ชจ๋ธ์ URL๋ก ์ฝ๊ฒ ๋ถ๋ฌ์ฌ ์ ์์
- GPTQยทAWQ์ ๊ฐ์ ์์ํ ๊ธฐ๋ฒ์ ์ง์ํด ์์ ํจ์จ์ฑ ๋์ฑ ๋์
- ์ต์ ๋์ฝ๋ฉ ๊ธฐ๋ฒ์ธ Speculative Decoding ๋ฐ Chunked Prefill๋ ์ ๊ณต๋จ
8. ์ต์ ์ฐ๊ตฌ ๋ํฅ
ACM SOSP 2023 ๋
ผ๋ฌธ์์๋ PagedAttention์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๋ฅผ ๊ฑฐ์ ์ ๊ฑฐํ๊ณ ์ฒ๋ฆฌ๋์ 2-4๋ฐฐ ๋์ผ ์ ์์์ ์
์ฆํจ
๊ฒฝ์์์ธ DeepSpeed, Hugging Face, NVIDIA ์ญ์ ์ ์ฌํ ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ ๋ฐฉ์์ ๋์
ํ๋ฉฐ vLLM๊ณผ ์ฑ๋ฅ ๊ฒฝ์ ์ค์ด๋ฉฐ, Ray ํ๋ก์ ํธ๋ vLLM์ ํตํด ์ฒ๋ฆฌ๋์ด ๊ธฐ์กด ๋๋น 23๋ฐฐ ์ฆ๊ฐํ๋ค๊ณ ๋ณด๊ณ ํจ
vLLM ๋ํ FlashAttention 2, Speculative Decoding, ๋ฉํฐ๋ชจ๋ฌ ์ ๋ ฅ ์ง์ ๋ฑ์ ์ถ๊ฐํ๋ฉฐ ๋น ๋ฅด๊ฒ ๋ฐ์ ํ๊ณ ์์
9. ํฅํ ๋ก๋๋งต๊ณผ ๊ณผ์
ํ์ฌ๋ GPT-4๊ธ ์ด๊ฑฐ๋ ๋ชจ๋ธ์ ํจ์จ์ ์ผ๋ก ์คํํ๊ธฐ ์ํ ์๋ก์ด ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ฐ๊ตฌ ์ค์ด๋ฉฐ, ๊ธด ์
๋ ฅ ๋งฅ๋ฝ ์ฒ๋ฆฌ ์ฑ๋ฅ ๊ฐ์ ์ ๋ชฉํ๋ก ํจ
์์
ํนํ ๊ธฐ๋ฅ(MoE ๋ชจ๋ธ, ์ฝ๋ ์์ฑ ์ง์, ์์ด์ ํธ ํตํฉ ๋ฑ) ํ๋์ ๋ถ์ฐ ํด๋ฌ์คํฐ ์ถ๋ก ํจ์จ ๊ฐ์ ์ ๊ณํ ์ค์
์ถ๋ก ๋ฟ ์๋๋ผ ํ์ต ๊ณผ์ ๊น์ง ์ง์ํ๋ ์ข
ํฉ ์์ง์ผ๋ก ๋ฐ์ ํ๋ ๊ฒ์ด ์ต์ข
๋ชฉํ๋ก ์ค์ ๋จ