本教程介绍了如何使用多主机 Cloud TPU v6e (Trillium) 加速器和 vLLM TorchTPU 在 Google Kubernetes Engine (GKE) 上部署和应用多模态混合专家模型 Gemma 4 26B (google/gemma-4-26B-A4B-it)。由于工作负载在 2x4 拓扑中跨多个 TPU 主机,因此您可以使用 Kubernetes LeaderWorkerSet API 和 Ray 来协调跨 8 个 TPU 芯片的分布式张量并行推理。
目标
- 设置 GKE 集群和多主机 TPU v6e 节点池。
- 使用 LeaderWorkerSet 部署多主机 vLLM 服务器。
- 发送文本和多模态推理请求。
- 运行服务基准工作负载。
- 清理。
费用
在本文档中,您将使用Google Cloud的以下收费组件:
如需根据您的预计使用量来估算费用,请使用价格计算器。
完成本文档中描述的任务后,您可以通过删除所创建的资源来避免继续计费。如需了解详情,请参阅清理。
准备工作
您需要拥有 Hugging Face 访问令牌才能使用本教程。您可以在 Hugging Face 注册免费账号。拥有账号后,生成访问令牌:
- 在欢迎使用 Hugging Face 页面上,点击您的账号头像,然后选择访问令牌。
- 在访问令牌页面上,点击创建新令牌。
- 选择读取令牌类型,然后输入令牌名称。
- 系统会显示您的访问令牌。将令牌保存在安全的位置。
如需获得完成本教程所需的权限,请让您的管理员为您授予项目的以下 IAM 角色:
- Kubernetes Engine Admin (
roles/container.admin) - Compute Admin (
roles/compute.admin) - Service Account User (
roles/iam.serviceAccountUser)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
设置环境变量
设置环境变量:
替换以下内容:
YOUR_PROJECT_ID:您的 Google Cloud项目的 ID。YOUR_RESERVATION_NAME:预留的名称。YOUR_REGION:您要在其中部署 GKE 集群的区域。YOUR_ZONE:要在其中部署 TPU v6e 节点池的可用区。YOUR_CLUSTER_NAME:GKE 集群的名称。YOUR_HF_TOKEN:您的 Hugging Face 访问令牌。YOUR_VLLM_TPU_IMAGE:要使用的 vLLM TPU 映像。对于公共映像,请参阅 vLLM TorchTPU 代码库。
创建 GKE 集群
如需创建 GKE 集群并附加多主机 TPU v6e 节点池,请完成以下步骤:
创建一个区域级 GKE 集群,该集群使用
e2-standard-4节点作为默认节点池,并使用一个 TPU v6e 节点池,该节点池包含两个ct6e-standard-4t节点,这些节点采用2x4拓扑(总共 8 个 TPU 芯片)。默认 GKE 机器类型 (e2-medium) 无法为 LeaderWorkerSet 控制器提供足够的 CPU 资源,因此本教程指定了e2-standard-4:您也可以不使用特定预留,而是通过传递以下标志,使用 Spot 容量或灵活启动型虚拟机创建节点池:
- Spot 虚拟机:将
--reservation-affinity和--reservation标志替换为--spot,以使用 Spot 容量。使用 Spot 容量的实例可能需要在节点池创建后一段时间才能创建,并且可能会在工作负载运行期间被抢占。如果您的 Pod 需要一段时间才能创建,或者工作负载在运行过程中停止,则可能是这个原因。 - 灵活启动型虚拟机:传递
--flex-start,以使用灵活启动使用选项预配节点池。如需了解详情,请参阅使用 TPU 和灵活启动虚拟机运行小型批量工作负载。
- Spot 虚拟机:将
配置
kubectl凭据以与您的集群通信:
配置凭证并安装 LeaderWorkerSet
如需为多主机部署准备集群,请完成以下步骤:
导出 Hugging Face 令牌并创建名为
hf-secret的 Kubernetes Secret:在集群上安装 LeaderWorkerSet CustomResourceDefinition 和控制器:
部署多主机 vLLM 服务器
工作负载清单 (gemma4-26b-multihost-v6e-2x4.yaml) 定义了两个资源:
- 一个 LeaderWorkerSet 资源 (
vllm-tpu-gemma4-26b),其中包含size: 2(一个主 Pod 和一个工作器 Pod),调度到2x4TPU 切片中的两个ct6e-standard-4t节点上。每个 Pod 都会运行一个 InitContainer,该容器会先将google/gemma-4-26B-A4B-it模型权重从 Hugging Face 预提取到内存卷中,然后再使用--tensor-parallel-size=8、--kv-cache-dtype=fp8、--max-model-len=5248和--max-num-seqs=128标志启动 Ray 和 vLLM OpenAI API 服务器。 - 一个 ClusterIP Service (
vllm-service),用于在 Leader Pod 上公开端口8000。
如需部署和监控工作负载,请完成以下步骤:
从 GitHub 提取 LeaderWorkerSet 清单:
或者,创建一个名为
gemma4-26b-multihost-v6e-2x4.yaml的文件,其中包含以下内容:应用 LeaderWorkerSet 清单:
监控主 Pod 状态和日志,直到应用启动完成:
初始服务启动大约需要 9 分钟,在此期间,Pod 会预提取模型权重,在所有 8 个 TPU 芯片上形成双节点 Ray 集群,并编译模型。请等到日志报告
Application startup complete后再发送流量。在第二个终端会话中,将本地端口
8000转发到vllm-service:让端口转发在此终端会话中保持运行。
发送推理请求
返回到第一个终端会话,并使用文本和多模态对话补全请求测试已部署的模型:
向
/v1/chat/completions端点发送文本对话补全请求:发送包含图片网址和文本提示词的多模态请求:
运行基准工作负载
如需对已部署的模型进行基准测试,请运行以下命令:
清理
为避免因本教程中使用的资源导致您的 Google Cloud 账号产生额外的持续费用,请删除 Kubernetes 工作负载、TPU 节点池和 GKE 集群:
删除 vLLM 服务器 Deployment 和 Hugging Face Secret:
删除 TPU v6e 节点池和 GKE 集群:
返回到第二个终端会话,然后停止端口转发。
后续步骤
- 详细了解 vLLM TorchTPU。
- 详细了解 Cloud TPU。