vLLM은 UC Berkeley Sky Computing Lab에서 시작된 LLM 추론·서빙 라이브러리다. PagedAttention으로 GPU 메모리 사용 효율을 극대화하고, OpenAI 호환 API와 200여 개 모델 아키텍처를 지원해 오픈소스 LLM 배포의 사실상 표준으로 자리잡았다. 2,000명 이상의 컨트리뷰터가 참여하는 가장 활발한 AI 오픈소스 프로젝트 중 하나다.
왜 vLLM인가
LLM 서빙의 핵심 병목은 KV 캐시(key-value cache) 메모리다. 기존 방식은 시퀀스 최대 길이를 기준으로 연속 메모리를 사전 할당해 실제 사용량과 무관하게 메모리를 낭비하고 배치 처리 효율이 낮았다.
vLLM은 OS의 가상 메모리에서 착안한 PagedAttention으로 이 문제를 해결한다. KV 캐시를 고정 크기 블록(page)으로 나눠 비연속 메모리에 저장하고 동적으로 할당·해제함으로써 메모리 낭비를 거의 없애고, 여러 시퀀스가 같은 KV 캐시 블록을 공유(prefix caching)할 수 있게 한다.
핵심 기능
성능 최적화
- PagedAttention: KV 캐시를 페이지 단위로 관리해 메모리 낭비 최소화
- 연속 배치(Continuous Batching): 진행 중인 배치에 새 요청을 즉시 삽입해 GPU 유휴 시간 제거
- 청크 프리필(Chunked Prefill): 긴 프롬프트의 프리필을 청크로 나눠 배치 효율 유지
- 프리픽스 캐싱: 동일 시스템 프롬프트를 공유하는 요청들이 KV 캐시를 재사용
- 추측 디코딩(Speculative Decoding): n-gram, EAGLE, DFlash 등으로 토큰 생성 속도 향상
양자화 지원
FP8, MXFP8/MXFP4, NVFP4, INT8, INT4, GPTQ, AWQ, GGUF, compressed-tensors, TorchAO 등 다양한 양자화 형식을 지원한다.
하드웨어 지원
| 하드웨어 | 지원 형태 |
|---|---|
| NVIDIA GPU | 공식 지원 |
| AMD GPU | 공식 지원 |
| x86 / ARM / PowerPC CPU | 공식 지원 |
| Google TPU | 플러그인 |
| Intel Gaudi | 플러그인 |
| Apple Silicon | 플러그인 |
| Huawei Ascend NPU | 플러그인 |
분산 추론
텐서 병렬, 파이프라인 병렬, 데이터 병렬, 전문가 병렬(MoE), 컨텍스트 병렬을 지원한다. Disaggregated prefill-decode 구조로 대규모 클러스터에서 효율적으로 스케일아웃된다.
지원 모델
Hugging Face의 200개 이상 모델 아키텍처를 지원한다.
| 유형 | 예시 |
|---|---|
| 디코더 전용 LLM | Llama, Qwen, Gemma |
| MoE LLM | Mixtral, DeepSeek-V3, Qwen-MoE |
| 하이브리드 (어텐션 + SSM) | Mamba, Qwen3.5 |
| 멀티모달 | LLaVA, Qwen-VL, Pixtral |
| 임베딩·검색 | E5-Mistral, GTE, ColBERT |
| 보상·분류 | Qwen-Math |
설치 및 빠른 시작
# uv (권장)
uv pip install vllm
# pip
pip install vllmOpenAI 호환 API 서버 실행:
vllm serve Qwen/Qwen3-8B --dtype auto --api-key token-abc123이후 OpenAI Python 클라이언트나 curl로 바로 연결할 수 있다.
라이선스
Apache 2.0. 핵심 기술 논문: Efficient Memory Management for Large Language Model Serving with PagedAttention (SOSP 2023).
관련 문서
- vllm-recipes — 하드웨어별·모델별 vLLM 실행 레시피 커뮤니티 모음
- tiny-vllm — C++와 CUDA로 LLM 추론 엔진을 직접 구현하는 교육 과정