本教學課程會說明如何在 Google Cloud的單一主機、多 GPU Google Kubernetes Engine (GKE) 叢集上,微調 Gemma 4 大型語言模型 (LLM)。這個叢集使用單一 A4 虛擬機器 (VM) 執行個體,並附加 8 個 NVIDIA B200 GPU。
本教學課程主要說明以下兩個程序:
- 使用 GKE Autopilot 部署高效能 GKE 叢集。在此部署作業中,您會建立自訂 VM 映像檔,並預先安裝必要軟體。
- 叢集部署完成後,請使用本教學課程隨附的指令碼集,執行分散式微調工作。這項工作會運用 Hugging Face Accelerate 程式庫。
本教學課程適用於機器學習 (ML) 工程師、研究人員、平台管理員和營運人員,以及有興趣在 Google Cloud 部署 GKE 叢集來訓練 LLM 的資料和 AI 專家。
目標
使用 Hugging Face 存取 Gemma 4 模型。
準備環境。
建立及部署 A4 GKE 叢集。
使用 Hugging Face Accelerate 程式庫和完全分片資料平行 (FSDP),微調 Gemma 4 模型。
監控工作。
清除所用資源。
費用
在本文件中,您將使用下列 Google Cloud計費元件:
如要根據預測用量估算費用,請使用 Pricing Calculator。
事前準備
啟用必要的 API (如有尚未啟用的 API):
啟用 API 時所需的角色
如要啟用 API,您必須具備
serviceusage.services.enable權限。如果您建立了專案,可能已透過「擁有者」角色 (roles/owner) 取得這項權限。否則,您可以透過「服務使用管理員」角色 (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 登入功能:
gcloud compute project-info add-metadata \ --metadata=enable-oslogin=TRUE \ --project=YOUR_PROJECT_ID
如要取得完成本教學課程所需的權限,請要求管理員在專案中授予您下列 IAM 角色:
- Kubernetes Engine 管理員 (
roles/container.admin) - Compute 管理員 (
roles/compute.admin) - 儲存空間管理員 (
roles/storage.admin) - Artifact Registry 管理員 (
roles/artifactregistry.admin) - Cloud Build 編輯者 (
roles/cloudbuild.builds.editor) - 服務帳戶使用者 (
roles/iam.serviceAccountUser) - 服務帳戶管理員 (
roles/iam.serviceAccountAdmin) - 專案 IAM 管理員 (
roles/resourcemanager.projectIamAdmin) - 服務使用情形管理員 (
roles/serviceusage.serviceUsageAdmin)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
使用 Hugging Face 存取 Gemma 4
如要使用 Hugging Face 存取 Gemma 4,請按照下列步驟操作:
- 登入 Hugging Face
- 建立 Hugging Face
write存取權杖。
依序點按「你的個人資料」>「設定」>「存取權杖」>「+ 建立新權杖」。 - 複製並儲存
write access權杖值。您會在後續步驟中使用此 ID。
準備環境
如要準備環境,請設定下列項目:
更改下列內容:
YOUR_PROJECT_ID:您要在 Google Cloud 專案中建立 GKE 叢集,請輸入該專案的 ID。
YOUR_CLUSTER_NAME:要建立的 GKE 叢集名稱。
YOUR_REGION:要建立 GKE 叢集的區域。您只能在預留項目所在的區域建立叢集。
YOUR_RESERVATION_NAME:預留容量的 ID。
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 clusters」(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 執行後,請檢查工作的記錄:
工作資源會下載模型資料,然後在所有八個 GPU 中微調模型。下載程序大約需要五分鐘才會完成。 下載完成後,微調程序大約需要兩小時 30 分鐘才能完成。
監控工作負載
您可以監控 GKE 叢集中的 GPU 使用情形,確認微調作業是否有效率地執行。如要這麼做,請在瀏覽器中開啟下列連結:
監控工作負載時,您可以查看下列資訊:
- GPU 使用率:如果微調工作運作正常,您應該會看到 8 個 GPU 的使用率在訓練期間內上升並穩定維持在高檔。
- 工作時間:這項工作大約需要 2 小時 30 分鐘,才能在指定的 A4 叢集上完成。
清除所用資源
為避免產生額外費用,請刪除在本教學課程中建立的資源。
刪除資源
如要刪除微調作業,請執行下列指令:
如要刪除 GKE 叢集,請執行下列指令: