使用 Cluster Toolkit 建立 AI 適用的 GKE 叢集

本文件說明如何建立 AI 最佳化 Google Kubernetes Engine (GKE) 叢集,並使用 A4X、A4、A3 Ultra、A3 Mega 和 A3 High (8 個 GPU) Compute Engine 執行個體,支援 AI 和機器學習工作負載。

A4X、A4、A3 Ultra、A3 Mega 和 A3 High (8 個 GPU) 機器系列可讓您執行大規模 AI/機器學習叢集,並提供指定工作負載位置、進階叢集維護控制項和拓撲感知調度等功能。詳情請參閱「叢集管理總覽」。

GKE 提供單一平台介面,可依貴機構的需求執行各種工作負載。這些工作負載包括高效能分散式預先訓練、模型微調、模型推論、應用程式服務和支援服務。GKE 可減輕管理多個平台的營運負擔。

選擇如何建立 AI 最佳化 GKE 叢集

下列叢集建立選項在叢集設定和工作負載排程方面,提供不同程度的便利性和彈性:

事前準備

開始之前,請確認您已執行下列工作:

  • 啟用 Google Kubernetes Engine API。
  • 啟用 Google Kubernetes Engine API
  • 如要使用 Google Cloud CLI 執行這項工作,請安裝並初始化 gcloud CLI。如果您先前已安裝 gcloud CLI,請執行 gcloud components update 指令,取得最新版本。較舊的 gcloud CLI 版本可能不支援執行本文中的指令。
  • 確認您具備建立及管理 GKE 叢集和相關聯服務帳戶的必要權限:
    • Kubernetes Engine 管理員 (roles/container.admin)
    • Compute 管理員 (roles/compute.admin)
    • 儲存空間管理員 (roles/storage.admin)
    • 專案 IAM 管理員 (roles/resourcemanager.projectIamAdmin)
    • 服務帳戶管理員 (roles/iam.serviceAccountAdmin)
    • 服務帳戶使用者 (roles/iam.serviceAccountUser)
    • 服務使用情形消費者 (roles/serviceusage.serviceUsageConsumer)
    • 角色管理員 (roles/iam.roleAdmin)
    • Secret Manager 密鑰版本管理員 (roles/secretmanager.secretVersionManager)
    • 如要使用單一專案預留項目:專案的 Compute 執行個體管理員 (v1) (roles/compute.instanceAdmin.v1)
    • 如要使用共用預留項目:擁有者專案和要使用預留項目的任何用戶專案,都必須具備 Compute 執行個體管理員 (v1) (roles/compute.instanceAdmin.v1) 角色

選擇用量方案並取得容量

如要取得容量,請完成下列步驟:

  1. 選擇計費方案:根據您取得及使用 GPU 資源的方式做出選擇。詳情請參閱「選擇使用方式」。

    如果是 GKE,選擇使用選項時,請考量下列額外資訊:

  2. 取得容量:取得容量的程序因用量選項而異。如要瞭解所選消耗選項的程序,請參閱「容量總覽」。

需求條件

