本教程介绍如何在 Gemma 4 Gemma 4 大语言模型 (LLM) Google Cloud。此集群使用单个 A4 虚拟机 (VM) 实例,并挂接了 8 个 NVIDIA B200 GPU。
本教程中介绍的两个主要流程如下:
- 使用 GKE Autopilot 部署高性能 GKE 集群。在此部署过程中,您将使用 Cloud Build 构建自定义容器映像,并预安装必要的软件。
- 部署集群后,您将运行一个微调作业,该作业使用完全分片数据并行 (FSDP) 在单个 A4 (
a4-highgpu-8g) 节点的所有 8 个 GPU 上对模型进行分片。该作业使用本教程附带的一组脚本,并利用 Hugging Face Accelerate 库。
本教程适用于机器学习 (ML) 工程师、研究人员、 平台管理员和运维人员,以及对在 Google Cloud 上部署 GKE 集群以训练 LLM 感兴趣的数据和 AI 专家。
目标
使用 Hugging Face 访问 Gemma 4 模型。
准备环境。
创建和部署 A4 GKE 集群。
使用 Hugging Face Accelerate 库和完全分片数据并行 (FSDP) 微调 Gemma 4 模型。
监控作业。
清理。
费用
在本文档中,您将使用的以下收费组件: Google Cloud
- Compute Engine
- Google Kubernetes Engine (GKE)
- Artifact Registry
- Cloud Build
- Cloud Storage
- Cloud Logging
如需根据您的预计使用量来估算费用,
请使用价格计算器。
准备工作
启用所需的 API(如果尚未启用):
启用 API 所需的角色
如需启用 API,您需要拥有
serviceusage.services.enable权限。如果您 创建了项目,则可能已通过 Owner 角色 (roles/owner) 拥有此权限。否则,您可以通过 Service Usage Admin 角色 (roles/serviceusage.serviceUsageAdmin) 获得此权限。 了解如何授予角色。gcloud services enable compute.googleapis.com
container.googleapis.com artifactregistry.googleapis.com cloudbuild.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/artifactregistry.writer" "roles/cloudbuild.builds.builder" "roles/logging.logWriter" "roles/monitoring.metricWriter" "roles/monitoring.viewer" "roles/stackdriver.resourceMetadata.writer" "roles/storage.objectViewer") for role in "${ROLES[@]}"; do gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \ --member="serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \ --role="${role}" 1>/dev/null done unset ROLES
如需验证是否已授予角色,请运行以下命令:
gcloud projects get-iam-policy YOUR_PROJECT_ID \ --flatten="bindings[].members" \ --filter="bindings.members:serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \ --format="table(bindings.role)"为您的用户账号创建本地身份验证凭证:
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。导出映像网址。您将在本教程的后续步骤中使用它:
启动微调工作负载
如需启动微调工作负载,请执行以下操作:
应用 finetune 清单以创建微调作业:
由于您使用的是 GKE Autopilot 模式下的集群,因此启动启用 GPU 的节点可能需要几分钟时间。
通过运行以下命令来监控作业:
Pod 运行后,检查作业的日志:
作业资源会下载模型数据,然后在所有 8 个 GPU 上对模型进行微调。下载大约需要 5 分钟才能完成。 下载完成后,微调过程大约需要 45 分钟才能完成。该作业每 20 步保存一个检查点,并将微调的低秩适应 (LoRA) 适配器推送到名为
gemma-31b-text-to-sql的私有 Hugging Face 仓库。作业完成后,获取 Hugging Face 上微调模型的网址,然后在浏览器中打开该网址:
监控工作负载
您可以监控 GKE 集群中 GPU 的使用情况,以验证微调作业是否高效运行。为此,请在浏览器中打开以下链接:
监控工作负载时,您可以看到以下内容:
- GPU 使用情况:对于运行正常的微调作业,您应该会在整个训练过程中看到 所有 8 个 GPU 的使用率上升并稳定在高水平 。
- 作业时长:该作业应在大约 45 分钟内在指定的 A4 集群上 完成。
清理
为避免产生额外费用,请删除在本教程中创建的资源。
删除您的资源
如需删除微调作业,请运行以下命令:
如需删除 GKE 集群,请运行以下命令:
如需删除 Artifact Registry 代码库,请运行以下命令: