vLLM은 고처리량·저지연 LLM 서빙을 위한 오픈소스 추론 엔진이다. PagedAttention 알고리즘으로 KV 캐시를 효율적으로 관리하여 기존 방식 대비 최대 24배 높은 처리량을 달성한다.
PagedAttention 핵심 개념
전통적 KV 캐시:
- 각 요청에 최대 시퀀스 길이만큼 메모리 사전 할당
- 메모리 낭비, 단편화 발생
PagedAttention:
- 메모리를 고정 크기 블록(페이지)으로 관리
- OS의 가상 메모리처럼 KV 캐시 블록 동적 할당
- 블록 공유로 병렬 샘플링 효율화
설치 및 서버 실행
bash
pip install vllm
# OpenAI 호환 서버 실행
python -m vllm.entrypoints.openai.api_server --model meta-llama/Llama-3.1-8B-Instruct --tensor-parallel-size 2 --max-model-len 8192 --gpu-memory-utilization 0.9 --host 0.0.0.0 --port 8000
python
from vllm import LLM, SamplingParams
llm = LLM(
model="meta-llama/Llama-3.1-8B-Instruct",
tensor_parallel_size=2,
max_model_len=4096,
)
sampling_params = SamplingParams(
temperature=0.7,
top_p=0.9,
max_tokens=512,
)
prompts = [
"머신러닝과 딥러닝의 차이를 설명해줘",
"Python에서 async/await를 언제 사용하나요?",
]
outputs = llm.generate(prompts, sampling_params)
for output in outputs:
print(output.outputs[0].text)
주요 기능
| 기능 | 설명 |
|---|
| Continuous Batching | 동적 배치로 GPU 활용률 극대화 |
| Speculative Decoding | 소형 드래프트 모델로 속도 향상 |
| Quantization | AWQ, GPTQ, SqueezeLLM 지원 |
| LoRA | 동적 LoRA 어댑터 적용 |
| Streaming | SSE 스트리밍 응답 |
| Multi-modal | LLaVA 등 비전-언어 모델 지원 |
관련 문서