本教程介绍如何部署和应用 Llama 4 Scout (17Bx16E)(一种 17B 大语言模型 (LLM)),并使用 vLLM 框架来应用它。您将在 Google Kubernetes Engine (GKE) 上的单个 A4 虚拟机 (VM) 实例上部署此模型。
本教程适用于机器学习 (ML) 工程师、平台管理员和运维人员,以及对使用 Kubernetes 容器编排功能处理推理工作负载感兴趣的数据和 AI 专家。
目标
使用 Hugging Face 访问 Llama 4。
准备环境。
在 Autopilot 模式下创建 GKE 集群。
为 Hugging Face 凭据创建 Kubernetes Secret。
将 vLLM 容器部署到 GKE 集群。
使用 curl 与 Llama 4 互动。
清理。
费用
本教程使用 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 项目名称。
-
验证是否已为您的 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 项目名称。
-
验证是否已为您的 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 访问 Llama 4
如需使用 Hugging Face 访问 Llama 4,请执行以下操作:
- 签署同意协议以使用 Llama 4。
- 创建 Hugging Face
read访问令牌。 - 复制并保存
read访问令牌值。您将在本教程的后面部分使用它。
准备环境
如需准备环境,请设置以下变量:
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。
创建和配置 Google Cloud 资源
请按照本部分中的说明创建所需资源。
在 Autopilot 模式下创建 GKE 集群
如需在 Autopilot 模式下创建 GKE 集群,请运行以下命令:
gcloud container clusters create-auto $CLUSTER_NAME \
--project=$PROJECT_ID \
--region=$REGION \
--release-channel=rapid \
--network=$NETWORK \
--subnetwork=$SUBNETWORK
创建 GKE 集群可能需要一些时间才能完成。 如需验证是否已完成集群创建,请前往 控制台中的 Kubernetes 集群 Google Cloud 。 Google Cloud
创建一个 Kubernetes Secret 来存储您的 Hugging Face 凭据
如需创建一个 Kubernetes Secret 来存储您的 Hugging Face 凭据,请执行以下操作:
配置
kubectl以与您的 GKE 集群通信:gcloud container clusters get-credentials $CLUSTER_NAME \ --location=$REGION创建一个 Kubernetes Secret,其中包含您在之前的步骤中创建的 Hugging Face
read access令牌:kubectl create secret generic hf-secret \ --from-literal=hf_api_token=${HUGGING_FACE_TOKEN} \ --dry-run=client -o yaml | kubectl apply -f -
将 vLLM 容器部署到 GKE 集群
如需部署 vLLM 容器以应用 Llama-4-Scout-17B-16E-Instruct 模型,请执行以下操作:
使用您选择的 vLLM 部署创建
vllm-l4-17b.yaml文件:apiVersion: apps/v1 kind: Deployment metadata: name: vllm-llama4-deployment spec: replicas: 1 selector: matchLabels: app: llama4-server template: metadata: labels: app: llama4-server ai.gke.io/model: llama-4-scout-17b ai.gke.io/inference-server: vllm examples.ai.gke.io/source: user-guide spec: containers: - name: inference-server image: us-docker.pkg.dev/vertex-ai/vertex-vision-model-garden-dockers/pytorch-vllm-serve:20250722_0916_RC01 resources: requests: cpu: "10" memory: "128Gi" ephemeral-storage: "240Gi" nvidia.com/gpu: "8" limits: cpu: "10" memory: "128Gi" ephemeral-storage: "240Gi" 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=4096 - --max-num-seqs=4 env: - name: MODEL_ID value: meta-llama/Llama-4-Scout-17B-16E-Instruct - name: HUGGING_FACE_HUB_TOKEN valueFrom: secretKeyRef: name: hf-secret key: hf_api_token volumeMounts: - mountPath: /dev/shm name: dshm livenessProbe: httpGet: path: /health port: 8000 initialDelaySeconds: 1800 periodSeconds: 10 readinessProbe: httpGet: path: /health port: 8000 initialDelaySeconds: 1800 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: llm-service spec: selector: app: llama4-server type: ClusterIP ports: - protocol: TCP port: 8000 targetPort: 8000 --- apiVersion: monitoring.googleapis.com/v1 kind: PodMonitoring metadata: name: vllm-llama4-monitoring spec: selector: matchLabels: app: llama4-server endpoints: - port: 8000 path: /metrics interval: 30s将
vllm-l4-17b.yaml文件应用于您的 GKE 集群:kubectl apply -f vllm-l4-17b.yaml在部署过程中,容器必须从 Hugging Face 下载
Llama-4-Scout-17B-16E-Instruct模型。因此,容器的部署可能需要长达 30 分钟才能完成。如需查看完成状态,请运行以下命令:
kubectl wait \ --for=condition=Available \ --timeout=1800s deployment/vllm-llama4-deployment--timeout=1800s标志允许该命令监控部署长达 30 分钟。
使用 curl 与 Llama 4 互动
如需验证您部署的 Llama 4 Scout 模型,请执行以下操作:
设置到 Llama 4 Scout 的端口转发:
kubectl port-forward service/llm-service 8000:8000打开一个新终端窗口。然后,您可以使用
curl与模型聊天:curl http://127.0.0.1:8000/v1/chat/completions \ -X POST \ -H "Content-Type: application/json" \ -d '{ "model": "meta-llama/Llama-4-Scout-17B-16E-Instruct", "messages": [ { "role": "user", "content": "Describe a sailboat in one short sentence?" } ] }'您看到的输出类似于以下内容:
{ "id": "chatcmpl-ec0ad6310c494a889b17600881c06e3d", "object": "chat.completion", "created": 1754073279, "model": "meta-llama/Llama-4-Scout-17B-16E-Instruct", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "A sailboat is a type of watercraft that uses the wind for propulsion, typically featuring a hull, mast, and one or more sails.", "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": 19, "total_tokens": 49, "completion_tokens": 30, "prompt_tokens_details": null }, "prompt_logprobs": null, "kv_transfer_params": null }
观察模型性能
如需观察模型的性能,您可以使用 Cloud Monitoring 中的 vLLM 信息中心 集成 。您可以使用此信息中心查看各种关键性能指标,例如令牌吞吐量、请求延迟时间和错误率。
如需了解如何使用 Google Cloud Managed Service for Prometheus 从模型收集指标,请参阅 vLLM Cloud Monitoring 文档中的可观测性指南。
清理
为避免因本教程中使用的资源导致您的 Google Cloud 账号产生费用,请删除包含这些资源的项目,或者保留项目但删除各个资源。
删除项目
删除项目: Google Cloud
gcloud projects delete PROJECT_ID
删除资源
如需删除
vllm-l4-17b.yaml文件中的部署和服务以及 GKE 集群中的 Kubernetes Secret,请运行以下命令:kubectl delete -f vllm-l4-17b.yaml kubectl delete secret hf-secret如需删除 GKE 集群,请运行以下命令:
gcloud container clusters delete $CLUSTER_NAME \ --region=$REGION