本教程提供了一份分步指南,介绍了如何使用 MaxText 在 Cloud TPU 上对 Qwen3-14b 模型运行监督式微调 (SFT)。您将学习如何构建专用容器映像,使用加速处理套件 (XPK) 通过 Pathways 预配 Google Kubernetes Engine (GKE) 集群,以及执行多主机训练工作负载。
目标
- 了解如何构建针对训练后优化过的自定义 MaxText 容器映像。
- 使用 XPK 预配已启用 Pathways 的 GKE 集群。
- 将 Qwen3 14b 模型从 Hugging Face 格式转换为 MaxText 格式。
- 在 Cloud TPU 上运行多主机 SFT 训练工作负载。
- 将微调后的模型转换回 Hugging Face 格式以用于提供服务。
费用
在本文档中,您将使用 Google Cloud的以下收费组件:
- Google Kubernetes Engine
- Cloud TPU
- Cloud Storage
- Artifact Registry
- Compute Engine, for the temporary build virtual machine (VM)
如需根据您的预计使用情况来估算费用,请使用价格计算器。
完成本文档中描述的任务后,您可以通过删除所创建的资源来避免继续计费。如需了解详情,请参阅清理。
准备工作
- 验证您的用户账号或服务账号是否具有以下角色:
roles/compute.admin,以创建 build 虚拟机roles/artifactregistry.admin,以管理 Docker 制品库roles/storage.admin,用于管理数据存储桶roles/container.admin,用于创建和管理 Google Kubernetes Engine 集群roles/iam.serviceAccountAdmin,用于创建工作负载服务账号roles/resourcemanager.projectIamAdmin,以设置 Identity and Access Management (IAM) 政策roles/iam.serviceAccountUser,以充当服务账号
- 安装并初始化 Google Cloud CLI。
- 验证您是否已在工作站上安装 Python 3.12 或更高版本。
您需要拥有 Hugging Face 访问令牌才能使用本教程。您可以在 Hugging Face 上注册免费账号。拥有账号后,生成访问令牌:
- 在 Welcome to Hugging Face 页面上,点击您的账号头像,然后选择 Access tokens。
- 在访问令牌页面上,点击创建新令牌。
- 选择读取令牌类型,然后输入令牌的名称。
- 系统会显示您的访问令牌。将令牌保存在安全的位置。
设置环境
运行以下脚本来设置环境变量:
替换以下内容:
- YOUR_PROJECT_ID:您的 Google Cloud 项目 ID
- YOUR_REGION:您要使用的区域
- YOUR_ZONE:您要使用的可用区
- YOUR_CLUSTER_NAME:Google Kubernetes Engine 集群的名称
- YOUR_GCS_BUCKET:Cloud Storage 存储桶的唯一名称
- YOUR_RESERVATION_NAME:您的容量预留
- YOUR_HF_TOKEN:您的 Hugging Face 访问令牌
准备 MaxText 容器映像
如需准备 MaxText 容器映像(包括安装所需依赖项),请完成以下步骤:
创建 Cloud Storage 存储分区,请运行以下命令:
创建 Artifact Registry 代码库:
在代码库的根目录中创建一个名为
cloudbuild.yaml的文件,其中包含以下内容:使用 Cloud Build 构建 MaxText Docker 映像:
创建 Google Kubernetes Engine 集群
如需在 Qwen3 14b 模型上运行 SFT 训练,您需要配备 TPU 芯片的 Google Kubernetes Engine 集群。安装加速处理套件 (XPK),并创建支持 Pathways 的 GKE 集群。
准备模型以进行训练
使用基于 CPU 的工作负载将基础模型转换为 MaxText 格式。请勿在多台机器上并行运行此任务。以下命令包含一项检查,可确保转换仅在一个 TPU 节点上运行。
跟踪模型转换的进度
如需跟踪转换进度,请执行以下操作:
- 如需列出已在 GKE 集群上调度的 pod,请运行命令
kubectl get pod。 - 找到名为
qwen-hf-to-mt-slice-job-0-0-HASH的 pod。 - 如需实时检查 pod 的输出,请运行命令
kubectl logs -f POD_NAME。
启动训练工作负载
转换过程完成后,您可以使用 XPK 启动 SFT 微调工作负载。
监控训练工作负载
使用 XPK 命令行界面 (CLI) 监控工作负载的状态。
xpk workload list --cluster ${CLUSTER_NAME} --project ${PROJECT} --zone ${ZONE}
如需查看日志和 TPU 利用率,请使用 Google Cloud 控制台。您还可以通过运行以下命令来查看日志:
kubectl logs -f qwen-training-pathways-head-0-0-HASH
将 HASH 替换为 pod 名称中的数字哈希值。如需验证此哈希的值,请运行命令 kubectl get pod 并检查返回的 pod 列表。
将训练后的模型转换回 Hugging Face 格式
训练工作负载完成后,将检查点转换回 Hugging Face 格式。
如需跟踪转换进度,请运行命令 kubectl logs -f qwen-mt-to-hf-slice-job-0-0-HASH,并将 HASH 替换为 pod 名称中的数字哈希值。
转换完成后,存储在 gs://$GCS_BUCKET/qwen-3-14b/hf-trained/ 中的调优模型即可使用。
清理
为避免产生额外费用,请删除在本教程中创建的资源,包括您的 Google Kubernetes Engine 集群、Cloud Storage 存储桶和 Artifact Registry 代码库。
如需删除您为本教程创建的资源,请运行以下命令:
后续步骤
- 如需详细了解 Cloud TPU,请参阅 Cloud TPU 简介。
- 如需详细了解
v6e-32TPU 的架构和配置,请参阅 TPU v6e。