本教程介绍如何使用 Google Kubernetes Engine (GKE) 上的 GPU 和 vLLM 部署框架来部署和应用 Llama 模型 4 大语言模型 (LLM)。本教程为理解和探索在托管式 Kubernetes 环境中部署实际 LLM 以进行推理提供了基础。您会将运行 vLLM 的预构建容器部署到 GKE。您还将配置 GKE,以从 Hugging Face 加载 Llama。
本教程适用于机器学习 (ML) 工程师、平台管理员和运维人员,以及希望使用 Kubernetes 容器编排功能在 H200、H100、A100 和 L4 GPU 硬件上处理 AI/机器学习工作负载的数据和 AI 专家。如需详细了解我们在 Google Cloud 内容中提及的常见角色和示例任务,请参阅常见的 GKE 用户角色和任务。
如果您需要统一的托管式 AI 平台,旨在经济高效地快速构建和部署机器学习模型,我们建议您试用我们的 Vertex AI 部署解决方案。
在阅读本页面之前,请确保您熟悉以下内容:
背景
本部分介绍本指南中使用的关键技术。
Llama
Llama 是由 Meta 提供的大语言模型,专为各种自然语言处理任务(包括文本生成、翻译和问答)而设计。GKE 提供所需的基础设施,以支持这种规模的模型的分布式训练和服务需求。如需了解详情,请参阅 Llama 文档。
GPU
利用 GPU,您可以加速在节点上运行的特定工作负载(例如机器学习和数据处理)。GKE 提供了一系列机器类型选项以用于节点配置,包括配备 NVIDIA H200、H100、L4 和 A100 GPU 的机器类型。
vLLM
vLLM 是一个经过高度优化的开源 LLM 服务框架,可提高 GPU 上的服务吞吐量,具有如下功能:
- 具有 PagedAttention 且经过优化的 Transformer(转换器)实现
- 连续批处理,可提高整体服务吞吐量
- 多个 GPU 上的张量并行处理和分布式服务
如需了解详情,请参阅 vLLM 文档。
目标
- 使用处于 Autopilot 或 Standard 模式的 GKE 集群准备环境。
- 将 vLLM 容器部署到您的集群。
- 通过 curl 和网页聊天界面,使用 vLLM 部署 Llama 4 模型。
准备工作
- 登录您的 Google Cloud 账号。如果您是新手 Google Cloud, 请创建一个账号来评估我们的产品在 实际场景中的表现。新客户还可获享 $300 赠金,用于 运行、测试和部署工作负载。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the required API.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the required API.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
确保您在项目中拥有以下一个或多个角色: roles/container.admin、roles/iam.serviceAccountAdmin
检查角色
-
在 Google Cloud 控制台中,前往 IAM 页面。
转到 IAM - 选择项目。
-
在主账号 列中,找到标识您或您所属群组的所有行。如需了解您属于哪些群组,请与您的 管理员联系。
- 对于指定或包含您的所有行,请检查角色 列以查看 角色列表是否包含所需的角色。
授予角色
-
在 Google Cloud 控制台中,前往 IAM 页面。
转到 IAM - 选择项目。
- 点击 授予访问权限。
-
在新的主账号 字段中,输入您的用户标识符。 这通常是 Google 账号的电子邮件地址。
- 点击选择角色,然后搜索相应角色。
- 如需授予其他角色,请点击 添加其他角色 ,然后添加其他各个角色。
- 点击 Save (保存)。
-
- 如果您还没有 Hugging Face 账号,请创建一个。
- 确保您的项目具有足够的 H100 和 H200 GPU 配额。如需了解详情,请参阅规划 GPU 配额和 GPU 配额。
获取对模型的访问权限
如需通过 Hugging Face 访问模型,您需要 Hugging Face 令牌。
如果您还没有令牌,请按照以下步骤生成新令牌:
- 点击您的个人资料 > 设置 > 访问令牌。
- 选择新建令牌 (New Token)。
- 指定您选择的名称和一个至少为
Read的角色。 - 选择生成令牌。
- 将生成的令牌复制到剪贴板。
准备环境
在本教程中,您将使用 Cloud Shell 来管理Google Cloud上托管的资源。Cloud Shell 中预安装了本教程所需的软件,包括 kubectl 和 gcloud CLI。
如需使用 Cloud Shell 设置您的环境,请按照以下步骤操作:
在 Google Cloud 控制台中,点击 Google Cloud 控制台中的
激活 Cloud Shell 以启动 Cloud Shell 会话。此操作会在 Google Cloud 控制台的底部窗格中启动会话。
设置默认环境变量:
gcloud config set project PROJECT_ID gcloud config set billing/quota_project PROJECT_ID export PROJECT_ID=$(gcloud config get project) export REGION=REGION export CLUSTER_NAME=CLUSTER_NAME export HF_TOKEN=HF_TOKEN替换以下值:
PROJECT_ID:您的 Google Cloud项目 ID。REGION:支持要使用的加速器类型的区域,例如适用于 L4 GPU 的us-central1。CLUSTER_NAME:您的集群的名称。HF_TOKEN:您之前生成的 Hugging Face 令牌。
创建和配置 Google Cloud 资源
请按照以下说明创建所需的资源。
创建 GKE 集群和节点池
您可以在 GKE Autopilot 或 Standard 集群中的 GPU 上部署 Llama 4 模型。我们建议您使用 Autopilot 集群获得全托管式 Kubernetes 体验。如需选择最适合您的工作负载的 GKE 操作模式,请参阅选择 GKE 操作模式。
Autopilot
在 Cloud Shell 中,运行以下命令:
gcloud container clusters create-auto CLUSTER_NAME \
--project=PROJECT_ID \
--location=CONTROL_PLANE_LOCATION \
--release-channel=rapid
替换以下值:
PROJECT_ID:您的 Google Cloud项目 ID。CONTROL_PLANE_LOCATION:集群控制平面的 Compute Engine 区域。提供支持要使用的加速器类型的区域,例如适用于 L4 GPU 的us-central1。CLUSTER_NAME:您的集群的名称。
GKE 会根据所部署的工作负载的请求,创建具有所需 CPU 和 GPU 节点的 Autopilot 集群。
Standard
在 Cloud Shell 中,运行以下命令以创建 Standard 集群:
gcloud container clusters create CLUSTER_NAME \ --project=PROJECT_ID \ --location=CONTROL_PLANE_LOCATION \ --workload-pool=PROJECT_ID.svc.id.goog \ --release-channel=rapid \ --num-nodes=1替换以下值:
PROJECT_ID:您的 Google Cloud项目 ID。CONTROL_PLANE_LOCATION:集群控制平面的 Compute Engine 区域。提供支持要使用的加速器类型的区域,例如适用于 H100 GPU 的us-central1。CLUSTER_NAME:您的集群的名称。
集群创建可能需要几分钟的时间。
如需为集群创建具有适当磁盘大小的节点池,请运行以下命令:
gcloud container node-pools create gpupool \ --accelerator type=nvidia-h100-80gb,count=1,gpu-driver-version=latest \ --project=PROJECT_ID \ --location=REGION \ --node-locations=REGION-a \ --cluster=CLUSTER_NAME \ --machine-type=a3-highgpu-8g \ --disk-type=pd-ssd \ --num-nodes=1 \ --disk-size=256GKE 会创建单个节点池,其中包含 8 个 H100 80GB GPU。
为 Hugging Face 凭据创建 Kubernetes Secret
在 Cloud Shell 中,执行以下操作:
配置
kubectl,使其能够与您的集群通信:gcloud container clusters get-credentials CLUSTER_NAME \ --location=REGION替换以下值:
REGION:支持要使用的加速器类型的区域,例如适用于 L4 GPU 的us-central1。CLUSTER_NAME:您的集群的名称。
创建包含 Hugging Face 令牌的 Kubernetes Secret:
kubectl create secret generic hf-secret \ --from-literal=hf_api_token=${HF_TOKEN} \ --dry-run=client -o yaml | kubectl apply -f -将
HF_TOKEN替换为您之前生成的 Hugging Face 令牌。
部署 vLLM
在本部分中,您将部署 vLLM 容器以应用您要使用的 Llama 4 模型:
- Llama 4 Maverick 17B-128E
- Llama 4 Scout 17B-16E
为了部署模型,本教程将使用 Kubernetes Deployment。Deployment 是一个 Kubernetes API 对象,可让您运行在集群节点中分布的多个 Pod 副本。
Llama 4 Maverick 17B-128e
如需部署 Llama 4 Maverick 17B-128E 模型,请按照以下说明操作:
创建以下
vllm-llama4-maverick-17b-128e.yaml清单:应用清单:
kubectl apply -f vllm-llama4-maverick-17b-128e.yaml在我们的示例中,我们使用
--max-model-len=131072vLLM 选项将上下文窗口限制为 128 K。
Llama 4 Maverick 17B-128e-it
如需部署 Llama 4 Maverick 17B-128e 指令调优模型,请按照以下说明操作:
创建以下
vllm-llama4-maverick-17b-128e-instruct.yaml清单:应用清单:
kubectl apply -f vllm-llama4-maverick-17b-128e-instruct.yaml在我们的示例中,我们使用
--max-model-len=131072vLLM 选项将上下文窗口限制为 128 K。
Llama 4 Maverick 17B-128e-it-fp8
如需部署 Llama 4 Maverick 17B-128e-Instruct-FP8 模型,请按照以下说明操作:
创建以下
vllm-llama4-maverick-17b-128e-instruct-fp8.yaml清单:应用清单:
kubectl apply -f vllm-llama4-maverick-17b-128e-instruct-fp8.yaml在我们的示例中,我们使用
--max-model-len=524288vLLM 选项将上下文窗口限制为 512 K。
Llama 4 Scout 17B-16e
如需部署 Llama 4 Scout 17B-16E 模型,请按照以下说明操作:
创建以下
vllm-llama4-scout-17b-16e.yaml清单:应用清单:
kubectl apply -f vllm-llama4-scout-17b-16e.yaml在我们的示例中,我们使用
--max-model-len=262144vLLM 选项将上下文窗口限制为 256 K。
Llama 4 Scout 17B-16e-it
如需部署 Llama 4 Scout 17B-16e Instruct 指令调优模型,请按照以下说明操作:
创建以下
vllm-llama4-scout-17b-16e-instruct.yaml清单:应用清单:
kubectl apply -f vllm-llama4-scout-17b-16e-instruct.yaml在我们的示例中,我们使用
--max-model-len=1310720vLLM 选项将上下文窗口限制为 1280 K。
等待部署成为可用状态:
kubectl wait --for=condition=Available --timeout=1800s deployment/llama-deployment
查看正在运行的部署的日志:
kubectl logs -f -l app=llama-server
部署资源会下载模型数据。此过程可能需要几分钟的时间。输出类似于以下内容:
INFO: Started server process [145]
INFO: Waiting for application startup.
INFO: Application startup complete.
...
INFO 04-07 13:36:29 [async_llm.py:228] Added request chatcmpl-4149ea4cf35e48559f9f819dcdbbb23e.
INFO: 127.0.0.1:44018 - "POST /v1/chat/completions HTTP/1.1" 200 OK
确保模型已完全下载,然后再继续下一部分。
应用模型
在本部分中,您将与模型互动。
设置端口转发
如需设置到模型的端口转发,请运行以下命令:
kubectl port-forward service/llama-service 8080:8000
输出类似于以下内容:
Forwarding from 127.0.0.1:8080 -> 7080
使用 curl 与模型互动
本部分介绍如何执行基本冒烟测试以验证所部署的 Llama 指令调优模型。
对于其他模型,请将 meta-llama/Llama-4-Maverick-17B-128E 替换为相应模型的名称。
此示例展示了如何使用纯文本输入测试 Llama 4 Scout 17B-16E 模型。
在新的终端会话中,使用 curl 与模型聊天:
curl http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "meta-llama/Llama-4-Maverick-17B-128E",
"messages": [{"role": "user", "content": "San Francisco is a"}],
"max_tokens": 7,
"temperature": 0
}'
输出类似于以下内容:
"message":{"role":"assistant","reasoning_content":null,"content":"San Francisco is a city","tool_calls":[]}
问题排查
- 如果您收到
Empty reply from server消息,则容器可能尚未完成模型数据下载。再次检查 Pod 的日志中是否包含Connected消息,该消息表明模型已准备好进行应用。 - 如果您看到
Connection refused消息,请验证您的端口转发处于活跃状态。
观察模型性能
如需查看模型的可观测性指标对应的信息中心,请按以下步骤操作:
在 Google Cloud 控制台中,前往已部署的模型页面。
如需查看特定部署的详细信息(包括其指标、日志和信息中心),请点击列表中的模型名称。
在模型详情页面中,点击可观测性标签页以查看以下信息中心。如果系统提示,请点击启用以对集群启用指标收集。
- 基础设施使用情况信息中心会显示利用率指标。
- DCGM 信息中心会显示 DCGM 指标。
- 如果您使用的是 vLLM,则可以使用模型性能信息中心,该信息中心会显示 vLLM 模型性能的指标。
您还可以在 Cloud Monitoring 中的 vLLM 信息中心集成中查看指标。 这些指标会针对所有 vLLM 部署进行汇总,且没有预设过滤条件
如需使用 Cloud Monitoring 中的信息中心,您必须在 GKE 集群中启用 Google Cloud Managed Service for Prometheus,该服务会从 vLLM 收集指标。vLLM 默认以 Prometheus 格式公开指标;您无需安装其他导出工具。如需了解如何使用 Google Cloud Managed Service for Prometheus 从模型收集指标,请参阅 Cloud Monitoring 文档中的 vLLM 可观测性指南。
清理
为避免因本教程中使用的资源导致您的 Google Cloud 账号产生费用,请删除包含这些资源的项目,或者保留项目但删除各个资源。
删除已部署的资源
为避免因您在本指南中创建的资源导致您的 Google Cloud 账号产生费用,请运行以下命令:
gcloud container clusters delete CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION
替换以下值:
CONTROL_PLANE_LOCATION:集群控制平面的 Compute Engine 区域。CLUSTER_NAME:您的集群的名称。
后续步骤
- 详细了解 GKE 中的 GPU。
- 查看 GitHub 中的示例代码,了解如何在其他加速器(包括 A100 和 H100 GPU)上将 Llama 与 vLLM 搭配使用。
- 了解如何在 Autopilot 中部署 GPU 工作负载。
- 了解如何在 Standard 中部署 GPU 工作负载。
- 浏览 vLLM GitHub 代码库和文档。
- 探索 Vertex AI Model Garden。
- 了解如何使用 GKE 平台编排功能运行经过优化的 AI/机器学习工作负载。