Helm — vLLM 배포
Helm — vLLM 배포
Helm은 Kubernetes용 패키지 매니저로, Kubernetes에서 vLLM 배포를 자동화하는 데 도움을 줍니다. Helm을 쓰면 같은 프레임워크 아키텍처를 변수 값 오버라이드로 서로 다른 네임스페이스에 배포할 수 있습니다. 이 글은 Helm으로 vLLM을 배포하는 과정(사전 준비, Helm 설치 단계, 아키텍처와 values 파일 설명)을 안내합니다.
출처: 문서
본문
사전 준비 (Prerequisites)
- 실행 중인 Kubernetes 클러스터
- NVIDIA Kubernetes Device Plugin(
k8s-device-plugin, https://github.com/NVIDIA/k8s-device-plugin) - 클러스터의 GPU 리소스
- (선택) 자동 모델 다운로드를 쓴다면 모델 가중치가 담긴 S3 버킷 또는 기타 스토리지
차트 설치
릴리스 이름 test-vllm으로 차트를 설치합니다.
helm upgrade --install --create-namespace \
--namespace=ns-vllm test-vllm . \
-f values.yaml \
--set secrets.s3endpoint=$ACCESS_POINT \
--set secrets.s3bucketname=$BUCKET \
--set secrets.s3accesskeyid=$ACCESS_KEY \
--set secrets.s3accesskey=$SECRET_KEY
차트 제거
test-vllm 배포를 제거합니다.
helm uninstall test-vllm --namespace=ns-vllm
이 명령은 persistent volume을 포함해 차트와 연관된 모든 Kubernetes 컴포넌트를 제거하고 릴리스를 삭제합니다.
아키텍처
차트는 기본적으로 vllm/vllm-openai 이미지를 사용하며, 컨테이너 시작 명령은 vllm serve /data/ --served-model-name opt-125m --host 0.0.0.0 --port 8000 형태입니다. 자동 모델 다운로드 init 컨테이너로 S3에서 모델을 내려받은 뒤 서빙합니다.
Values (핵심 설정)
values.yaml에서 구성 가능한 주요 파라미터는 다음과 같습니다.
| 키 | 기본값 | 설명 |
|---|---|---|
image.repository |
vllm/vllm-openai |
이미지 저장소 |
image.tag |
latest |
이미지 태그 |
replicaCount |
1 |
레플리카 수 |
containerPort |
8000 |
컨테이너 포트 |
servicePort |
80 |
서비스 포트 |
resources.limits."nvidia.com/gpu" |
1 |
사용 GPU 수 |
resources.limits.memory |
16Gi |
CPU 메모리 |
autoscaling.enabled |
false |
자동 스케일링 활성화 |
autoscaling.minReplicas / maxReplicas |
1 / 100 |
최소/최대 레플리카 |
livenessProbe.httpGet.path |
/health |
헬스 체크 경로 |
extraInit.modelDownload.enabled |
true |
모델 자동 다운로드 활성화 |
extraInit.pvcStorage |
1Gi |
PVC 스토리지 크기 |
extraInit.s3modelpath |
relative_s3_model_path/opt-125m |
S3 모델 경로 |
secrets |
{} |
시크릿 설정(S3 자격 증명 등) |
구성 예시
S3 모델 다운로드 사용(기본)
extraInit:
modelDownload:
enabled: true
pvcStorage: "10Gi"
s3modelpath: "models/llama-7b"
커스텀 init 컨테이너만 사용
llm-d처럼 모델 다운로드 없는 커스텀 사이드카가 필요한 경우:
extraInit:
modelDownload:
enabled: false
initContainers:
- name: llm-d-routing-proxy
image: ghcr.io/llm-d/llm-d-routing-sidecar:v0.2.0
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
name: proxy
securityContext:
runAsUser: 1000
restartPolicy: Always
pvcStorage: "10Gi"
더 알아보기 (Learn more)
- 모든 배포 프레임워크 — vLLM과 연동되는 프레임워크 목록
- Helm 공식 문서 — 차트 작성·배포
- NVIDIA k8s-device-plugin — GPU 장치 플러그인