本教學課程會說明如何在 Google Cloud的多主機 GKE Autopilot 叢集上,微調 Gemma 3 大型語言模型 (LLM)。這個叢集使用兩個 A4 虛擬機器 (VM) 執行個體,總共配備 16 個 NVIDIA B200 GPU。
本教學課程說明的兩個主要程序如下:
- 使用 GKE Autopilot 部署高效能多主機 GKE 叢集。在此部署作業中,您會建立已預先安裝必要軟體的自訂 VM 映像檔。
- 叢集部署完成後,您可以使用本教學課程隨附的指令碼集,執行分散式微調工作。這項工作會運用 Hugging Face Accelerate 程式庫。
本教學課程適用於機器學習 (ML) 工程師、研究人員、平台管理員和營運人員,以及有興趣在 Google Cloud 部署 GKE 叢集來訓練大型語言模型的資料和 AI 專家。
目標
使用 Hugging Face 存取 Gemma 3 模型。
準備環境。
建立及部署 A4 GKE 叢集。
使用 Hugging Face Accelerate 程式庫和完全分片的資料平行 (FSDP),微調 Gemma 3 模型。
監控工作。
清除所用資源。
費用
在本文件中,您會使用下列 Google Cloud的計費元件:
如要根據預測用量估算費用,請使用 Pricing Calculator。
事前準備
- 登入 Google Cloud 帳戶。如果您是 Google Cloud新手,歡迎 建立帳戶,親自評估產品在實際工作環境中的成效。新客戶還能獲得價值 $300 美元的免費抵免額,可用於執行、測試及部署工作負載。
-
安裝 Google Cloud CLI。
-
若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。
-
執行下列指令,初始化 gcloud CLI:
gcloud init -
選取或建立專案所需的角色
- 選取專案:選取專案時,不需要具備特定 IAM 角色,只要您在專案中獲派角色,即可選取該專案。
-
建立專案:如要建立專案,您需要「專案建立者」角色 (
roles/resourcemanager.projectCreator),其中包含resourcemanager.projects.create權限。瞭解如何授予角色。
-
建立 Google Cloud 專案:
gcloud projects create PROJECT_ID
將
PROJECT_ID替換為您要建立的 Google Cloud 專案名稱。 -
選取您建立的 Google Cloud 專案:
gcloud config set project PROJECT_ID
將
PROJECT_ID替換為 Google Cloud 專案名稱。
啟用必要的 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 CLI。
-
若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。
-
執行下列指令,初始化 gcloud CLI:
gcloud init -
選取或建立專案所需的角色
- 選取專案:選取專案時,不需要具備特定 IAM 角色,只要您在專案中獲派角色,即可選取該專案。
-
建立專案:如要建立專案,您需要「專案建立者」角色 (
roles/resourcemanager.projectCreator),其中包含resourcemanager.projects.create權限。瞭解如何授予角色。
-
建立 Google Cloud 專案:
gcloud projects create PROJECT_ID
將
PROJECT_ID替換為您要建立的 Google Cloud 專案名稱。 -
選取您建立的 Google Cloud 專案:
gcloud config set project PROJECT_ID
將
PROJECT_ID替換為 Google Cloud 專案名稱。
啟用必要的 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 -
將角色授予使用者帳戶。針對下列每個 IAM 角色,執行一次下列指令:
roles/compute.admin, roles/iam.serviceAccountUser, roles/cloudbuild.builds.editor, roles/artifactregistry.admin, roles/storage.admin, roles/serviceusage.serviceUsageAdmingcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
更改下列內容:
PROJECT_ID:專案 ID。USER_IDENTIFIER:使用者帳戶的 ID。 例如:myemail@example.com。ROLE:授予使用者帳戶的 IAM 角色。
- 為 Google Cloud 專案啟用預設服務帳戶:
export PROJECT_NUMBER="$(gcloud projects describe "PROJECT_ID" --format "value(project_number)")" gcloud iam service-accounts enable "${PROJECT_NUMBER}-compute@developer.gserviceaccount.com \ --project=PROJECT_ID
- 將編輯者角色 (
roles/editor) 授予預設服務帳戶:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --role=roles/editor
- 為使用者帳戶建立本機驗證憑證:
gcloud auth application-default login
- 為專案啟用 OS 登入功能:
gcloud compute project-info add-metadata --metadata=enable-oslogin=TRUE
- 登入或建立 Hugging Face 帳戶。
使用 Hugging Face 存取 Gemma 3
如要使用 Hugging Face 存取 Gemma 3,請按照下列步驟操作:
- 登入 Hugging Face
- 建立 Hugging Face
write存取權杖。
依序點按「你的個人資料」>「設定」>「存取權杖」>「+ 建立新權杖」。 - 複製並儲存
write access權杖值。本教學課程稍後會用到這項資訊。
準備環境
如要準備環境,請設定下列項目:
更改下列內容:
PROJECT_ID:要在其中建立 GKE 叢集的 Google Cloud 專案名稱。
CLUSTER_NAME:要建立的 GKE 叢集名稱。
CLUSTER_REGION:要建立 GKE 叢集的區域。您只能在預訂項目所在的區域建立叢集。
RESERVATION:預留容量的 ID。
HF_TOKEN:您在上一個部分中建立的 Hugging Face 存取權杖。
ARTIFACT_REPO_LOCATION:要建立 Artifact Registry 存放區的位置。
NUM_NODES:您希望 GKE 叢集擁有的節點數量。
NETWORK:要使用的網路。
在 Autopilot 模式中建立多主機 GKE 叢集
在 Autopilot 模式中建立多主機 GKE 叢集:
建立 GKE 叢集可能需要一段時間才能完成。如要確認 Google Cloud 已完成叢集建立作業,請前往 Google Cloud 控制台的「Kubernetes clusters」(Kubernetes 叢集) 頁面。
取得 GKE 叢集的憑證
執行下列指令,設定 kubectl 與新建立的 GKE 叢集通訊:
建立 Hugging Face 憑證的 Kubernetes Secret
如要為 Hugging Face 憑證建立 Kubernetes Secret,請按照下列步驟操作:
設定
kubectl,與 GKE 叢集通訊:建立 Kubernetes 密鑰,儲存 Hugging Face 權杖:
準備工作負載
如要準備工作負載,請執行下列操作:
建立工作負載指令碼
如要建立微調工作負載使用的指令碼,請按照下列步驟操作:
建立工作負載指令碼的目錄。使用這個目錄做為工作目錄。
建立
cloudbuild.yaml檔案,以便使用 Google Cloud Build。這個檔案會建立工作負載容器,並儲存在 Artifact Registry 中:建立
Dockerfile檔案來定義環境,並安裝完成微調作業所需的依附元件:建立
accel_fsdp_gemma3_config.yaml檔案。這個設定檔會指示 Hugging Face Accelerate 將微調工作分散到多個 GPU。建立
finetune.yaml檔案:建立
finetune.py檔案:
使用 Docker 和 Cloud Build 建立微調容器
建立 Artifact Registry Docker 存放區:
安裝 JobSet 自訂資源定義 (CRD),以便協調多主機工作負載。
JobSet 是 Kubernetes 擴充功能,可用於管理相關工作群組。如要進一步瞭解 JobSet,請參閱外部的 JobSet 說明文件。
在您於先前步驟中建立的
llm-finetuning-gemma目錄中,執行下列指令來建立微調映像檔,並將其推送至 Artifact Registry。匯出圖片網址。您會在後續步驟中使用這項資訊:
啟動微調工作負載
如要啟動微調工作負載,請執行下列步驟:
套用微調資訊清單,建立微調作業:
由於您在 GKE Autopilot 模式中使用叢集,因此啟用 GPU 的節點可能需要幾分鐘才能啟動。
執行下列指令來監控作業:
執行下列指令,檢查主要工作站 Pod 的記錄:
工作資源會下載模型資料,然後在所有八個 GPU 中微調模型。下載作業大約需要五分鐘才會完成。 下載完成後,微調程序約需 2 小時 30 分鐘才能完成。
監控工作負載
您可以監控 GKE 叢集中的 GPU 使用情形,確認微調作業是否有效率地執行。如要這麼做,請在瀏覽器中開啟下列連結:
監控工作負載時,您可以查看下列資訊:
- GPU 使用量:如果微調工作運作正常,您應該會看到所有 8 個 GPU 的使用量在訓練期間上升並穩定維持在高檔。
- 工作時間:這項工作大約需要 10 分鐘,才能在指定的 A4 叢集上完成。
清除所用資源
為避免因為本教學課程所用資源,導致系統向 Google Cloud 帳戶收取費用,請刪除含有相關資源的專案,或者保留專案但刪除個別資源。
刪除資源
如要刪除 JobSet,請執行下列指令:
如要刪除 GKE 叢集,請執行下列指令:
如要刪除 Artifact Registry 存放區,請執行下列指令:
刪除專案
刪除 Google Cloud 專案:
gcloud projects delete PROJECT_ID