Helm Chart 部署#
本教程将指导您完成在支持 GPU 的 Kubernetes 环境中部署 vLLM 服务引擎所需的基本配置。您将学习如何指定模型详细信息、设置必要的环境变量(如 HF_TOKEN)以及启动 vLLM 服务引擎。
目录#
先决条件#
在 前提条件 教程中设置的支持 GPU 的 Kubernetes 环境。
系统上安装了 Helm。
拥有 HuggingFace 令牌 (
HF_TOKEN) 的访问权限。
步骤 1:准备配置文件#
- 打开文件并更新以下字段
在 yaml 文件中,将
hf_token: <YOUR HF TOKEN>替换为您实际的 Huggingface token。
values-02-basic-config.yaml 文件中的关键项说明#
name: 模型部署的唯一标识符。
repository: 包含模型服务引擎镜像的 Docker 仓库。
tag: 指定要使用的模型镜像版本。
modelURL: 指向 Hugging Face 或其他托管服务上模型的 URL。
replicaCount: 部署的副本数量,支持负载扩展。
requestCPU: 每个副本请求的 CPU 资源量。
requestMemory: 部署的内存分配;加载模型需要足够的内存。
requestGPU: 指定分配给部署的 GPU 数量。
pvcStorage: 定义模型存储的持久卷声明大小。
vllmConfig: 包含模型特定的配置
enableChunkedPrefill: 通过预取模型块来优化性能。enablePrefixCaching: 加快查询中常见前缀的响应时间。maxModelLen: 模型可处理的最大序列长度。dtype: 计算数据类型,例如,在现代 GPU 上为bfloat16以获得更快的性能。extraArgs: 传递给 vLLM 引擎以微调行为的额外参数。
hf_token: 用于向 Hugging Face 模型中心进行身份验证的 Hugging Face token。
env: 要传递给模型服务引擎的额外环境变量。
示例片段#
servingEngineSpec:
modelSpec:
- name: "llama3"
repository: "vllm/vllm-openai"
tag: "latest"
modelURL: "meta-llama/Llama-3.1-8B-Instruct"
replicaCount: 1
requestCPU: 10
requestMemory: "16Gi"
requestGPU: 1
pvcStorage: "50Gi"
vllmConfig:
enableChunkedPrefill: false
enablePrefixCaching: false
maxModelLen: 16384
dtype: "bfloat16"
extraArgs: ["--disable-log-requests", "--gpu-memory-utilization", "0.8"]
hf_token: <YOUR HF TOKEN>
步骤 2:应用配置#
使用 Helm 部署配置
helm repo add vllm https://vllm-project.github.io/production-stack
helm install vllm vllm/vllm-stack -f tutorials/assets/values-02-basic-config.yaml
预期输出
您应该会看到输出,表明 Helm Chart 已成功部署
Release "vllm" has been deployed. Happy Helming!
NAME: vllm
LAST DEPLOYED: <timestamp>
NAMESPACE: default
STATUS: deployed
REVISION: 1
步骤 3:验证部署#
检查 Pod 的状态
kubectl get pods
预期输出
您应该看到以下 Pod
NAME READY STATUS RESTARTS AGE pod/vllm-deployment-router-xxxx-xxxx 1/1 Running 0 3m23s vllm-llama3-deployment-vllm-xxxx-xxxx 1/1 Running 0 3m23s
vllm-deployment-routerPod 作为路由器,负责管理请求并将其路由到相应的模型服务 Pod。vllm-llama3-deployment-vllmPod 为推理服务实际模型。
验证服务是否已正确公开
kubectl get services
预期输出
确保服务引擎和路由器都有对应的服务
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE vllm-engine-service ClusterIP 10.103.98.170 <none> 80/TCP 4m vllm-router-service ClusterIP 10.103.110.107 <none> 80/TCP 4m
vllm-engine-service公开了服务引擎。vllm-router-service负责路由和跨模型服务 Pod 的负载均衡。
测试健康检查端点
curl http://<SERVICE_IP>/health将
<SERVICE_IP>替换为服务的外部 IP。如果一切配置正确,您将收到{"status":"healthy"}
有关查询已部署的 vLLM 服务,请参阅 快速入门 教程中的步骤 3。
步骤 4(可选):多 GPU 部署#
到目前为止,您已配置并部署了一个带单个 GPU 的 vLLM 服务引擎。您也可以使用以下示例配置片段在多个 GPU 上部署服务引擎
servingEngineSpec:
runtimeClassName: ""
modelSpec:
- name: "llama3"
repository: "vllm/vllm-openai"
tag: "latest"
modelURL: "meta-llama/Llama-3.1-8B-Instruct"
replicaCount: 1
requestCPU: 10
requestMemory: "16Gi"
requestGPU: 2
pvcStorage: "50Gi"
pvcAccessMode:
- ReadWriteOnce
vllmConfig:
enableChunkedPrefill: false
enablePrefixCaching: false
maxModelLen: 4096
tensorParallelSize: 2
dtype: "bfloat16"
extraArgs: ["--disable-log-requests", "--gpu-memory-utilization", "0.8"]
hf_token: <YOUR HF TOKEN>
shmSize: "20Gi"
请注意,目前仅支持张量并行。如果您请求的 requestGPU 大于一,则必须配置 shmSize 字段,以便为运行张量并行所需的多个进程启用适当的共享内存。
结论#
在本教程中,您在 Kubernetes 环境中配置并部署了一个支持 GPU(单个 GPU 或多个 GPU)的 vLLM 服务引擎。您还学习了如何验证其部署并确保其按预期运行。如需进一步自定义,请参阅 values.yaml 文件和 Helm Chart 文档。