本教程介绍了如何使用单主机 TPU7x (Ironwood) 加速器和 vLLM TPU 服务框架(搭配 TorchTPU [torchtpu]),在 Google Kubernetes Engine (GKE) 上部署和应用混合专家模型 Qwen3.5-397B (Qwen/Qwen3.5-397B-A17B-FP8)。由于 Qwen3.5-397B 至少需要四个 TPU7x 芯片,因此您可以在启用数据并行和专家并行的 2x2x1 拓扑中的单个 tpu7x-standard-4t 节点上运行工作负载。
目标
- 设置 GKE 集群和单主机 TPU7x 节点池。
- 在 GKE 上部署单主机 vLLM TorchTPU 服务器。
- 向 vLLM TorchTPU 服务器发送推理请求。
- 运行服务基准工作负载。
- 清理。
费用
在本文档中,您将使用Google Cloud的以下收费组件:
如需根据您的预计使用量来估算费用,请使用价格计算器。
完成本文档中描述的任务后,您可以通过删除所创建的资源来避免继续计费。如需了解详情,请参阅清理。
准备工作
您需要拥有 Hugging Face 访问令牌才能使用本教程。您可以在 Hugging Face 注册免费账号。拥有账号后,生成访问令牌:
- 在欢迎使用 Hugging Face 页面上,点击您的账号头像,然后选择访问令牌。
- 在访问令牌页面上,点击创建新令牌。
- 选择读取令牌类型,然后输入令牌名称。
- 系统会显示您的访问令牌。将令牌保存在安全的位置。
在 Google Cloud 项目中启用 Kubernetes Engine API:
在 Google Cloud 项目中启用 Artifact Registry API:
安装并初始化 Google Cloud CLI,然后安装
kubectl。如果您使用 Cloud Shell,则这两个工具均已预安装。确保您的项目在 TPU 容量所在的区域中有足够的 SSD 配额和外部 IP 地址配额:
在 Google Cloud 控制台中,前往配额和系统限制页面。
按永久性磁盘 SSD (GB) 进行过滤,并验证您是否有至少 1,500 GB 的可用配额用于模型缓存卷。
按正在使用的区域级外部 IPv4 地址进行过滤,并验证目标区域中是否有足够的 IP 地址配额。
如需获得完成本教程所需的权限,请让您的管理员为您授予项目的以下 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_REGION:您要在其中部署集群的区域,例如us-central1。YOUR_ZONE:您要部署 TPU7x 节点池的可用区,例如us-central1-c。YOUR_CLUSTER_NAME:GKE 集群的名称,例如tpu7x-tutorial-cluster。YOUR_RESERVATION_NAME:如果您使用的是预留,则为 TPU7x 预留的名称。YOUR_HF_TOKEN:您的 Hugging Face 访问令牌。YOUR_NETWORK_NAME:Google Cloud 网络的名称。如果您创建了自定义网络,请指定该网络。否则,请指定default。YOUR_SUBNETWORK_NAME:Google Cloud 子网的名称。如果您创建了自定义子网,请指定该子网。否则,请指定default。YOUR_VLLM_TPU_IMAGE:要使用的 vLLM TorchTPU 映像。如需了解公开映像,请参阅 vLLM TorchTPU 代码库。
创建 GKE 集群
如需在 Standard 模式下创建 GKE 集群并挂接单主机 TPU7x 节点池,请完成以下步骤:
创建区域级 GKE 集群:
输出类似于以下内容:
NAME LOCATION MASTER_VERSION MASTER_IP MACHINE_TYPE NODE_VERSION NUM_NODES STATUS tpu7x-tutorial-cluster us-central1 1.35.7-gke.1027000 34.63.222.246 n2-standard-16 1.35.7-gke.1027000 3 RUNNING使用预留创建一个具有一个
tpu7x-standard-4t节点(2x2x1拓扑中的四个 TPU7x 芯片)的单主机 TPU7x 节点池:您也可以不使用特定预留,而是通过传递以下标志,使用 Spot 容量或灵活启动型虚拟机创建节点池:
- Spot 虚拟机:将
--reservation-affinity和--reservation标志替换为--spot,以使用 Spot 容量。使用 Spot 容量的实例在节点池创建后可能需要一些时间才能创建,并且可能会在工作负载运行期间被抢占。如果您的 Pod 需要一段时间才能创建,或者工作负载在运行过程中停止,则可能是这个原因。 - 灵活启动型虚拟机:传递
--flex-start标志,以使用灵活启动使用选项预配节点池。如需了解详情,请参阅使用 TPU 和灵活启动虚拟机运行小型批量工作负载。
输出类似于以下内容:
NAME MACHINE_TYPE DISK_SIZE_GB NODE_VERSION np-0 tpu7x-standard-4t 100 1.35.7-gke.1027000- Spot 虚拟机:将
配置
kubectl凭据以与您的集群通信:
配置凭据
创建一个名为 hf-secret 的 Kubernetes Secret,用于存储您的 Hugging Face 访问令牌:
部署 vLLM TorchTPU 服务器
工作负载清单 (qwen3_5_server.yaml) 定义了以下资源:
- 一个 StorageClass (
hyperdisk-balanced-qwen3-5) 和一个 1,500 GiB PersistentVolumeClaim (hd-claim-qwen3-5),由 Google Cloud Hyperdisk Balanced 存储空间提供支持,用于存储下载的模型权重、XLA 编译缓存和 PyTorch 编译缓存。 - 在具有
2x2x1拓扑 (google.com/tpu: '4') 的单个 TPU7x 节点上调度的 Deployment (vllm-qwen3-5)。容器会针对Qwen/Qwen3.5-397B-A17B-FP8运行vllm serve,并使用--data-parallel-size=8、--tensor-parallel-size=1、--enable-expert-parallel、--kv-cache-dtype=fp8、--max-model-len=9236和--max-num-seqs=64。 - 一个公开端口
8000的ClusterIPService (vllm-qwen3-5-service)。
如需部署和监控工作负载,请完成以下步骤:
提取服务器清单:
或者,您也可以选择创建一个名为
qwen3_5_server.yaml的文件,其中包含以下内容:将 vLLM TorchTPU 服务器清单应用到您的集群:
监控服务器部署日志,直到应用启动完成:
在 Pod 下载模型权重并编译模型时,初始服务启动可能需要大约 20 到 30 分钟。
如果您使用的是 Spot 或灵活启动等抢占式容量,则在创建节点池后,TPU 切片节点可能需要更长时间才能创建,并且在工作负载运行期间可能会被抢占。如果 Pod 的启动时间超出预期,或者工作负载中途停止,则可能是这个原因。如需了解详情,请参阅抢占 Spot 虚拟机。如需检查 TPU 切片节点是否已创建,请参阅检查节点的状态和条件。
请等待日志报告
Application startup complete,然后再发送流量:(APIServer pid=1) INFO: Started server process [1] (APIServer pid=1) INFO: Waiting for application startup. (APIServer pid=1) INFO: Application startup complete.打开第二个终端会话。
在第二个终端会话中,将本地端口
8000转发到vllm-qwen3-5-service:让端口转发在此终端会话中保持运行。
发送推理请求
返回到第一个终端会话,然后向 /v1/chat/completions 端点发送对话补全请求:
运行基准工作负载
如需使用 InferenceX 基准套件,通过 8,192 个词元的输入和 1,024 个词元的输出 (8k/1k) 工作负载对已部署的 Qwen3.5 397B 模型进行基准测试,请完成以下步骤:
提取基准清单:
或者,创建一个名为
qwen3_5-benchmark-8k1k.yaml的文件,其中包含以下内容:应用基准 Pod 清单:
监控基准测试日志:
基准测试大约需要 25 到 30 分钟才能完成。
清理
为避免因本教程中使用的资源导致您的 Google Cloud 账号产生额外的持续费用,请删除 Kubernetes 工作负载、TPU 节点池和 GKE 集群:
删除 vLLM TorchTPU 服务器 Deployment、Service、PersistentVolumeClaim 和基准 Pod:
删除 TPU7x 节点池和 GKE 集群:
后续步骤
- 详细了解 Cloud TPU 上的 vLLM。
- 详细了解 TPU7x (Ironwood)。
- 详细了解 Cloud TPU。