개요
vLLM은 높은 처리량(Throughput)과 메모리 효율성을 제공하는 LLM 추론 및 서빙 엔진입니다. UC Berkeley의 Sky Computing Lab에서 개발되었으며, 현재 커뮤니티 주도 프로젝트로 발전했습니다.
vLLM의 탄생 배경과 위상
개발진과 커뮤니티
vLLM은 UC 버클리 대학교의 ‘스카이 컴퓨팅 랩(Sky Computing Lab)’에서 개발한 프로젝트로, 현재 GitHub 스타 수가 7만 개를 넘어서며 AI 생태계에서 엄청난 파급력을 보여주고 있습니다.
특히 주목할 점은 핵심 개발자가 한국인인 권호석 박사라는 것입니다. 또한 엔비디아(NVIDIA)와 AMD 같은 글로벌 빅테크 기업의 엔지니어들이 직접 코드 기여에 참여할 만큼 기술력을 인정받고 있습니다.
범용성
최신 모델인 Gemma 2, Llama 3.1/3.2, Qwen 3, DeepSeek V3, Mistral 등을 포함해 허깅페이스에 등록된 대부분의 오픈소스 모델을 완벽하게 지원합니다. 이는 개발자가 특정 모델에 종속되지 않고 자유롭게 모델을 선택할 수 있음을 의미합니다.
핵심 특징
Easy (쉬운 사용)
| 특징 | 설명 |
|---|---|
| 광범위한 모델 지원 | 다양한 오픈소스 모델을 모든 하드웨어에서 배포 |
| OpenAI 호환 API | 드롭인 방식으로 즉시 통합 가능 |
| HuggingFace 통합 | 인기 있는 HuggingFace 모델과 원활한 연동 |
| 스트리밍 출력 | 실시간 응답 스트리밍 지원 |
| 다양한 디코딩 알고리즘 | Parallel Sampling, Beam Search 등 |
Fast (빠른 성능)
vLLM의 핵심 기술들:
| 기술 | 설명 |
|---|---|
| PagedAttention | Attention Key/Value 메모리를 효율적으로 관리 |
| Continuous Batching | 들어오는 요청을 지속적으로 배칭 |
| CUDA/HIP Graph | 빠른 모델 실행 |
| FlashAttention | 최적화된 CUDA 커널 통합 (FlashInfer 포함) |
| Speculative Decoding | 추측 디코딩으로 속도 향상 |
| Chunked Prefill | 청크 단위 프리필 |
Cost Efficient (비용 효율)
- 하드웨어 효율성을 극대화하여 추론 비용 절감
- 고성능 LLM을 저렴하고 접근 가능하게 제공
Flexible (유연성)
| 기능 | 설명 |
|---|---|
| 분산 추론 | Tensor, Pipeline, Data, Expert Parallelism 지원 |
| Multi-LoRA | 여러 LoRA 어댑터 동시 지원 |
| Prefix Caching | 자동 프리픽스 캐싱 |
| Structured Outputs | 구조화된 출력 지원 |
| Tool Calling | 도구 호출 기능 |
| 멀티모달 | Vision-Language, Audio-Language 모델 지원 |
혁신적인 핵심 기술 상세 분석
1. PagedAttention (페이지 어텐션)
LLM이 답변을 생성할 때 이전에 계산한 문맥을 저장하는 KV 캐시(Key-Value Cache) 메모리 관리 문제를 획기적으로 해결했습니다.
기존 방식의 문제
답변이 얼마나 길어질지 모르기 때문에 시스템은 메모리 공간을 미리 크게 할당(Static Allocation)합니다. 만약 모델이 짧게 대답하면 남은 공간은 그대로 낭비되며, 이 낭비율이 60~80%에 달했습니다.
vLLM의 해결책
운영체제의 가상 메모리 관리 방식인 ‘페이징(Paging)’ 기법을 도입했습니다. 메모리를 아주 작은 ‘블록(Page)’ 단위로 나누고, 답변이 생성되는 순간에만 필요한 블록을 동적으로 할당합니다.
블록 테이블
흩어져 있는 메모리 블록들의 위치를 기억하는 테이블을 활용해, 테트리스처럼 빈 공간을 빈틈없이 채웁니다. 이를 통해:
- 메모리 낭비를 4% 미만으로 감소
- 처리량을 2~3배 향상
2. Continuous Batching (컨티뉴어스 배칭)
여러 사용자의 요청을 동시에 처리하는 스케줄링 기술입니다.
기존 방식의 문제
요청이 들어온 순서대로 하나씩 처리하거나, 여러 요청을 묶어서 한꺼번에 처리(Static Batching)하느라 대기 시간이 길었습니다.
vLLM의 해결책
PagedAttention으로 확보된 넉넉한 메모리 공간을 활용하여, 새로운 요청이 들어오는 즉시 유휴 공간에 할당해 병렬로 처리합니다. GPU의 연산 자원을 쉬지 않게 지져짜내어 전체적인 추론 속도를 극대화합니다.
3. Speculative Decoding (추측 디코딩)
vLLM은 다양한 추측 디코딩 방식을 지원합니다:
| 방식 | 설명 |
|---|---|
| Draft Models | 작은 모델로 후보 생성 후 검증 |
| EAGLE Draft Models | EAGLE 아키텍처 기반 초안 모델 |
| MLP Draft Models | MLP 기반 초안 모델 |
| MTP (Multi-Token Prediction) | 다중 토큰 예측 |
| N-Gram Speculation | N-그램 기반 추측 |
| Suffix Decoding | 접미사 기반 디코딩 |
Ollama와의 성능 비교
Red Hat의 보고서와 실제 테스트를 통해 성능 차이를 입증했습니다.
단위 요청 (Single Request)
단 한 개의 질문만 던질 때는 vLLM의 복잡한 알고리즘으로 인한 오버헤드 때문에 Ollama가 미세하게 더 빠를 수 있습니다.
다수 요청 (Multi-Request)
요청 수가 늘어날수록 성능 격차가 벌어집니다:
| 지표 | 설명 |
|---|---|
| TPS (Tokens Per Second) | 초당 토큰 처리량이 Ollama 대비 압도적으로 높음 |
| 지연 시간 (Latency) | 다수의 요청이 몰려도 vLLM이 훨씬 더 빠르게 답변 출력 |
사용자별 활용 가이드
기업 및 개발자
실제 서비스(Production) 환경에서 많은 사용자의 요청을 처리해야 한다면 vLLM이 필수적입니다. 높은 처리량과 메모리 효율성으로 서비스 운영 비용을 크게 절감할 수 있습니다.
개인 사용자
단순히 챗봇과 대화하는 수준을 넘어, 여러 개의 AI 에이전트를 동시에 돌리거나 복잡한 작업을 병렬로 시키고자 할 때 유용합니다.
사용 편의성
Ollama처럼 설치가 간편한 GUI는 부족하지만, 리눅스 환경에서 가이드 문서를 따라가면 충분히 설치 가능하며 성능 면에서 그만한 가치가 있습니다.
지원 하드웨어
vLLM은 다양한 하드웨어 플랫폼을 지원합니다:
| 하드웨어 | 설명 |
|---|---|
| NVIDIA GPUs | CUDA 지원 |
| AMD GPUs | ROCm 지원 |
| Intel CPUs, GPUs | XPU 지원, Gaudi® 가속기 포함 |
| AWS | Trainium, Inferentia |
| TPU | |
| IBM | Power CPUs, Spyre |
| Huawei | Ascend |
| Arm CPUs | Arm 아키텍처 지원 |
설치 방법
기본 설치
# uv를 사용한 설치 (권장)
uv pip install vllm
# 또는 pip 사용
pip install vllm
CUDA 12.x 버전 (12.0 - 12.9)과 호환됩니다.
CPU 전용 설치
pip install vllm --extra-index-url https://download.pytorch.org/whl/cpu
TPU 설치
pip install vllm[tpu]
빠른 시작
OpenAI 호환 API 서버 실행
vllm serve meta-llama/Llama-3.2-3B-Instruct
Python에서 사용
from vllm import LLM, SamplingParams
# 모델 로드
llm = LLM(model="meta-llama/Llama-3.2-3B-Instruct")
# 샘플링 파라미터 설정
sampling_params = SamplingParams(temperature=0.7, top_p=0.95)
# 추론 실행
outputs = llm.generate(["안녕하세요, vLLM에 대해 설명해주세요."], sampling_params)
for output in outputs:
print(output.outputs[0].text)
OpenAI 클라이언트로 사용
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:8000/v1",
api_key="dummy"
)
response = client.chat.completions.create(
model="meta-llama/Llama-3.2-3B-Instruct",
messages=[
{"role": "user", "content": "안녕하세요!"}
]
)
print(response.choices[0].message.content)
주요 기능
양자화 (Quantization)
다양한 양자화 방식을 지원하여 메모리 사용량을 줄이고 추론 속도를 높입니다:
| 양자화 방식 | 설명 |
|---|---|
| GPTQ | GPTQ 양자화 지원 |
| AWQ | AWQ 양자화 지원 |
| INT4, INT8 | 정수 양자화 |
| FP8 | 8비트 부동소수점 |
| GGUF | GGUF 포맷 지원 |
| BitsAndBytes | 4bit/8bit 양자화 |
| GGUF | llama.cpp 호환 포맷 |
| NVFP4, MXFP4 | 4비트 부동소수점 |
| Quantized KV Cache | KV 캐시 양자화 |
분산 추론
| 병렬 처리 방식 | 설명 |
|---|---|
| Tensor Parallelism | 텐서 병렬 처리 |
| Pipeline Parallelism | 파이프라인 병렬 처리 |
| Data Parallelism | 데이터 병렬 처리 |
| Expert Parallelism | MoE 모델의 전문가 병렬 처리 |
멀티모달 지원
vLLM은 다양한 멀티모달 모델을 지원합니다:
- Vision-Language: LLaVA, Qwen-VL, InternVL, Pixtral 등
- Audio-Language: Qwen-Audio, Whisper 등
- 비디오: LLaVA-Next-Video 등
기타 기능
| 기능 | 설명 |
|---|---|
| LoRA 어댑터 | Multi-LoRA 지원, 양자화와 함께 사용 가능 |
| Prefix Caching | 자동 프리픽스 캐싱 |
| Structured Outputs | JSON, XML 등 구조화된 출력 지원 |
| Tool Calling | 도구 호출 기능 (Function Calling) |
| Reasoning Outputs | 추론 과정 출력 지원 |
| Sleep Mode | 메모리 절약을 위한 슬립 모드 |
통합 및 배포
프레임워크 통합
vLLM은 다양한 프레임워크와 통합할 수 있습니다:
| 프레임워크 | 설명 |
|---|---|
| LangChain | LangChain 통합 |
| LlamaIndex | LlamaIndex 통합 |
| Claude Code | Claude Code와 통합 |
| LiteLLM | LiteLLM 프록시 |
| Haystack | Haystack 통합 |
배포 옵션
| 배포 방식 | 설명 |
|---|---|
| Docker | Docker 컨테이너로 배포 |
| Kubernetes | K8s, Helm Charts 지원 |
| Ray Serve | Ray 기반 분산 서빙 |
| Modal | Modal 클라우드 배포 |
| RunPod | RunPod 배포 |
| SkyPilot | SkyPilot 배포 |
| NVIDIA Triton | Triton Inference Server |
CLI 명령어
# 서버 실행
vllm serve <model_name>
# 채팅
vllm chat <model_name>
# 완성
vllm complete <model_name>
# 배치 실행
vllm run-batch <input_file>
# 벤치마크
vllm bench serve <model_name>
vllm bench latency <model_name>
vllm bench throughput <model_name>
마치며
vLLM은 단순한 추론 엔진을 넘어, 프로덕션 환경에서 LLM을 서빙하기 위한 필수 도구로 자리잡고 있습니다. PagedAttention과 Continuous Batching이라는 혁신적인 기술로 메모리 효율성과 처리량을 동시에 확보했으며, OpenAI 호환 API로 기존 시스템과의 통합도 간편합니다.
특히 다음과 같은 상황에서 vLLM을 강력히 추천합니다:
- 프로덕션 서비스: 동시 접속자가 많은 AI 서비스 운영
- 비용 최적화: GPU 리소스를 최대한 활용해야 하는 경우
- 다양한 모델 지원: 특정 모델에 종속되지 않고 유연하게 운영
- 멀티모달 애플리케이션: 비전, 오디오 모델까지 통합 서비스