LLM vLLM 추론

vLLM: 고성능 LLM 추론 및 서빙 엔진

vLLM은 높은 처리량과 메모리 효율성을 제공하는 LLM 추론 및 서빙 엔진입니다. PagedAttention 기술로 최대 처리량을 달성하며, OpenAI 호환 API를 통해 쉽게 통합할 수 있습니다.

d

devfreshi85

Author

Published

Mar 19, 2026

개요

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
Google 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 리소스를 최대한 활용해야 하는 경우
  • 다양한 모델 지원: 특정 모델에 종속되지 않고 유연하게 운영
  • 멀티모달 애플리케이션: 비전, 오디오 모델까지 통합 서비스

참고 자료