本教程介绍如何使用 MaxText 和 Cluster Toolkit 在张量处理单元 (TPU) v6e-32 集群上运行多主机强化学习 (RL) 训练。您可以使用 Cluster Toolkit 执行多主机训练工作负载,并将结果导出为 Hugging Face 格式以供服务。
目标
- 安装 Cluster Toolkit 及其依赖项。
- 部署 Cluster Toolkit 集群。
- 将 Hugging Face 模型转换为 MaxText 格式。
- 在 TPU v6e 集群上运行强化学习训练工作负载。
- 将微调后的模型转换回 Hugging Face 格式以用于提供服务。
费用
在本文档中,您将使用 Google Cloud的以下收费组件:
如需根据您的预计使用量来估算费用,请使用价格计算器。
完成本文档中描述的任务后,您可以通过删除所创建的资源来避免继续计费。如需了解详情,请参阅清理。
准备工作
您需要拥有 Hugging Face 访问令牌才能使用本教程。您可以前往 Hugging Face 注册免费账号。拥有账号后,生成访问令牌:
- 在 Welcome to Hugging Face 页面上,点击您的账号头像,然后选择 Access tokens。
- 在访问令牌页面上,点击创建新令牌。
- 选择读取令牌类型,然后输入令牌的名称。
- 系统会显示您的访问令牌。将令牌保存在安全的位置。
- 在 Hugging Face 网站上,接受您计划训练的模型的许可协议。本教程使用模型
qwen3-30b-a3b。
如需获得完成本教程所需的权限,请让您的管理员为您授予项目的以下 IAM 角色:
- TPU Admin (
roles/tpu.admin) - Kubernetes Engine Admin (
roles/container.admin) - Compute Admin (
roles/compute.admin) - Storage Admin (
roles/storage.admin) - Service Account User (
roles/iam.serviceAccountUser) - Service Account Admin (
roles/iam.serviceAccountAdmin) - Project IAM Admin (
roles/resourcemanager.projectIamAdmin) - Service Usage Admin (
roles/serviceusage.serviceUsageAdmin)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
设置环境变量
设置环境变量:
替换以下内容:
- YOUR_PROJECT_ID:您的 Google Cloud 项目的 ID。
- YOUR_REGION:您要在其中部署集群的区域。
- YOUR_ZONE:您要在其中部署集群的可用区。
- YOUR_CLUSTER_NAME:Google Kubernetes Engine 集群的名称(最多 20 个字符)。
- YOUR_BUCKET_NAME:Cloud Storage 存储桶的全球唯一名称。
- YOUR_RESERVATION_NAME:预留的名称。
- YOUR_HF_TOKEN:您的 Hugging Face 访问令牌。
安装 Cluster Toolkit 依赖项
如需从 Linux 或 macOS 客户端或工作站完成本教程,请按照 Cluster Toolkit 文档中的安装依赖项中的相关步骤操作。
如果您使用的是 Cloud Shell,则可以跳过此部分。
安装 Cluster Toolkit
按照安装 Cluster Toolkit 中的说明,在当前工作目录中安装 Cluster Toolkit 的预构建软件包。
例如,您可以按如下方式下载并将软件包提取到当前工作目录中:
将软件包提取到当前工作目录中,可获得 gcluster 二进制文件和 examples/ 蓝图,您将在后续步骤中使用这些文件。
创建 Cluster Toolkit 集群
如需创建并部署包含 32 个 v6e TPU 芯片的 Cluster Toolkit 集群,请完成以下步骤:
创建 Cloud Storage 存储桶,请运行以下命令:
将 Cluster Toolkit 蓝图复制到当前工作目录:
默认情况下,集群节点池服务账号没有写入 Cloud Storage 存储桶所需的权限。如需允许节点池服务账号写入您的 Cloud Storage 存储桶,您必须向其授予
Storage Admin角色。如需授予此角色,请修改文件gke-tpu-v6e-advanced.yaml,方法是更新名为node_pool_service_account的service-account模块:使用
gcluster deploy命令,通过使用蓝图gke-tpu-v6e-advanced.yaml并使用--vars标志传递必需的变量来部署 Cluster Toolkit 集群:配置 Container Registry 身份验证,并向您的 GKE 服务账号授予 Storage Admin 角色 (
roles/storage.admin):
将模型转换为 MaxText 格式
如需以 MaxText 格式训练模型,您必须将其从 Hugging Face 格式转换为 MaxText 格式。
为简化后续命令,请使用
gcluster job config命令配置默认项目、集群和位置:使用
gcluster job submit命令将模型从 Hugging Face 格式转换为 MaxText 格式,并将其存储在您的 Cloud Storage 存储桶中:使用
gcluster job logs命令检查转换作业的状态:验证转换后的模型文件是否已在您的 Cloud Storage 存储桶中提供:
启动训练工作负载
转换流程完成后,启动 RL 训练工作负载:
如需查看训练作业的状态,请执行以下操作:
如需验证训练检查点是否已在 Cloud Storage 存储桶中生成,请执行以下操作:
将训练后的模型转换回 Hugging Face 格式
训练工作负载完成后,将模型转换回 Hugging Face 格式:
如需检查转换作业的状态,请执行以下操作:
如需验证训练后的 Hugging Face 模型权重和配置文件是否已存在于您的 Cloud Storage 存储桶中,请执行以下操作:
清理
为避免产生额外费用,请使用 gcluster destroy 命令删除在本教程中创建的资源:
后续步骤
- 如需详细了解 Cloud TPU,请参阅 Cloud TPU 简介。
- 如需详细了解
v6e-32TPU 的架构和配置,请参阅 TPU v6e。 - 如需详细了解 Cluster Toolkit,请参阅 Cluster Toolkit 概览。