AI 最佳化 GKE 叢集須符合下列規定:

  • 如要使用 A4X Max,請務必採用下列其中一個版本:

    • 如為 1.35 以上版本,請使用 GKE 1.35.0-gke.2745000 以上版本。
    • 如為 1.34,請使用 GKE 1.34.3-gke.1318000 以上版本。

    這些版本可確保 A4X Max 使用下列項目:

    • R580.95.05:A4X Max 的最低 GPU 驅動程式版本,預設為啟用。
    • Coherent Driver-based Memory Management (CDMM),預設為啟用。NVIDIA 建議 Kubernetes 叢集啟用這個模式,解決記憶體回報過高的問題。CDMM 可透過驅動程式 (而非作業系統) 管理 GPU 記憶體。這種做法可避免 OS 將 GPU 記憶體上線,並將 GPU 記憶體做為非統一記憶體存取 (NUMA) 節點,向 OS 公開。啟用 CDMM 時,不支援多實體 GPU。如要進一步瞭解 CDMM,請參閱「硬體和軟體支援」。
    • GPUDirect RDMA 和 MNNVL:建議啟用,讓 A4X Max 節點集區使用 A4X Max 的網路功能。
  • 如要使用 A4X,請務必採用下列其中一個版本:

    • 如為 1.33 以上版本,請使用 GKE 1.33.4-gke.1036000 以上版本。
    • 如果是 1.32,請使用 GKE 1.32.8-gke.1108000 以上版本。

    這些版本可確保 A4X 使用下列項目:

    • R580:A4X 的最低 GPU 驅動程式版本,預設為啟用。
    • Coherent Driver-based Memory Management (CDMM),預設為啟用。NVIDIA 建議 Kubernetes 叢集啟用這個模式,解決記憶體回報過高的問題。CDMM 可透過驅動程式 (而非作業系統) 管理 GPU 記憶體。這種做法可避免 OS 將 GPU 記憶體上線,並將 GPU 記憶體做為非統一記憶體存取 (NUMA) 節點,向 OS 公開。啟用 CDMM 時,不支援多實體 GPU。如要進一步瞭解 CDMM,請參閱「硬體和軟體支援」。
    • GPUDirect RDMA 和 MNNVL:建議啟用,讓 A4X 節點集區使用 A4X 的網路功能。
  • 請務必根據機型,使用最低 GPU 驅動程式版本:

    • A4X Max:A4X Max 裸機執行個體中的 GB300 GPU 至少需要 R580.95.05 GPU 驅動程式版本。請參閱前述的版本規定。
    • A4X:A4X 執行個體中的 GB200 GPU 至少需要 R580 GPU 驅動程式版本。請參閱前述的版本需求。
    • A4:A4 執行個體中的 B200 GPU 至少需要 R570 GPU 驅動程式版本。根據預設,GKE 會在所有 A4 節點上自動安裝這個驅動程式版本,這些節點必須執行 A4 所需的最低版本,即 1.32.1-gke.1729000 以上版本。
    • A3 Ultra:A3 Ultra 執行個體中的 H200 GPU 至少需要 R550 GPU 驅動程式版本,GKE 1.31 提供 latest 驅動程式版本。如果是 A3 Ultra,您必須使用 GKE 1.31 設定 gpu-driver-version=latest。如果是 GKE 1.31.5-gke.1169000 以上版本,GKE 預設會自動在 A3 Ultra 節點上安裝 R550 GPU 驅動程式版本。
    • A3 Mega 和 A3 High:所有支援的 GKE 版本中,預設 GPU 驅動程式版本都支援 A3 High 和 A3 Mega 執行個體中的 H100 GPU。您也可以設定 gpu-driver-version=latest,存取支援 GKE 版本中可用的新版正式版驅動程式。
  • 如果是 A3 Ultra 節點集區,磁碟類型必須設為 hyperdisk-balanced。

  • 如要使用 GPUDirect RDMA,請根據機型使用下列最低版本:

    • A4X Max:請參閱前述版本需求。
    • A4X:請參閱前述版本需求。
    • A4:使用 1.32.2-gke.1475000 以上版本。
    • A3 Ultra:使用 1.31.4-gke.1183000 以上版本。
  • 如要使用 GPUDirect-TCPXO (適用於 A3 Mega) 和 GPUDirect-TCPX (適用於 A3 High),請使用下列 GKE 版本:

    • A3 High:使用 1.34 之前的任何可用 GKE 版本。
    • A3 Mega:使用任何可用的 GKE 版本。
  • 如要使用 GPUDirect RDMA,GKE 節點必須使用 Container-Optimized OS 節點映像檔。不支援 Ubuntu 和 Windows 節點映像檔。

  • 您必須使用取決於預留項目的佈建模式,才能建立 A4X Max 和 A4X 叢集。不支援其他佈建模式。

使用 Cluster Toolkit 建立叢集

請按照下列操作說明,使用 Cluster Toolkit 建立叢集。本節將引導您完成叢集建立程序,確保專案遵循最佳做法,並符合 AI 最佳化 GKE 叢集的需求。本節也會說明如何使用 Terraform 佈建及管理部署作業的基礎架構。

