本教程介绍如何使用 vLLM 服务框架来部署和提供 Qwen3 大语言模型 (LLM)。您可以在 Google Kubernetes Engine (GKE) 上的单个 A4 虚拟机 (VM) 实例上部署模型。
本教程适用于机器学习 (ML) 工程师、平台管理员和运维人员,以及对使用 Kubernetes 容器编排功能处理推理工作负载感兴趣的数据和 AI 专家。
目标
使用 Hugging Face 访问 Qwen3。
准备环境。
在 Autopilot 模式下创建 GKE 集群。
为 Hugging Face 凭据创建 Kubernetes Secret。
将 vLLM 容器部署到 GKE 集群。
使用 curl 与 Qwen3 互动。
清理。
费用
本教程使用 Google Cloud 的以下收费组件:
如需根据您的预计使用量来估算费用,请使用价格计算器。
准备工作
- 登录您的 Google Cloud 账号。如果您是 Google Cloud新手,请 创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
-
安装 Google Cloud CLI。
-
如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init -
选择或创建项目所需的角色
- 选择项目:选择项目不需要特定的 IAM 角色,您可以选择已获授角色的任何项目。
-
创建项目:如需创建项目,您需要拥有 Project Creator 角色 (
roles/resourcemanager.projectCreator),该角色包含resourcemanager.projects.create权限。了解如何授予角色。
-
创建 Google Cloud 项目:
gcloud projects create PROJECT_ID
将
PROJECT_ID替换为您要创建的 Google Cloud 项目的名称。 -
选择您创建的 Google Cloud 项目:
gcloud config set project PROJECT_ID
将
PROJECT_ID替换为您的 Google Cloud 项目名称。
启用所需的 API:
启用 API 所需的角色
如需启用 API,您需要拥有 Service Usage Admin IAM 角色 (
roles/serviceusage.serviceUsageAdmin),该角色包含serviceusage.services.enable权限。了解如何授予角色。gcloud services enable container.googleapis.com
-
安装 Google Cloud CLI。
-
如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init -
选择或创建项目所需的角色
- 选择项目:选择项目不需要特定的 IAM 角色,您可以选择已获授角色的任何项目。
-
创建项目:如需创建项目,您需要拥有 Project Creator 角色 (
roles/resourcemanager.projectCreator),该角色包含resourcemanager.projects.create权限。了解如何授予角色。
-
创建 Google Cloud 项目:
gcloud projects create PROJECT_ID
将
PROJECT_ID替换为您要创建的 Google Cloud 项目的名称。 -
选择您创建的 Google Cloud 项目:
gcloud config set project PROJECT_ID
将
PROJECT_ID替换为您的 Google Cloud 项目名称。
启用所需的 API:
启用 API 所需的角色
如需启用 API,您需要拥有 Service Usage Admin IAM 角色 (
roles/serviceusage.serviceUsageAdmin),该角色包含serviceusage.services.enable权限。了解如何授予角色。gcloud services enable container.googleapis.com
-
向您的用户账号授予角色。对以下每个 IAM 角色运行以下命令一次:
roles/container.admingcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
替换以下内容:
PROJECT_ID:您的项目 ID。USER_IDENTIFIER:您的用户 账号的标识符。例如,myemail@example.com。ROLE:您授予用户账号的 IAM 角色。
- 登录或创建 Hugging Face 账号。
使用 Hugging Face 访问 Qwen3
如需使用 Hugging Face 访问 Qwen3,请按以下步骤操作:
- 登录 Hugging Face
- 创建 Hugging Face
read访问令牌。 依次点击您的个人资料 > 设置 > 访问令牌 > +创建新令牌。 - 为令牌指定您选择的名称,然后选择一个角色。您可以为本教程选择的最低角色权限级别为读取。
- 选择 Create token。
- 将生成的令牌复制并保存到剪贴板。您将在本教程的后面部分使用该地址。
准备环境
如需准备环境,请设置默认环境变量:
gcloud config set project PROJECT_ID
gcloud config set billing/quota_project PROJECT_ID
export PROJECT_ID=$(gcloud config get project)
export RESERVATION_URL=RESERVATION_URL
export REGION=REGION
export CLUSTER_NAME=CLUSTER_NAME
export HUGGING_FACE_TOKEN=HUGGING_FACE_TOKEN
export NETWORK=NETWORK_NAME
export SUBNETWORK=SUBNETWORK_NAME
替换以下内容:
PROJECT_ID:您要在其中创建 GKE 集群的 Google Cloud 项目的 ID。RESERVATION_URL:您要用于创建 GKE 集群的预留的网址。根据预留所在的项目,指定以下值之一:预留存在于您的项目中:
RESERVATION_NAME预留存在于其他项目中,并且您的项目可以使用该预留:
projects/RESERVATION_PROJECT_ID/reservations/RESERVATION_NAME
REGION:您要在其中创建 GKE 集群的区域。您只能在预留所在的区域中创建集群。CLUSTER_NAME:要创建的 GKE 集群的名称。HUGGING_FACE_TOKEN:您在上一部分中创建的 Hugging Face 访问令牌。NETWORK_NAME:GKE 集群使用的网络。请指定以下某个值:如果您创建了自定义网络,请指定您的网络名称。
否则,请指定
default。
SUBNETWORK_NAME:GKE 集群使用的子网。请指定以下某个值:如果您创建了自定义子网,请指定子网的名称。您只能指定与预留位于同一区域中的子网。
否则,请指定
default。
在 Autopilot 模式下创建 GKE 集群
如需在 Autopilot 模式下创建 GKE 集群,请运行以下命令:
gcloud container clusters create-auto $CLUSTER_NAME \
--project=$PROJECT_ID \
--region=$REGION \
--release-channel=rapid \
--network=$NETWORK \
--subnetwork=$SUBNETWORK
创建 GKE 集群可能需要一些时间才能完成。如需验证 Google Cloud 是否已完成集群创建,请前往 Google Cloud 控制台中的 Kubernetes 集群。
为 Hugging Face 凭据创建 Kubernetes Secret
如需为 Hugging Face 凭据创建 Kubernetes Secret,请按以下步骤操作:
配置
kubectl以与您的 GKE 集群通信:gcloud container clusters get-credentials $CLUSTER_NAME \ --location=$REGION创建一个 Kubernetes Secret 来存储您的 Hugging Face 令牌:
kubectl create secret generic hf-secret \ --from-literal=hf_token=${HUGGING_FACE_TOKEN} \ --dry-run=client -o yaml | kubectl apply -f -
将 vLLM 容器部署到 GKE 集群
如需使用 Kubernetes Deployment 部署 vLLM 容器以提供 Qwen3 模型,请执行以下操作:
创建一个包含所选 vLLM 部署的
qwen3-235b-deploy.yaml文件。:apiVersion: apps/v1 kind: Deployment metadata: name: vllm-qwen3-deployment spec: replicas: 1 selector: matchLabels: app: qwen3-server template: metadata: labels: app: qwen3-server ai.gke.io/model: Qwen3-235B-A22B-Instruct-2507 ai.gke.io/inference-server: vllm spec: containers: - name: qwen-inference-server image: us-docker.pkg.dev/vertex-ai/vertex-vision-model-garden-dockers/pytorch-vllm-serve:20250801_0916_RC01 resources: requests: cpu: "10" memory: "1000Gi" ephemeral-storage: "500Gi" nvidia.com/gpu: "8" limits: cpu: "10" memory: "1000Gi" ephemeral-storage: "500Gi" nvidia.com/gpu: "8" command: ["python3", "-m", "vllm.entrypoints.openai.api_server"] args: - --model=$(MODEL_ID) - --tensor-parallel-size=8 - --host=0.0.0.0 - --port=8000 - --max-model-len=8192 - --max-num-seqs=4 - --dtype=bfloat16 env: - name: MODEL_ID value: "Qwen/Qwen3-235B-A22B-Instruct-2507" - name: HUGGING_FACE_HUB_TOKEN valueFrom: secretKeyRef: name: hf-secret key: hf_token volumeMounts: - mountPath: /dev/shm name: dshm livenessProbe: httpGet: path: /health port: 8000 initialDelaySeconds: 1320 periodSeconds: 10 readinessProbe: httpGet: path: /health port: 8000 initialDelaySeconds: 1320 periodSeconds: 5 volumes: - name: dshm emptyDir: medium: Memory nodeSelector: cloud.google.com/gke-accelerator: nvidia-b200 cloud.google.com/reservation-name: RESERVATION_URL cloud.google.com/reservation-affinity: "specific" cloud.google.com/gke-gpu-driver-version: latest --- apiVersion: v1 kind: Service metadata: name: qwen3-service spec: selector: app: qwen3-server type: ClusterIP ports: - protocol: TCP port: 8000 targetPort: 8000 --- apiVersion: monitoring.googleapis.com/v1 kind: PodMonitoring metadata: name: vllm-qwen3-monitoring spec: selector: matchLabels: app: qwen3-server endpoints: - port: 8000 path: /metrics interval: 30s将
qwen3-235b-deploy.yaml文件应用于您的 GKE 集群:kubectl apply -f qwen3-235b-deploy.yaml在部署过程中,容器必须从 Hugging Face 下载
Qwen3-235B-A22B-Instruct-2507模型。因此,容器的部署可能需要长达 30 分钟才能完成。如需查看完成状态,请运行以下命令:
kubectl wait \ --for=condition=Available \ --timeout=1500s deployment/vllm-qwen3-deployment借助
--timeout=1500s标志,该命令可以监控部署长达 25 分钟。
使用 curl 与 Qwen3 互动
如需验证您部署的 Qwen3 模型,请执行以下操作:
设置到 Qwen3 的端口转发:
kubectl port-forward service/qwen3-service 8000:8000打开一个新终端窗口。然后,您可以使用
curl与模型聊天:curl http://127.0.0.1:8000/v1/chat/completions \ -X POST \ -H "Content-Type: application/json" \ -d '{ "model": "Qwen/Qwen3-235B-A22B-Instruct-2507", "messages": [ { "role": "user", "content": "Describe a GPU in one short sentence?" } ] }'输出类似于以下内容:
{ "id": "chatcmpl-a926ddf7ef2745ca832bda096e867764", "object": "chat.completion", "created": 1755023619, "model": "Qwen/Qwen3-235B-A22B-Instruct-2507", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "A GPU is a specialized electronic circuit designed to rapidly process and render graphics and perform parallel computations.", "refusal": null, "annotations": null, "audio": null, "function_call": null, "tool_calls": [], "reasoning_content": null }, "logprobs": null, "finish_reason": "stop", "stop_reason": null } ], "service_tier": null, "system_fingerprint": null, "usage": { "prompt_tokens": 16, "total_tokens": 36, "completion_tokens": 20, "prompt_tokens_details": null }, "prompt_logprobs": null, "kv_transfer_params": null }
观察模型性能
如果您想观察模型的性能,可以使用 Cloud Monitoring 中的 vLLM 信息中心集成。此信息中心可帮助您查看模型的一些关键性能指标,例如令牌吞吐量、网络延迟时间和错误率。如需了解详情,请参阅 Monitoring 文档中的 vLLM。
清理
为避免因本教程中使用的资源导致您的 Google Cloud 账号产生费用,请删除包含这些资源的项目,或者保留项目但删除各个资源。
删除项目
删除 Google Cloud 项目:
gcloud projects delete PROJECT_ID
删除 GKE 集群
如需删除 GKE 集群,请运行以下命令:
gcloud container clusters delete $CLUSTER_NAME \
--region=$REGION
删除资源
如需从 GKE 集群中删除 qwen3-235b-deploy.yaml 文件和 Kubernetes Secret,请运行以下命令:
kubectl delete -f qwen3-235b-deploy.yaml
kubectl delete secret hf-secret