개발 창고/AI

vLLM: 고성능 LLM 추론을 위한 오픈소스 라이브러리

로이제로 2025. 6. 13. 22:00
반응형

1. vLLM이란 무엇인가?

vLLM은 대규모 언어 모델(LLM)을 고속·고효율·저메모리 사용으로 로컬 또는 서버 환경에서 추론 및 배포할 수 있게 해주는 오픈소스 Python 라이브러리입니다.

  • Berkeley 대학교 Sky Computing Lab이 주도 개발했으며, 이후 커뮤니티 중심으로 발전함 (github.com)
  • 핵심 기술인 PagedAttention를 기반으로, KV 캐시(key/value cache)를 메모리 단편화 없이 관리하여 대기시간과 메모리 소모를 크게 줄입니다 (github.com)

2. 핵심 기능과 성능

  • PagedAttention: OS 가상 메모리 방식처럼 KV 캐시를 페이지 단위로 관리해 메모리 효율 극대화 (medium.com)
  • Continuous Batching: 여러 요청을 하나의 배치로 처리해 GPU 활용도와 처리량 향상 (github.com)
  • CUDA 최적화: FlashAttention, FlashInfer 등 고성능 커널 통합
  • 다양한 정량화 지원: INT4/8, FP8, GPTQ, AWQ 등으로 메모리·속도 균형 조절 가능 (github.com)
  • 분산 추론 지원: 텐서 병렬(TP), 파이프라인(PP) 병렬 및 멀티-GPU, CPU/TPU/NeurON/NVIDIA Blackwell 등 폭넓은 하드웨어 호환 (github.com)
  • OpenAI 호환 API 서버: FastAPI 기반, 기존 OpenAI 코드 대부분 재활용 가능

3. 빠른 시작 예시

환경 준비 및 설치

conda create -n vllm-env python=3.10 -y
conda activate vllm-env

pip install vllm

CUDA 버전에 맞는 wheel도 제공되며, GPU 환경에 맞춰 설치 가능합니다

간단한 추론 코드

from vllm import LLM

llm = LLM("facebook/opt-6.7b", tensor_parallel_size=1)

output = llm.generate("서울 날씨 알려줘.")
print(output.generations[0].text)

OpenAI 호환 서버 구동

vllm serve facebook/opt-13b \
  --tensor-parallel-size 2 \
  --pipeline-parallel-size 2

이제 http://localhost:8000/v1/chat/completions 엔드포인트로 OpenAI 스타일 API 호출 가능

BentoML 연동 예시

# 서비스 데모: JSON으로 ChatCompletion 호출 가능
# 요청 예:
# {"role":"user","content":"해적 말투로 인사해줘"}

RedHat 블로그에 여러 배포 연동 예시가 소개되어 있습니다


4. 최신 버전 정보 (2025년 6월 기준)

v1 (vLLM V1)

  • 재설계된 스케줄링 및 캐시 관리자로 코드 단순성과 성능 모두 향상 (openlm.ai)
  • CPU/스케줄러와 GPU 실행 간 근접한 병렬 처리 구조 도입
  • 토큰 입출력 자체를 통합 스케줄링하며 성능 저하 없이 prefix 캐싱 기본 활성화
  • GPU 분산 추론 구조 단순화 (비대칭 구조 해소 및 프로세스 간 통신 최적화)
  • torch.compile과 CUDA 그래프 조합을 통한 실행 최적화 (github.com, openlm.ai)

v0.9.0

  • PyTorch 2.7 및 CUDA 12.8 정식 지원
  • NVIDIA Blackwell(차세대 GPU) 최적화 커널 제공
  • TP/EP/PD(텐서·전문가·파이프라인 병렬) 개별 활성화 기능 추가 (github.com)

5. 성능 비교 사례

  • HuggingFace Transformers 대비 대용량 배치 오프라인 추론 속도가 최대 3~4배 빠르며 GPU 활용 효율도 높음
  • TensorRT‑LLM 대비 PagedAttention, continuous batching 덕분에 메모리·속도 면에서 경쟁력 있음 (inferless.com)

6. 장단점 요약표

항목 장점 고려 이슈
속도 & 효율 PagedAttention, continuous batching, GPU 최적화 초기 로딩 시간이 길 수 있음
배포 편의성 OpenAI 호환 API, 다양한 플랫폼 통합 지원 고급 기능(기능 호출 등) 사용 시 템플릿 설정 필요
확장성 TP/PP/EP 병렬, 분산 서버 환경 지원 멀티노드 설정은 복잡하고 문서화 필요
개발자 경험 Python API 기반 학습곡선 낮음, BentoML·KServe 등과 연동 가능 최신 v1 구조 학습 및 마이그레이션 과정 요구

7. 사용 팁

  1. 모델 로딩 시간 개선을 위해 torch.compile, 커널 프리빌드 활용
  2. 배치 크기와 토큰 길이에 따라 PagedAttention 성능 차이 있으니 기준 설정 필요
  3. prefix 캐싱 활성화: v1부터 기본으로 켜지며, 캐시 히트 확보 시 속도 획기적 상승
  4. 분산 추론: 단일 서버 환경에서는 TP/PP만으로도 활용 가능하며, 다노드 구성은 Docker + Ray 권장

8. 결론

vLLM은 LLM 추론과 배포를 고속, 고효율, 확장성 있게 처리하고 싶은 개발자나 기업에게 최적화된 도구입니다.

  • 로컬 실험부터 대규모 분산 서버까지 다양한 환경을 지원
  • PagedAttention, 배치 최적화, CUDA 통합 덕분에 GPU 자원 최대 활용 가능
  • Python API와 OpenAI 호환 서버로 즉각 배포 가능

대규모 LLM을 실제 서비스 목적로나 빠른 실험용으로 쓰고 싶다면 vLLM은 매우 유력한 선택입니다.

반응형