A4X Max

  1. 啟動 Cloud Shell。雖然可以使用其他環境,但建議您使用 Cloud Shell,因為 Cluster Toolkit 的依附元件已預先安裝。如果不想使用 Cloud Shell,請按照操作說明安裝依附元件,準備其他環境。
  2. 安裝 Cluster Toolkit。

  3. 建立 Cloud Storage bucket 並啟用版本管理功能,以便儲存 Terraform 部署作業的狀態:

    gcloud storage buckets create gs://BUCKET_NAME \
        --default-storage-class=STANDARD \
        --project=PROJECT_ID \
        --location=COMPUTE_REGION_TERRAFORM_STATE \
        --uniform-bucket-level-access
    gcloud storage buckets update gs://BUCKET_NAME --versioning

    請替換下列變數:

    • BUCKET_NAME:新 Cloud Storage bucket 的名稱,必須符合 bucket 命名規定。
    • PROJECT_ID:您的 Google Cloud 專案 ID。
    • COMPUTE_REGION_TERRAFORM_STATE:要儲存 Terraform 部署作業狀態的運算區域。
  4. 在 GitHub 存放區的 examples/gke-a4x-max-bm/gke-a4x-max-bm-deployment.yaml 藍圖中,填寫 terraform_backend_defaults 和 vars 區段中的下列設定,以符合部署作業的特定值:

    • BUCKET:您在上一個步驟中建立的 Cloud Storage bucket 名稱。
    • PROJECT_ID:您的 Google Cloud 專案 ID。
    • DEPLOYMENT_NAME:部署作業的專屬名稱,長度必須介於 6 到 30 個字元之間。如果部署作業名稱在專案內重複,叢集建立作業就會失敗。預設值為 gke-a4x-max-bm。
    • REGION:叢集的運算區域。
    • ZONE:A4X Max 機器節點集區的運算可用區。這個可用區必須與預留項目中可用的機器所在可用區相符。
    • STATIC_NODE_COUNT:叢集節點集區中的 A4X Max 節點數量,必須為 18 個節點以下。建議您使用 18 個節點,透過 NVLink 網域在一個子區塊中取得 1x72 的 GPU 拓撲。
    • AUTHORIZED_CIDR:要允許連線至叢集的 IP 位址範圍。這個 CIDR 區塊必須包含呼叫 Terraform 的機器 IP 位址。詳情請參閱「授權網路的運作方式」。
    • 在 reservation 欄位中,請根據您在佈建節點集區時,是否要指定預留項目中的特定區塊,使用下列其中一項:

    • 如要將節點集區放在預留項目中的任何位置,請提供預留項目的名稱 (RESERVATION_NAME)。

    • 如要指定預訂中的特定區塊,請使用下列格式的預訂和區塊名稱:

      RESERVATION_NAME/reservationBlocks/BLOCK_NAME
      

      如果您不清楚預留項目有哪些可用區塊,請參閱「查看預留項目的拓撲」。

    • RESERVATION_PROJECT_ID:具備預留項目的 Google Cloud專案 ID。預留項目可能位於 PROJECT_ID 以外的專案。

    • NUM_NODE_POOLS:要在叢集中啟用的節點集區數量。如要建立超過 18 個節點的叢集,可以指定多個節點集區。預設值為 1。

    如要修改進階設定,請編輯 examples/gke-a4x-max-bm/gke-a4x-max-bm.yaml 藍圖檔案。

  5. 產生應用程式預設憑證 (ADC),提供 Terraform 存取權。如果您使用的是 Cloud Shell,請使用 gcloud auth application-default login 指令:

    gcloud auth application-default login
    
  6. 使用 gcluster deploy 指令部署藍圖,並使用 A4X Max 機型佈建 GKE 基礎架構:

    cd ~/cluster-toolkit
    ./gcluster deploy -d \
        examples/gke-a4x-max-bm/gke-a4x-max-bm-deployment.yaml \
        examples/gke-a4x-max-bm/gke-a4x-max-bm.yaml
    
  7. 出現提示時,選取「(A)pply」部署藍圖。

    • 藍圖會建立虛擬私有雲網路、GPU RDMA 虛擬私有雲網路、服務帳戶、叢集和節點集區。
    • 為支援藍圖中的 fio-bench-job-template 工作範本,系統會建立Google Cloud bucket、網路儲存空間和永久磁碟區資源。

