生产堆栈#

在 Kubernetes 上部署 vLLM 是一种可扩展且高效的方式来服务机器学习模型。本指南将引导您完成使用 vLLM 生产堆栈 部署 vLLM 的过程。 vLLM 生产堆栈 源于伯克利-芝加哥大学的合作,是 vLLM 项目 下官方发布的、生产优化的代码库,专为 LLM 部署而设计,具有

  • 上游 vLLM 兼容性 – 它封装了上游 vLLM,无需修改其代码。

  • 易用性 – 通过 Helm Charts 简化部署,并通过 Grafana 仪表板实现可观察性。

  • 高性能 – 针对 LLM 工作负载进行了优化,具有多模型支持、模型感知和前缀感知路由、快速 vLLM 引导以及使用 LMCache 进行 KV 缓存卸载等功能。

如果您是 Kubernetes 新手,请不要担心:在 vLLM 生产堆栈 仓库 中,我们提供了一个逐步指南 和一个 短视频,帮助您设置一切并在 4 分钟 内开始!

前提条件#

确保您有一个运行中的带有 GPU 的 Kubernetes 环境(您可以按照 本教程 在裸金属 GPU 机器上安装 Kubernetes 环境)。

使用 vLLM 生产堆栈进行部署#

标准的 vLLM 生产堆栈安装使用 Helm chart。您可以运行此 bash 脚本 在您的 GPU 服务器上安装 Helm。

要安装 vLLM 生产堆栈,请在您的桌面上运行以下命令

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

这将实例化一个名为 vllm 的基于 vLLM 生产堆栈的部署,该部署运行一个小型 LLM (Facebook opt-125M 模型)。

验证安装#

使用以下命令监控部署状态

sudo kubectl get pods

您将看到 vllm 部署的 Pod 将转换为 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 权重可能需要一些时间。

向堆栈发送查询#

vllm-router-service 端口转发到主机

sudo kubectl port-forward svc/vllm-router-service 30080:80

然后,您可以向 OpenAI 兼容的 API 发送查询以检查可用模型

curl -o- https://127.0.0.1:30080/models

预期输出

{
  "object": "list",
  "data": [
    {
      "id": "facebook/opt-125m",
      "object": "model",
      "created": 1737428424,
      "owned_by": "vllm",
      "root": null
    }
  ]
}

要发送实际的聊天请求,您可以向 OpenAI /completion 端点发出 curl 请求

curl -X POST https://127.0.0.1:30080/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"
    }
  ]
}

卸载#

要移除部署,请运行

sudo helm uninstall vllm

(高级) 配置 vLLM 生产堆栈#

核心 vLLM 生产堆栈配置使用 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:副本数量。

  • requestCPUrequestMemory:指定 Pod 的 CPU 和内存资源请求。

  • requestGPU:指定所需的 GPU 数量。

  • pvcStorage:为模型分配持久存储。

注意: 如果您打算设置两个 Pod,请参考此 YAML 文件

注意: vLLM 生产堆栈提供更多功能(例如 CPU 卸载和广泛的路由算法)。请查看这些示例和教程 以及我们的 仓库 了解更多详情!