VLLM

From HPCWIKI
Jump to navigation Jump to search

vLLM

Template:Status

Template:TOC

Overview

vLLM은 UC Berkeley에서 개발한 고성능 LLM serving 프레임워크. PagedAttention 기술을 기반으로 한 메모리 효율적인 KV 캐시 관리로 높은 처리량과 낮은 지연시간을 제공함.

Summary

  • * 무엇인가? LLM 추론 서빙 프레임워크. PagedAttention 기반 메모리 최적화
  • * 왜 필요한가? LLM 배포 시 GPU 메모리 효율성이 핵심. vLLM이 SOTA 성능
  • * 언제 사용하는가? OpenAI 호환 API로 LLM 서빙, 배치 추론, 실시간 채팅

---

Purpose

이 문서가 존재하는 이유

  • Goal: vLLM의 개념, 사용법, 설정 가이드 제공
  • Scope: 기본 개념, 설치/설정, 사용 예제, 모범 사례
  • Non-goals: 고급 커스터마이징, 내부 소스 코드 분석

---

Key Concepts

Template:KeyConcepts

---

Architecture

vLLM은 PagedAttention(VMem 기반 메모리 관리) + Continuous Batching(토큰 단위 스케줄링) + Tensor Parallelism(모델 분할) 3가지 핵심 기술로 구성됨.

---

Workflow

1. 1. vLLM 설치(pip install vllm)

2. 2. 모델 로드(vllm.EntryPoint.from_pretrained)

3. 3. LLM 인스턴스 생성(배치 크기, GPU 수 설정)

4. 4. OpenAI 호환 API 서버 실행(포트 8000)

5. 5. clients에서 OpenAI API로 요청

6. 6. 모니터링(vllm.metrics)으로 성능 확인

---

Configuration

# vLLM 설치
pip install vllm

# 모델 서빙 시작 (예: Llama-3-8B)
vllm serve meta-llama/Llama-3-8B-Instruct \
  --tensor-parallel-size 2 \
  --max-model-len 8192 \
  --gpu-memory-utilization 0.9

# OpenAI 호환 API로 호출
python -c "
from openai import OpenAI
client = OpenAI(base_url='http://localhost:8000/v1', api_key='n/a')
response = client.chat.completions.create(
    model='meta-llama/Llama-3-8B-Instruct',
    messages=[{'role': 'user', 'content': 'Hello!'}]
)
print(response.choices[0].message.content)
"

---

Best Practices

  • GPU 메모리 활용률 0.85-0.95로 설정
  • 배치 크기(auto)로 동적 조정
  • CUDA Graph로 추론 속도 최적화
  • Multi-LoRA로 여러 파인튜닝 모델 동시 서빙
  • Serving 시 --max-num-seqs로 동시 요청 수 제한

---

Limitations

  • Hugging Face 모델만 지원(일부 커스텀 아키텍처 불가)
  • 양자화(GGUF) 미지원 — FP16/BF16만
  • Fine-tuned 모델 서빙 시 모델 레지스트리 필요

---

References

---

Related Pages