A4X

  1. 啟動 Cloud Shell。雖然可以使用其他環境,但建議您使用 Cloud Shell,因為 Cluster Toolkit 的依附元件已預先安裝。如果不想使用 Cloud Shell,請按照操作說明安裝依附元件,準備其他環境。
  2. 安裝 Cluster Toolkit。

  3. 建立 Cloud Storage bucket 並啟用版本管理功能,以便儲存 Terraform 部署作業的狀態:

    gcloud storage buckets create gs://BUCKET_NAME \
        --default-storage-class=STANDARD \
        --project=PROJECT_ID \
        --location=COMPUTE_REGION_TERRAFORM_STATE \
        --uniform-bucket-level-access
    gcloud storage buckets update gs://BUCKET_NAME --versioning

    請替換下列變數:

    • BUCKET_NAME:新 Cloud Storage bucket 的名稱,必須符合 bucket 命名規定。
    • PROJECT_ID:您的 Google Cloud 專案 ID。
    • COMPUTE_REGION_TERRAFORM_STATE:要儲存 Terraform 部署作業狀態的運算區域。
  4. 在 GitHub 存放區的 examples/gke-a4x/gke-a4x-deployment.yaml 藍圖中,填寫 terraform_backend_defaults 和 vars 區段中的下列設定,以符合部署作業的特定值:

    • BUCKET:您在上一個步驟中建立的 Cloud Storage bucket 名稱。
    • PROJECT_ID:您的 Google Cloud 專案 ID。
    • DEPLOYMENT_NAME:部署作業的專屬名稱,長度必須介於 6 到 30 個字元之間。如果部署作業名稱在專案內重複,叢集建立作業就會失敗。預設值為 gke-a4x。
    • REGION:叢集的運算區域。
    • ZONE:A4X 機器節點集區的運算可用區。這個可用區必須與預留項目中可用的機器所在可用區相符。
    • STATIC_NODE_COUNT:叢集節點集區中的 A4X 節點數量,必須為 18 個節點以下。建議您使用 18 個節點,透過 NVLink 網域在一個子區塊中取得 1x72 的 GPU 拓撲。
    • AUTHORIZED_CIDR:要允許連線至叢集的 IP 位址範圍。這個 CIDR 區塊必須包含呼叫 Terraform 的機器 IP 位址。詳情請參閱「授權網路的運作方式」。
    • 在 reservation 欄位中,請根據您在佈建節點集區時,是否要指定預留項目中的特定區塊,使用下列其中一項:

    • 如要將節點集區放在預留項目中的任何位置,請提供預留項目的名稱 (RESERVATION_NAME)。

    • 如要指定預訂中的特定區塊,請使用下列格式的預訂和區塊名稱:

      RESERVATION_NAME/reservationBlocks/BLOCK_NAME
      

      如果您不清楚預留項目有哪些可用區塊,請參閱「查看預留項目的拓撲」。

    • RESERVATION_PROJECT_ID:具備預留項目的 Google Cloud專案 ID。預留項目可能位於 PROJECT_ID 以外的專案。

    • NUM_NODE_POOLS:要在叢集中啟用的節點集區數量。如要建立超過 18 個節點的叢集,可以指定多個節點集區。預設值為 1。

    如要修改進階設定,請編輯 examples/gke-a4x/gke-a4x.yaml 藍圖檔案。

  5. 產生應用程式預設憑證 (ADC),提供 Terraform 存取權。如果您使用的是 Cloud Shell,請使用 gcloud auth application-default login 指令:

    gcloud auth application-default login
    
  6. 使用 gcluster deploy 指令部署藍圖,並使用 A4X 機器類型佈建 GKE 基礎架構:

    cd ~/cluster-toolkit
    ./gcluster deploy -d \
        examples/gke-a4x/gke-a4x-deployment.yaml \
        examples/gke-a4x/gke-a4x.yaml
    
  7. 出現提示時,選取「(A)pply」部署藍圖。

    • 藍圖會建立虛擬私有雲網路、GPU RDMA 虛擬私有雲網路、服務帳戶、叢集和節點集區。
    • 為支援藍圖中的 fio-bench-job-template 工作範本,系統會建立Google Cloud bucket、網路儲存空間和永久磁碟區資源。

