本教程介绍如何在 Google Cloud上的单主机、多 GPU Google Kubernetes Engine (GKE) 集群中微调 Gemma 4 大语言模型 (LLM)。此集群使用单个 A4 虚拟机 (VM) 实例,该实例挂接了 8 个 NVIDIA B200 GPU。
本教程中介绍的两个主要流程如下:
- 使用 GKE Autopilot 部署高性能 GKE 集群。在此部署过程中,您将创建一个预安装了必要软件的自定义虚拟机映像。
- 集群部署完毕后,您可以使用本教程随附的一组脚本来运行分布式微调作业。该作业利用了 Hugging Face Accelerate 库。
本教程适用于机器学习 (ML) 工程师、研究人员、平台管理员和运维人员,以及对在 Google Cloud 上部署 GKE 集群以训练 LLM 感兴趣的数据和 AI 专家。
目标
使用 Hugging Face 访问 Gemma 4 模型。
准备环境。
创建并部署 A4 GKE 集群。
使用 Hugging Face Accelerate 库和完全分片数据并行处理 (FSDP) 来微调 Gemma 4 模型。
监控作业。
清理。
费用
在本文档中,您将使用 Google Cloud的以下收费组件:
如需根据您的预计使用量来估算费用,请使用价格计算器。
准备工作
启用所需的 API(如果尚未启用):
启用 API 所需的角色
如需启用 API,您需要拥有
serviceusage.services.enable权限。如果您创建了项目,则可能已经通过 Owner 角色 (roles/owner) 拥有此权限。否则,您可以通过 Service Usage Admin 角色 (roles/serviceusage.serviceUsageAdmin) 获取此权限。了解如何授予角色。gcloud services enable compute.googleapis.com
container.googleapis.com file.googleapis.com logging.googleapis.com cloudresourcemanager.googleapis.com servicenetworking.googleapis.com 为您的 Google Cloud 项目启用默认服务账号:
export PROJECT_NUMBER="$(gcloud projects describe "YOUR_PROJECT_ID" --format "value(project_number)")" gcloud iam service-accounts enable "${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \ --project=YOUR_PROJECT_ID
授予默认服务账号运行微调工作负载所需的角色:
ROLES=("roles/aiplatform.user" "roles/container.developer" "roles/storage.objectUser") for role in "${ROLES[@]}"; do gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \ --member="serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \ --role="${role}" done unset ROLES
为您的用户账号创建本地身份验证凭据:
gcloud auth application-default login
为项目启用 OS Login:
gcloud compute project-info add-metadata \ --metadata=enable-oslogin=TRUE \ --project=YOUR_PROJECT_ID
如需获得完成本教程所需的权限,请让您的管理员为您授予项目的以下 IAM 角色:
- Kubernetes Engine Admin (
roles/container.admin) - Compute Admin (
roles/compute.admin) - Storage Admin (
roles/storage.admin) - Artifact Registry Administrator (
roles/artifactregistry.admin) - Cloud Build Editor (
roles/cloudbuild.builds.editor) - Service Account User (
roles/iam.serviceAccountUser) - Service Account Admin (
roles/iam.serviceAccountAdmin) - Project IAM Admin (
roles/resourcemanager.projectIamAdmin) - Service Usage Admin (
roles/serviceusage.serviceUsageAdmin)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
使用 Hugging Face 访问 Gemma 4
如需使用 Hugging Face 访问 Gemma 4,请执行以下操作:
- 登录 Hugging Face
- 创建 Hugging Face
write访问令牌。
依次点击您的个人资料 > 设置 > 访问令牌 > +创建新令牌 - 复制并保存
write access令牌值。您将在本教程的后面部分用到它。
准备环境
如需准备环境,请设置以下内容:
替换以下内容:
YOUR_PROJECT_ID:您要在其中创建 GKE 集群的 Google Cloud 项目的 ID。
YOUR_CLUSTER_NAME:要创建的 GKE 集群的名称。
YOUR_REGION:您要在其中创建 GKE 集群的区域。您只能在预留所在的区域中创建集群。
YOUR_RESERVATION_NAME:预留容量的标识符。
YOUR_HF_TOKEN:您在上一部分中创建的 Hugging Face 访问令牌。
YOUR_ARTIFACT_REGISTRY_LOCATION:您要在其中创建 Artifact Registry 代码库的 Google Cloud 区域。为最大限度缩短映像拉取延迟时间,建议您使用与 YOUR_REGION 相同的区域。
在 Autopilot 模式下创建 GKE 集群
如需在 Autopilot 模式下创建 GKE 集群,请运行以下命令:
创建 GKE 集群可能需要一些时间才能完成。如需验证 Google Cloud 是否已完成集群创建,请前往 Google Cloud 控制台中的 Kubernetes 集群。
为 Hugging Face 凭据创建 Kubernetes Secret
如需为 Hugging Face 凭据创建 Kubernetes Secret,请按以下步骤操作:
配置
kubectl以与您的 GKE 集群通信:创建一个 Kubernetes Secret 来存储您的 Hugging Face 令牌:
准备工作负载
如需准备工作负载,请执行以下操作:
创建工作负载脚本
如需创建微调工作负载使用的脚本,请执行以下操作:
为工作负载脚本创建目录。将此目录用作工作目录。
创建
cloudbuild.yaml文件以使用 Google Cloud Build。此文件会创建工作负载容器并将其存储在 Artifact Registry 中:创建一个
Dockerfile文件来执行微调作业:创建
accel_fsdp_gemma4_config.yaml文件。此配置文件指示 Hugging Face Accelerate 使用 FSDP 将调优作业拆分到单个宿主机上的八个本地 GPU 中:创建
finetune.yaml文件:创建
finetune.py文件:
使用 Docker 和 Cloud Build 创建微调容器
创建 Artifact Registry Docker 制品库:
在您之前步骤中创建的
llm-finetuning-gemma目录中,运行以下命令以创建微调映像并将其推送到 Artifact Registry。导出图片网址。您将在本教程的后续步骤中使用它:
启动微调工作负载
如需开始微调工作负载,请执行以下操作:
应用微调清单以创建微调作业:
由于您使用的是 GKE Autopilot 模式下的集群,因此启动启用 GPU 的节点可能需要几分钟时间。
运行以下命令来监控作业:
Pod 运行后,检查作业的日志:
作业资源会下载模型数据,然后在所有 8 个 GPU 上对模型进行微调。下载大约需要 5 分钟才能完成。 下载完成后,微调过程大约需要 2 小时 30 分钟才能完成。
监控工作负载
您可以监控 GKE 集群中 GPU 的使用情况,以验证微调作业是否高效运行。为此,请在浏览器中打开以下链接:
监控工作负载时,您可以看到以下内容:
- GPU 用量:对于运行良好的微调作业,您应该会看到所有 8 个 GPU 的用量在整个训练过程中上升并稳定在高水平。
- 作业时长:作业在指定的 A4 集群上大约需要 2 小时 30 分钟才能完成。
清理
为避免产生额外费用,请删除在本教程中创建的资源。
删除您的资源
如需删除微调作业,请运行以下命令:
如需删除 GKE 集群,请运行以下命令: