์ฐธ๊ณ  ์ž๋ฃŒ


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 ๋ชจ๋ธ, ์ฝ”๋“œ ์ƒ์„ฑ ์ง€์›, ์—์ด์ „ํŠธ ํ†ตํ•ฉ ๋“ฑ) ํ™•๋Œ€์™€ ๋ถ„์‚ฐ ํด๋Ÿฌ์Šคํ„ฐ ์ถ”๋ก  ํšจ์œจ ๊ฐœ์„ ์„ ๊ณ„ํš ์ค‘์ž„
์ถ”๋ก ๋ฟ ์•„๋‹ˆ๋ผ ํ•™์Šต ๊ณผ์ •๊นŒ์ง€ ์ง€์›ํ•˜๋Š” ์ข…ํ•ฉ ์—”์ง„์œผ๋กœ ๋ฐœ์ „ํ•˜๋Š” ๊ฒƒ์ด ์ตœ์ข… ๋ชฉํ‘œ๋กœ ์„ค์ •๋จ