A4

  1. 啟動 Cloud Shell。雖然可以使用其他環境,但建議您使用 Cloud Shell,因為 Cluster Toolkit 的依附元件已預先安裝。如果不想使用 Cloud Shell,請按照操作說明安裝依附元件,準備其他環境。
  2. 安裝 Cluster Toolkit。

  3. 建立 Cloud Storage bucket 並啟用版本管理功能,以便儲存 Terraform 部署作業的狀態:

    gcloud storage buckets create gs://BUCKET_NAME \
        --default-storage-class=STANDARD \
        --project=PROJECT_ID \
        --location=COMPUTE_REGION_TERRAFORM_STATE \
        --uniform-bucket-level-access
    gcloud storage buckets update gs://BUCKET_NAME --versioning

    請替換下列變數:

    • BUCKET_NAME:新 Cloud Storage bucket 的名稱,必須符合 bucket 命名規定。
    • PROJECT_ID:您的 Google Cloud 專案 ID。
    • COMPUTE_REGION_TERRAFORM_STATE:要儲存 Terraform 部署作業狀態的運算區域。
  4. 選擇 GKE 部署作業的使用選項:

    根據預設,部署檔案會設為使用特定預留項目。如要使用其他計費模式 (例如 Spot VM 或彈性啟動佈建模式),請更新 Deployment YAML 檔案。詳情請參閱「GKE 使用選項」。

  5. 在 GitHub 存放區的 examples/gke-a4/gke-a4-deployment.yaml 藍圖中,填寫 terraform_backend_defaults 和 vars 區段中的下列設定,以符合部署作業的特定值:

    • BUCKET:您在上一個步驟中建立的 Cloud Storage bucket 名稱。
    • PROJECT_ID:您的 Google Cloud 專案 ID。
    • DEPLOYMENT_NAME:部署作業的專屬名稱,長度必須介於 6 到 30 個字元之間。如果部署作業名稱在專案內重複,叢集建立作業就會失敗。預設值為 gke-a4。
    • REGION:叢集的運算區域。
    • ZONE:A4 機器節點集區的運算可用區。這個可用區必須與預留項目中可用的機器所在可用區相符。
    • AUTHORIZED_CIDR:要允許連線至叢集的 IP 位址範圍。這個 CIDR 區塊必須包含呼叫 Terraform 的機器 IP 位址。詳情請參閱「授權網路的運作方式」。
    • 在特定預留項目部分,進行下列設定:
    • 在 reservation_affinity 區塊的 specific_reservations 清單中,指定預留項目 name 欄位:

      • 如要將節點集區放在預留項目中的任何位置,請提供預留項目的名稱 (RESERVATION_NAME)。
      • 如要指定預訂中的特定區塊,請使用下列格式的預訂和區塊名稱:
      RESERVATION_NAME/reservationBlocks/BLOCK_NAME
      

      如果您不清楚預留項目有哪些可用區塊,請參閱「查看預留項目的拓撲」。

    • STATIC_NODE_COUNT:叢集中的 A4 節點數量。

    如要修改進階設定,請編輯 examples/gke-a4/gke-a4.yaml 藍圖檔案。

  6. 產生應用程式預設憑證 (ADC),提供 Terraform 存取權。如果您使用的是 Cloud Shell,請使用 gcloud auth application-default login 指令:

    gcloud auth application-default login
    
  7. 使用 gcluster deploy 指令部署藍圖,並使用 A4 機器類型佈建 GKE 基礎架構:

    cd ~/cluster-toolkit
    ./gcluster deploy -d \
        examples/gke-a4/gke-a4-deployment.yaml \
        examples/gke-a4/gke-a4.yaml
    
  8. 出現提示時,選取「(A)pply」部署藍圖。

    • 藍圖會建立虛擬私有雲網路、GPU RDMA 虛擬私有雲網路、服務帳戶、叢集和節點集區。
    • 為支援藍圖中的 fio-bench-job-template 工作範本,系統會建立Google Cloud bucket、網路儲存空間和永久磁碟區資源。

A3 Ultra

  1. 啟動 Cloud Shell。雖然可以使用其他環境,但建議您使用 Cloud Shell,因為 Cluster Toolkit 的依附元件已預先安裝。如果不想使用 Cloud Shell,請按照操作說明安裝依附元件,準備其他環境。
  2. 安裝 Cluster Toolkit。

  3. 建立 Cloud Storage bucket 並啟用版本管理功能,以便儲存 Terraform 部署作業的狀態:

    gcloud storage buckets create gs://BUCKET_NAME \
        --default-storage-class=STANDARD \
        --project=PROJECT_ID \
        --location=COMPUTE_REGION_TERRAFORM_STATE \
        --uniform-bucket-level-access
    gcloud storage buckets update gs://BUCKET_NAME --versioning

    請替換下列變數:

    • BUCKET_NAME:新 Cloud Storage bucket 的名稱,必須符合 bucket 命名規定。
    • PROJECT_ID:您的 Google Cloud 專案 ID。
    • COMPUTE_REGION_TERRAFORM_STATE:要儲存 Terraform 部署作業狀態的運算區域。
  4. 選擇 GKE 部署作業的使用選項:

    根據預設,部署檔案會設為使用特定預留項目。如要使用其他計費模式 (例如 Spot VM 或彈性啟動佈建模式),請更新 Deployment YAML 檔案。詳情請參閱「GKE 使用選項」。

  5. 在 GitHub 存放區的 examples/gke-a3-ultragpu/gke-a3-ultragpu-deployment.yaml 藍圖中,填寫 terraform_backend_defaults 和 vars 區段中的下列設定,以符合部署作業的特定值:

    • BUCKET:您在上一個步驟中建立的 Cloud Storage bucket 名稱。
    • PROJECT_ID:您的 Google Cloud 專案 ID。
    • DEPLOYMENT_NAME:部署作業的專屬名稱,長度必須介於 6 到 30 個字元之間。如果部署作業名稱在專案內重複,叢集建立作業就會失敗。預設值為 gke-a3-ultragpu。
    • REGION:叢集的運算區域。
    • ZONE:A3 Ultra 機器節點集區的運算可用區。這個可用區必須與預留項目中可用的機器所在可用區相符。
    • AUTHORIZED_CIDR:要允許連線至叢集的 IP 位址範圍。這個 CIDR 區塊必須包含呼叫 Terraform 的機器 IP 位址。詳情請參閱「授權網路的運作方式」。
    • 在特定預留項目部分,進行下列設定:
    • 在 reservation_affinity 區塊的 specific_reservations 清單中,指定預留項目 name 欄位:

      • 如要將節點集區放在預留項目中的任何位置,請提供預留項目的名稱 (RESERVATION_NAME)。
      • 如要指定預訂中的特定區塊,請使用下列格式的預訂和區塊名稱:
      RESERVATION_NAME/reservationBlocks/BLOCK_NAME
      

      如果您不清楚預留項目有哪些可用區塊,請參閱「查看預留項目的拓撲」。

    • STATIC_NODE_COUNT:叢集中的 A3 Ultra 節點數量。

    如要修改進階設定,請編輯 examples/gke-a3-ultragpu/gke-a3-ultragpu.yaml 藍圖檔案。

  6. 產生應用程式預設憑證 (ADC),提供 Terraform 存取權。如果您使用的是 Cloud Shell,請使用 gcloud auth application-default login 指令:

    gcloud auth application-default login
    
  7. 使用 gcluster deploy 指令部署藍圖,並使用 A3 Ultra 機型佈建 GKE 基礎架構:

    cd ~/cluster-toolkit
    ./gcluster deploy -d \
        examples/gke-a3-ultragpu/gke-a3-ultragpu-deployment.yaml \
        examples/gke-a3-ultragpu/gke-a3-ultragpu.yaml
    
  8. 出現提示時,選取「(A)pply」部署藍圖。

    • 藍圖會建立虛擬私有雲網路、GPU RDMA 虛擬私有雲網路、服務帳戶、叢集和節點集區。
    • 為支援藍圖中的 fio-bench-job-template 工作範本,系統會建立Google Cloud bucket、網路儲存空間和永久磁碟區資源。

A3 Mega

  1. 啟動 Cloud Shell。雖然可以使用其他環境,但建議您使用 Cloud Shell,因為 Cluster Toolkit 的依附元件已預先安裝。如果不想使用 Cloud Shell,請按照安裝依附元件的操作說明,準備其他環境。
  2. 安裝 Cluster Toolkit。

  3. 建立 Cloud Storage bucket 並啟用版本管理功能,以便儲存 Terraform 部署作業的狀態:

    gcloud storage buckets create gs://BUCKET_NAME \
        --default-storage-class=STANDARD \
        --project=PROJECT_ID \
        --location=COMPUTE_REGION_TERRAFORM_STATE \
        --uniform-bucket-level-access
    gcloud storage buckets update gs://BUCKET_NAME --versioning

    請替換下列變數:

    • BUCKET_NAME:新 Cloud Storage bucket 的名稱,必須符合 bucket 命名規定。
    • PROJECT_ID:您的 Google Cloud 專案 ID。
    • COMPUTE_REGION_TERRAFORM_STATE:要儲存 Terraform 部署作業狀態的運算區域。
  4. 在 GitHub 存放區的 examples/gke-a3-megagpu/gke-a3-megagpu-deployment.yaml 藍圖中,替換 terraform_backend_defaults 和 vars 區段中的下列變數,以符合部署作業的特定值:

    • BUCKET:您在上一個步驟中建立的 Cloud Storage bucket 名稱。
    • DEPLOYMENT_NAME:部署作業的專屬名稱,長度必須介於 6 到 30 個字元之間。如果部署作業名稱在專案內重複,叢集建立作業就會失敗。
    • PROJECT_ID:您的 Google Cloud 專案 ID。
    • REGION:叢集的運算區域。
    • ZONE:A3 Mega 機器節點集區的運算可用區。這個可用區必須與預留項目中可用的機器所在可用區相符。
    • AUTHORIZED_CIDR:要允許連線至叢集的 IP 位址範圍。這個 CIDR 區塊必須包含呼叫 Terraform 的機器 IP 位址。詳情請參閱「授權網路的運作方式」。如要取得主機機器的 IP 位址,請執行 curl -s https://ifconfig.me 指令。
  5. 選擇 GKE 部署作業的使用選項:

    根據預設,部署檔案會設為使用標準或未來預留項目。如要使用其他計費模式 (例如隨選容量、Spot VM 或彈性啟動佈建模式),請更新 Deployment YAML 檔案。詳情請參閱「GKE 使用選項」。

    如要設定預留項目,請在特定預留項目區段中設定下列值:

    • 在 reservation_affinity 區塊的 specific_reservations 清單中,指定預留項目 name 欄位:
    • 如要將節點集區放在預留項目中的任何位置,請提供預留項目名稱 (RESERVATION_NAME)。
    • 如要指定預訂中的特定區塊,請使用下列格式的預訂和區塊名稱:

      RESERVATION_NAME/reservationBlocks/BLOCK_NAME
      

      如果您不清楚預留項目有哪些可用區塊,請參閱「查看預留項目的拓撲」。

    • STATIC_NODE_COUNT:叢集中的 A3 Mega 節點數量。

    如要修改進階設定,請從 GitHub 存放區編輯 examples/gke-a3-megagpu/gke-a3-megagpu.yaml 藍圖。

  6. 產生應用程式預設憑證 (ADC),提供 Terraform 存取權。如果您使用的是 Cloud Shell,請使用 gcloud auth application-default login 指令:

    gcloud auth application-default login
    
  7. 使用 gcluster deploy 指令部署藍圖,並使用 A3 Mega 機型佈建 GKE 基礎架構:

    cd ~/cluster-toolkit
    ./gcluster deploy -d \
        examples/gke-a3-megagpu/gke-a3-megagpu-deployment.yaml \
        examples/gke-a3-megagpu/gke-a3-megagpu.yaml
    
  8. 出現提示時,選取「(A)pply」部署藍圖。藍圖會建立虛擬私有雲網路、服務帳戶、叢集和節點集區。

A3 High

  1. 啟動 Cloud Shell。雖然可以使用其他環境,但建議您使用 Cloud Shell,因為 Cluster Toolkit 的依附元件已預先安裝。如果不想使用 Cloud Shell,請按照安裝依附元件的操作說明,準備其他環境。
  2. 安裝 Cluster Toolkit。

  3. 建立 Cloud Storage bucket 並啟用版本管理功能,以便儲存 Terraform 部署作業的狀態:

    gcloud storage buckets create gs://BUCKET_NAME \
        --default-storage-class=STANDARD \
        --project=PROJECT_ID \
        --location=COMPUTE_REGION_TERRAFORM_STATE \
        --uniform-bucket-level-access
    gcloud storage buckets update gs://BUCKET_NAME --versioning

    請替換下列變數:

    • BUCKET_NAME:新 Cloud Storage bucket 的名稱,必須符合 bucket 命名規定。
    • PROJECT_ID:您的 Google Cloud 專案 ID。
    • COMPUTE_REGION_TERRAFORM_STATE:要儲存 Terraform 部署作業狀態的運算區域。
  4. 在 GitHub 存放區的 examples/gke-a3-highgpu/gke-a3-highgpu-deployment.yaml 藍圖中,替換 terraform_backend_defaults 和 vars 區段中的下列變數,以符合部署作業的特定值:

    • BUCKET:您在上一個步驟中建立的 Cloud Storage bucket 名稱。
    • DEPLOYMENT_NAME:部署作業的專屬名稱,長度必須介於 6 到 30 個字元之間。如果部署作業名稱在專案內重複,叢集建立作業就會失敗。
    • PROJECT_ID:您的 Google Cloud 專案 ID。
    • REGION:叢集的運算區域。
    • ZONE:A3 High 機器節點集區的運算可用區。這個可用區必須與預留項目中可用的機器所在可用區相符。
    • AUTHORIZED_CIDR:要允許連線至叢集的 IP 位址範圍。這個 CIDR 區塊必須包含呼叫 Terraform 的機器 IP 位址。詳情請參閱「授權網路的運作方式」。如要取得主機機器的 IP 位址,請執行 curl -s https://ifconfig.me 指令。
  5. 選擇 GKE 部署作業的使用選項:

    根據預設,部署檔案會設為使用標準或未來預留項目。如要使用其他計費模式 (例如隨選容量、Spot VM 或彈性啟動佈建模式),請更新 Deployment YAML 檔案。詳情請參閱「GKE 使用選項」。

    如要設定預留項目,請在特定預留項目區段中設定下列值:

    • 在 reservation_affinity 區塊的 specific_reservations 清單中,指定預留項目 name 欄位:
    • 如要將節點集區放在預留項目中的任何位置,請提供預留項目名稱 (RESERVATION_NAME)。
    • 如要指定預訂中的特定區塊,請使用下列格式的預訂和區塊名稱:

      RESERVATION_NAME/reservationBlocks/BLOCK_NAME
      

      如果您不清楚預留項目有哪些可用區塊,請參閱「查看預留項目的拓撲」。

    • STATIC_NODE_COUNT:叢集中的 A3 High 節點數量。

    如要修改進階設定,請編輯 GitHub 存放區中的 examples/gke-a3-highgpu/gke-a3-highgpu.yaml 藍圖。

  6. 產生應用程式預設憑證 (ADC),提供 Terraform 存取權。如果您使用的是 Cloud Shell,請使用 gcloud auth application-default login 指令:

    gcloud auth application-default login
    
  7. 使用 gcluster deploy 指令部署藍圖,並使用 A3 High 機型佈建 GKE 基礎架構:

    cd ~/cluster-toolkit
    ./gcluster deploy -d \
        examples/gke-a3-highgpu/gke-a3-highgpu-deployment.yaml \
        examples/gke-a3-highgpu/gke-a3-highgpu.yaml
    
  8. 出現提示時,選取「(A)pply」部署藍圖。藍圖會建立虛擬私有雲網路、服務帳戶、叢集和節點集區。

