Production stack — vLLM 통합
Production stack — vLLM 통합
Kubernetes에 vLLM을 배포하는 것은 머신러닝 모델을 서빙하는 확장 가능하고 효율적인 방법입니다. 이 가이드는 vLLM production stack을 사용해 vLLM을 배포하는 과정을 안내합니다. Berkeley-UChicago 협력을 통해 탄생한 vLLM production stack은 vLLM 프로젝트 산하의 공식 출시된 프로덕션 최적화 코드베이스로, LLM 배포를 위해 설계됐습니다:
- 업스트림 vLLM 호환성 — 업스트림 vLLM을 수정하지 않고 감싸기만 합니다.
- 사용 편의성 — Helm 차트로 간단히 배포하고, Grafana 대시보드로 관찰 가능성(observability)을 제공합니다.
- 고성능 — 멀티모델 지원, 모델 인지·프리픽스 인지 라우팅, 빠른 vLLM 부트스트래핑, 그리고
--kv-offloading-backend lmcache로 vLLM에 연결되는 LMCache를 통한 KV 캐시 오프로딩 등 LLM 워크로드에 최적화돼 있습니다 (자세한 내용은 LMCache 예제와 docs.lmcache.ai 참고).
Kubernetes가 처음이라도 걱정 마세요. vLLM production stack repo에는 모든 것을 설정하는 단계별 가이드와 4분 만에 시작하는 짧은 영상이 있습니다!
출처: 문서
본문
사전 준비 (Pre-requisite)
GPU가 있는 실행 중인 Kubernetes 환경이 있는지 확인합니다 (Bare-metal GPU 머신에 Kubernetes 환경을 설치하려면 이 튜토리얼을 따라할 수 있습니다).
vLLM production stack으로 배포 (Deployment using vLLM production stack)
표준 vLLM production stack은 Helm 차트로 설치됩니다. GPU 서버에 Helm을 설치하려면 이 bash 스크립트를 실행하면 됩니다.
데스크톱에서 다음 명령을 실행해 vLLM production stack을 설치합니다:
sudo helm repo add vllm https://vllm-project.github.io/production-stack
sudo helm install vllm vllm/vllm-stack -f tutorials/assets/values-01-minimal-example.yaml
이렇게 하면 작은 LLM(Facebook opt-125M 모델)을 실행하는 vllm이라는 이름의 vLLM-production-stack 기반 배포가 생성됩니다.
설치 검증 (Validate Installation)
배포 상태를 모니터링합니다:
sudo kubectl get pods
vllm 배포의 파드가 Running 상태로 전환되는 것을 볼 수 있습니다.
NAME READY STATUS RESTARTS AGE
vllm-deployment-router-859d8fb668-2x2b7 1/1 Running 0 2m38s
vllm-opt125m-deployment-vllm-84dfc9bd7-vb9bs 1/1 Running 0 2m38s
참고: 컨테이너가 Docker 이미지와 LLM 가중치를 다운로드하는 데 시간이 걸릴 수 있습니다.
스택에 쿼리 보내기 (Send a Query to the Stack)
vllm-router-service 포트를 호스트 머신으로 포워딩합니다:
sudo kubectl port-forward svc/vllm-router-service 30080:80
그런 다음 OpenAI 호환 API로 쿼리를 보내 사용 가능한 모델을 확인할 수 있습니다:
curl -o- http://localhost:30080/v1/models
출력:
{
"object": "list",
"data": [
{
"id": "facebook/opt-125m",
"object": "model",
"created": 1737428424,
"owned_by": "vllm",
"root": null
}
]
}
실제 채팅 요청을 보내려면 OpenAI의 /completion 엔드포인트에 curl 요청을 보냅니다:
curl -X POST http://localhost:30080/v1/completions \
-H "Content-Type: application/json" \
-d '{
"model": "facebook/opt-125m",
"prompt": "Once upon a time,",
"max_tokens": 10
}'
출력:
{
"id": "completion-id",
"object": "text_completion",
"created": 1737428424,
"model": "facebook/opt-125m",
"choices": [
{
"text": " there was a brave knight who...",
"index": 0,
"finish_reason": "length"
}
]
}
제거 (Uninstall)
배포를 제거하려면:
sudo helm uninstall vllm
(고급) vLLM production stack 구성 (Configuring vLLM production stack)
핵심 vLLM production stack 구성은 YAML로 관리합니다. 위 설치에서 사용한 예제 구성입니다:
servingEngineSpec:
runtimeClassName: ""
modelSpec:
- name: "opt125m"
repository: "vllm/vllm-openai"
tag: "latest"
modelURL: "facebook/opt-125m"
replicaCount: 1
requestCPU: 6
requestMemory: "16Gi"
requestGPU: 1
pvcStorage: "10Gi"
이 YAML 구성에서:
modelSpec은 다음을 포함합니다:name: 모델을 부르고 싶은 별칭.repository: vLLM의 Docker 저장소.tag: Docker 이미지 태그.modelURL: 사용하려는 LLM 모델.replicaCount: 레플리카 수.requestCPU와requestMemory: 파드의 CPU·메모리 리소스 요청량.requestGPU: 필요한 GPU 수.pvcStorage: 모델용 영속 스토리지 할당.
참고: 두 파드를 설정하려면 이 YAML 파일을 참고하세요.
팁: vLLM production stack은 CPU 오프로딩과 다양한 라우팅 알고리즘 등 더 많은 기능을 제공합니다. 자세한 내용은 이 예제와 튜토리얼과 repo를 확인하세요.
더 알아보기 (Learn more)
- 모든 배포 통합 — vLLM과 연동되는 통합 목록
- vLLM production stack repo — 코드베이스와 튜토리얼
- LMCache — KV 캐시 오프로딩 라이브러리