執行 Dynamic Workload Scheduler 範例工作

如果您使用 Dynamic Workload Scheduler (彈性啟動或佇列式佈建) 佈建叢集,可以提交 Kubernetes 範例工作,驗證工作負載排程。

如要進一步瞭解 Dynamic Workload Scheduler 佈建模式,請參閱「Dynamic Workload Scheduler 彈性啟動與佇列式佈建」。

提交範例工作

選取與計費方案對應的分頁標籤:

彈性啟動

這項工作為選用,僅適用於使用彈性啟動佈建叢集的情況。設為彈性啟動的工作負載,必須在 Pod 規格中加入 cloud.google.com/gke-flex-start: "true" 節點選取器。

  1. 提交範例彈性啟動工作:

    kubectl apply -f examples/dws-sample-workloads/sample-job-flex.yaml
    
  2. 監控工作和 Pod 的狀態:

    kubectl get jobs
    kubectl describe job JOB_NAME
    kubectl get pods
    kubectl describe pod POD_NAME
    

    更改下列內容:

    • JOB_NAME:工作名稱。
    • POD_NAME:Pod 名稱。
  3. 工作完成後,請刪除工作資源:

    kubectl delete -f examples/dws-sample-workloads/sample-job-flex.yaml
    

佇列式佈建

這項工作為選用,只有在您使用佇列式佈建功能佈建叢集時才適用。如要將工作負載設為佇列式佈建,Pod 規格必須包含下列標籤和註解:

  • 標籤:kueue.x-k8s.io/queue-name: dws-local-queue
  • 註解: provreq.kueue.x-k8s.io/maxRunDurationSeconds: "MAX_RUN_DURATION"

詳情請參閱「佇列式佈建的工作負載資訊清單需求」。

  1. 提交範例佇列式佈建工作:

    kubectl apply -f examples/dws-sample-workloads/sample-job-flex-queue.yaml
    
  2. 監控工作和 Pod 的狀態:

    kubectl get jobs
    kubectl describe job JOB_NAME
    kubectl get pods
    kubectl describe pod POD_NAME
    

    更改下列內容:

    • JOB_NAME:工作名稱。
    • POD_NAME:Pod 名稱。
  3. 工作完成後,請刪除工作資源:

    kubectl delete -f examples/dws-sample-workloads/sample-job-flex-queue.yaml
    

測試網路效能

建議您驗證已佈建叢集的功能。請使用 NCCL 測試,也就是專為 Google 環境最佳化的 NVIDIA Collective Communications Library (NCCL) 測試。

執行可重現的基準測試

使用 Cluster Toolkit 建立叢集後,您可以按照 GitHub 提供的方案,在所選機器系列上重現大型機器學習開放模型的預先訓練基準。

每份食譜都會提供操作說明,協助您完成下列工作:

  • 準備環境。
  • 執行基準測試。
  • 分析基準測試結果。這項審查包含基準測試結果和詳細記錄,可供進一步分析。

如要查看所有可用於訓練和其他工作負載類型的方案,請前往 GPU 方案 GitHub 存放區。

清除 Cluster Toolkit 建立的資源

為避免系統針對本頁面使用的資源重複收費,請使用 gcluster destroy 指令,清除 Cluster Toolkit 佈建的資源,包括虛擬私有雲網路和 GKE 叢集:

   cd ~/cluster-toolkit
   ./gcluster destroy CLUSTER_NAME/

將 CLUSTER_NAME 替換為叢集名稱。如果是使用 Cluster Toolkit 建立的叢集,叢集名稱會依據 DEPLOYMENT_NAME 名稱而定。

後續步驟