使用預設設定建立 AI 最佳化 GKE 叢集

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

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

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)

選擇用量方案並取得容量

  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 驅動程式版本,預設為啟用。
    • 預設會啟用以驅動程式為基礎的連貫記憶體管理 (CDMM)。NVIDIA 建議 Kubernetes 叢集啟用這個模式,以解決記憶體過度回報的問題。CDMM 可讓驅動程式管理 GPU 記憶體,而非作業系統 (OS)。這種做法可協助您避免 OS 線上化 GPU 記憶體,並將 GPU 記憶體公開為 OS 的非統一記憶體存取 (NUMA) 節點。啟用 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 驅動程式版本,預設為啟用。
    • 預設會啟用以驅動程式為基礎的連貫記憶體管理 (CDMM)。NVIDIA 建議 Kubernetes 叢集啟用這個模式,以解決記憶體過度回報的問題。CDMM 可讓驅動程式管理 GPU 記憶體,而非作業系統 (OS)。這種做法可協助您避免 OS 線上化 GPU 記憶體,並將 GPU 記憶體公開為 OS 的非統一記憶體存取 (NUMA) 節點。啟用 CDMM 時,系統不支援多實體 GPU。如要進一步瞭解 CDMM,請參閱「硬體和軟體支援」。
    • GPUDirect RDMA 和 MNNVL,建議啟用這些功能,讓 A4X 節點集區使用 A4X 的網路功能。
  • 請務必使用最低 GPU 驅動程式版本,視機器類型而定:

    • A4X Max:A4X Max 裸機執行個體中的 GB300 GPU 至少須使用 R580.95.05 GPU 驅動程式版本。請參閱先前提及的版本規定。
    • A4X:A4X 虛擬機器 (VM) 執行個體中的 GB200 GPU 至少需要 R580 GPU 驅動程式版本。請參閱先前提及的 版本規定。
    • A4:A4 VM 執行個體中的 B200 GPU 至少需要 R570 GPU 驅動程式版本。根據預設,GKE 會自動在所有執行 A4 最低必要版本 (1.32.1-gke.1729000 以上版本) 的 A4 節點上,安裝這個驅動程式版本。
    • A3 Ultra:A3 Ultra VM 執行個體中的 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 版本都支援 A3 High 和 A3 Mega VM 中的 H100 GPU,且預設 GPU 驅動程式版本適用於這些 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 ToolkitXPK 建立叢集。

使用 Cluster Toolkit 建立叢集

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

A4X Max

  1. 啟動 Cloud Shell。您可以使用其他環境,但我們建議使用 Cloud Shell,因為 Cluster Toolkit 的依附元件已預先安裝。如不想使用 Cloud Shell,請按照安裝依附元件的指示操作,準備其他環境。
  2. 從 Git 存放區複製 Cluster Toolkit:

    cd ~
    git clone https://github.com/GoogleCloudPlatform/cluster-toolkit.git
    
  3. 安裝 Cluster Toolkit:

    cd cluster-toolkit && git checkout main && make
    
  4. 建立已啟用版本控管的 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 部署作業狀態的運算區域。
  5. GitHub 存放區中的 examples/gke-a4x-max-bm/gke-a4x-max-bm-deployment.yaml 藍圖中,填入 terraform_backend_defaultsvars 區段中的下列設定,以符合部署作業的特定值:

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

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

        RESERVATION_NAME/reservationBlocks/BLOCK_NAME
        

      如要瞭解預訂中可用的區塊,請參閱「查看預訂拓撲」。

    • 為系統和 A4X Max 節點集區的每個節點設定開機磁碟大小。所需磁碟大小取決於用途。舉例來說,如果您使用磁碟做為快取,以減少重複提取映像檔的延遲時間,則可以設定較大的磁碟大小,以容納架構、模型或容器映像檔:

      • SYSTEM_NODE_POOL_DISK_SIZE_GB:系統節點集區中每個節點的開機磁碟大小。允許的最小磁碟大小為 10。預設值為 200
      • A4X_MAX_NODE_POOL_DISK_SIZE_GB:A4X Max 節點集區中每個節點的開機磁碟大小。允許的最小磁碟大小為 10。預設值為 100

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

  6. 產生應用程式預設憑證 (ADC),授予 Terraform 存取權。如果您使用 Cloud Shell,請登入並設定 ADC:

    gcloud auth application-default login
    
  7. 部署藍圖,使用 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
    
    
  8. 出現提示時,選取「(A)pply」(套用) 部署藍圖。

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

A4X

  1. 啟動 Cloud Shell。您可以使用其他環境,但我們建議使用 Cloud Shell,因為 Cluster Toolkit 的依附元件已預先安裝。如不想使用 Cloud Shell,請按照安裝依附元件的指示操作,準備其他環境。
  2. 從 Git 存放區複製 Cluster Toolkit:

    cd ~
    git clone https://github.com/GoogleCloudPlatform/cluster-toolkit.git
    
  3. 安裝 Cluster Toolkit:

    cd cluster-toolkit && git checkout main && make
    
  4. 建立已啟用版本控管的 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 部署作業狀態的運算區域。
  5. GitHub 存放區examples/gke-a4x/gke-a4x-deployment.yaml 藍圖中,填入 terraform_backend_defaultsvars 區段中的下列設定,以符合部署作業的特定值:

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

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

        RESERVATION_NAME/reservationBlocks/BLOCK_NAME
        

      如要瞭解預訂中可用的區塊,請參閱「查看預訂拓撲」。

    • 為系統和 A4X 節點集區的每個節點設定開機磁碟大小。所需磁碟大小取決於用途。舉例來說,如果您使用磁碟做為快取,以減少重複提取映像檔的延遲時間,則可以設定較大的磁碟大小,以容納架構、模型或容器映像檔:

      • SYSTEM_NODE_POOL_DISK_SIZE_GB:系統節點集區中每個節點的開機磁碟大小。允許的最小磁碟大小為 10。預設值為 200
      • A4X_NODE_POOL_DISK_SIZE_GB:A4X 節點集區中每個節點的開機磁碟大小。允許的最小磁碟大小為 10。預設值為 100

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

  6. 產生應用程式預設憑證 (ADC),授予 Terraform 存取權。如果您使用 Cloud Shell,請登入並設定 ADC:

    gcloud auth application-default login
    
  7. 部署藍圖,使用 A4X 機器類型佈建 GKE 基礎架構:

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

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

A4

  1. 啟動 Cloud Shell。您可以使用其他環境,但我們建議使用 Cloud Shell,因為 Cluster Toolkit 的依附元件已預先安裝。如不想使用 Cloud Shell,請按照安裝依附元件的指示操作,準備其他環境。
  2. 從 Git 存放區複製 Cluster Toolkit:

    cd ~
    git clone https://github.com/GoogleCloudPlatform/cluster-toolkit.git
    
  3. 安裝 Cluster Toolkit:

    cd cluster-toolkit && git checkout main && make
    
  4. 建立已啟用版本控管的 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 部署作業狀態的運算區域。
  5. 如要建立叢集,您需要編輯的檔案取決於部署作業使用的消耗選項。選取與用量選項的佈建模式對應的分頁。

    取決於預留項目

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

    • DEPLOYMENT_NAME:部署作業的專屬名稱,長度必須介於 6 到 30 個字元之間。如果部署名稱在專案內重複,叢集建立作業就會失敗。預設值為 gke-a4
    • BUCKET_NAME:您在上一個步驟中建立的 Cloud Storage bucket 名稱。
    • PROJECT_ID:您的 Google Cloud 專案 ID。
    • COMPUTE_REGION:叢集的運算區域。
    • COMPUTE_ZONE:A4 機器節點集區的運算可用區。請注意,這個可用區必須與預留項目中可用的機器所在可用區相符。
    • NODE_COUNT:叢集中的 A4 節點數量。
    • IP_ADDRESS/SUFFIX:允許連線至叢集的 IP 位址範圍。這個 CIDR 區塊必須包含您要用來呼叫 Terraform 的機器的 IP 位址。詳情請參閱「已獲授權的網路運作方式」。
    • 視您是否要在佈建節點集區時,指定保留項目中的特定區塊reservation 欄位可使用下列其中一個值:

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

        RESERVATION_NAME/reservationBlocks/BLOCK_NAME
        

      如要瞭解預訂中可用的區塊,請參閱「查看預訂拓撲」。

    • 為系統和 A4 節點集區的每個節點設定開機磁碟大小。所需磁碟大小取決於用途。舉例來說,如果您使用磁碟做為快取,以減少重複提取映像檔的延遲時間,則可以設定較大的磁碟大小,以容納架構、模型或容器映像檔:

      • SYSTEM_NODE_POOL_DISK_SIZE_GB:系統節點集區中每個節點的開機磁碟大小。允許的最小磁碟大小為 10。預設值為 100
      • A4_NODE_POOL_DISK_SIZE_GB:A4 節點集區中每個節點的開機磁碟大小。允許的最小磁碟大小為 10。預設值為 100

    如要修改進階設定,請編輯 examples/gke-a4/gke-a4.yaml

    彈性啟動

    1. GitHub 存放區examples/gke-a4/gke-a4-deployment.yaml 藍圖中,填入 terraform_backend_defaultsvars 區段中的下列設定,以符合部署作業的特定值:

      • DEPLOYMENT_NAME:部署作業的專屬名稱,長度必須介於 6 至 30 個字元之間。如果部署名稱在專案內重複,叢集建立作業就會失敗。預設值為 gke-a4
      • BUCKET_NAME:您在上一個步驟中建立的 Cloud Storage bucket 名稱。
      • PROJECT_ID:您的 Google Cloud 專案 ID。
      • COMPUTE_REGION:叢集的運算區域。
      • COMPUTE_ZONE:A4 機器的節點集區運算可用區。
      • 移除 static_node_count
      • IP_ADDRESS/SUFFIX:允許連線至叢集的 IP 位址範圍。這個 CIDR 區塊必須包含您要用於呼叫 Terraform 的機器的 IP 位址。詳情請參閱「授權網路的運作方式」。
      • 移除 reservation 欄位,並將該欄位替換為 enable_flex_start: true。如要使用佇列式佈建,請在下一行新增 enable_queued_provisioning: true。詳情請參閱「使用節點集區搭配彈性啟動和排隊佈建」。
      • 為系統和 A4 節點集區的每個節點設定開機磁碟大小。所需磁碟大小取決於用途。舉例來說,如果您使用磁碟做為快取,以減少重複提取映像檔的延遲時間,則可以設定較大的磁碟大小,以容納架構、模型或容器映像檔:

        • SYSTEM_NODE_POOL_DISK_SIZE_GB:系統節點集區中每個節點的開機磁碟大小。允許的最小磁碟大小為 10。預設值為 100
        • A4_NODE_POOL_DISK_SIZE_GB:A4 節點集區中每個節點的開機磁碟大小。允許的最小磁碟大小為 10。預設值為 100
    2. GitHub 存放區examples/gke-a4/gke-a4.yaml 藍圖中,進行下列變更:

      • vars 區塊中,移除 static_node_count
      • vars 區塊中,確認 version_prefix 號碼為 "1.32." 以上。如要在 GKE 中使用彈性啟動功能,叢集必須使用 1.32.2-gke.1652000 以上版本。
      • vars 區塊中,將整個 reservation 區塊 (包括 reservation 行本身) 替換為 enable_flex_start: true,並視需要替換為 enable_queued_provisioning: true
      • vars 區塊中,如果不需要排隊佈建,請移除以下程式碼: kueue_configuration_path: $(ghpc_stage("./kueue-configuration.yaml.tftpl"))
      • id: a4-pool 下方,移除以下程式碼行: static_node_count: $(vars.static_node_count)
      • id: a4-pool 下方移除 reservation_affinity 區塊。將這個區塊替換為下列程式碼行:

        • enable_flex_start: $(vars.enable_flex_start)
        • auto_repair: false
        • 如要啟用佇列佈建,請新增下列額外行:
          • enable_queued_provisioning: $(vars.enable_queued_provisioning)
          • autoscaling_total_min_nodes: 0
      • id: workload-manager-install 下方,移除下列程式碼區塊:

         kueue:
            install: true
            config_path: $(vars.kueue_configuration_path)
            config_template_vars:
               num_gpus: $(a3-ultragpu-pool.static_gpu_count)
               accelerator_type: $(vars.accelerator_type)
        
        • 如要使用彈性啟動搭配佈建佇列,請執行下列步驟:

          1. gpu_nominal_quota: NOMINAL_QUOTA 新增至 vars 區塊。gpu_nominal_quota 值用於設定 ClusterQueue 規格中的 GPU nominalQuota (請參閱下方的設定 ClusterQueue 步驟)。在本範例中,只有在 GPU 要求總和小於或等於 NOMINAL_QUOTA 值時,ClusterQueue 才會允許工作負載。如要進一步瞭解 ClusterQueue,請參閱下列 Kueue 叢集佇列文件

          2. kueue 區塊更新為以下內容:

            kueue:
               install: true
               config_path: $(vars.kueue_configuration_path)
               config_template_vars:
                  num_gpus: $(vars.gpu_nominal_quota)
            
          3. kueue-configuration.yaml.tftpl 檔案的內容替換成以下內容:

            apiVersion: kueue.x-k8s.io/v1beta1
            kind: ResourceFlavor
            metadata:
               name: "default-flavor"
            ---
            apiVersion: kueue.x-k8s.io/v1beta1
            kind: AdmissionCheck
            metadata:
               name: dws-prov
            spec:
               controllerName: kueue.x-k8s.io/provisioning-request
               parameters:
                  apiGroup: kueue.x-k8s.io
                  kind: ProvisioningRequestConfig
                  name: dws-config
            ---
            apiVersion: kueue.x-k8s.io/v1beta1
            kind: ProvisioningRequestConfig
            metadata:
               name: dws-config
            spec:
               provisioningClassName: queued-provisioning.gke.io
               managedResources:
               - nvidia.com/gpu
            ---
            apiVersion: kueue.x-k8s.io/v1beta1
            kind: ClusterQueue
            metadata:
               name: "dws-cluster-queue"
            spec:
               namespaceSelector: {}
               resourceGroups:
               - coveredResources: ["nvidia.com/gpu"]
                  flavors:
                  - name: "default-flavor"
                  resources:
                  - name: "nvidia.com/gpu"
                     nominalQuota: ${num_gpus}
               admissionChecks:
               - dws-prov
            ---
            apiVersion: kueue.x-k8s.io/v1beta1
            kind: LocalQueue
            metadata:
               namespace: "default"
               name: "dws-local-queue"
            spec:
               clusterQueue: "dws-cluster-queue"
            ---
            
      • id: job-template 下方,將 node_count 變數替換為 2

    Spot

    1. GitHub 存放區examples/gke-a4/gke-a4-deployment.yaml 藍圖中,填入 terraform_backend_defaultsvars 區段中的下列設定,以符合部署作業的特定值:

      • DEPLOYMENT_NAME:部署作業的專屬名稱,長度必須介於 6 至 30 個字元之間。如果部署名稱在專案內重複,叢集建立作業就會失敗。預設值為 gke-a4
      • BUCKET_NAME:您在上一個步驟中建立的 Cloud Storage bucket 名稱。
      • PROJECT_ID:您的 Google Cloud 專案 ID。
      • COMPUTE_REGION:叢集的運算區域。
      • COMPUTE_ZONE:A4 機器的節點集區運算可用區。
      • STATIC_NODE_COUNT:叢集中的 A4 節點數量。
      • IP_ADDRESS/SUFFIX:允許連線至叢集的 IP 位址範圍。這個 CIDR 區塊必須包含您要用來呼叫 Terraform 的機器 IP 位址。詳情請參閱「授權網路的運作方式」。
      • 將整個 reservation 區塊 (包括 reservation 行本身) 替換為 spot: true
      • 為系統和 A4 節點集區的每個節點設定開機磁碟大小。所需磁碟大小取決於用途。舉例來說,如果您使用磁碟做為快取,以減少重複提取映像檔的延遲時間,則可以設定較大的磁碟大小,以容納架構、模型或容器映像檔:

        • SYSTEM_NODE_POOL_DISK_SIZE_GB:系統節點集區中每個節點的開機磁碟大小。允許的最小磁碟大小為 10。預設值為 100
        • A4_NODE_POOL_DISK_SIZE_GB:A4 節點集區中每個節點的開機磁碟大小。允許的最小磁碟大小為 10。預設值為 100
    2. GitHub 存放區examples/gke-a4/gke-a4.yaml 藍圖中,進行下列變更:

      • vars 區塊中,將整個 reservation 區塊 (包括 reservation 行本身) 替換為 spot: true
      • id: a4-pool 下方移除 reservation_affinity 區塊。將這個區塊替換為下列程式碼行:

        • spot: $(vars.spot)
  6. 產生應用程式預設憑證 (ADC),授予 Terraform 存取權。如果您使用 Cloud Shell,請登入並設定 ADC:

    gcloud auth application-default login
    
  7. 部署藍圖,使用 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 buckets、網路儲存空間和永久磁碟區資源。

A3 Ultra

  1. 啟動 Cloud Shell。您可以使用其他環境,但我們建議使用 Cloud Shell,因為 Cluster Toolkit 的依附元件已預先安裝。如不想使用 Cloud Shell,請按照安裝依附元件的指示操作,準備其他環境。
  2. 從 Git 存放區複製 Cluster Toolkit:

    cd ~
    git clone https://github.com/GoogleCloudPlatform/cluster-toolkit.git
    
  3. 安裝 Cluster Toolkit:

    cd cluster-toolkit && git checkout main && make
    
  4. 建立已啟用版本控管的 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 部署作業狀態的運算區域。
  5. 如要建立叢集,您需要編輯的檔案取決於部署作業使用的消耗選項。選取與用量選項的佈建模式對應的分頁。

    取決於預留項目

    examples/gke-a3-ultragpu/gke-a3-ultragpu-deployment.yamlGitHub 存放區的藍圖中,將 terraform_backend_defaultsvars 區段中的下列變數替換為部署作業的特定值:

    • DEPLOYMENT_NAME:部署作業的專屬名稱,長度必須介於 6 到 30 個字元之間。如果部署作業名稱在專案內重複,叢集建立作業就會失敗。
    • BUCKET_NAME:您在上一個步驟中建立的 Cloud Storage bucket 名稱。
    • PROJECT_ID:您的 Google Cloud 專案 ID。
    • COMPUTE_REGION:叢集的運算區域。
    • COMPUTE_ZONE:A3 Ultra 機器節點集區的運算可用區。請注意,這個可用區必須與預留項目中可用的機器所在可用區相符。
    • NODE_COUNT:叢集中的 A3 Ultra 節點數量。
    • IP_ADDRESS/SUFFIX:允許連線至叢集的 IP 位址範圍。這個 CIDR 區塊必須包含您要用於呼叫 Terraform 的機器 IP 位址。詳情請參閱「已獲授權的網路運作方式」。
    • 視您是否要在佈建節點集區時,指定保留項目中的特定區塊reservation 欄位可使用下列其中一個值:

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

        RESERVATION_NAME/reservationBlocks/BLOCK_NAME
        

      如要瞭解預訂中可用的區塊,請參閱「查看預訂拓撲」。

    • 為系統和 A3 Ultra 節點集區的每個節點設定開機磁碟大小。所需磁碟大小取決於用途。舉例來說,如果您使用磁碟做為快取,以減少重複提取映像檔的延遲時間,則可以設定較大的磁碟大小,以容納架構、模型或容器映像檔:

      • SYSTEM_NODE_POOL_DISK_SIZE_GB:系統節點集區中每個節點的開機磁碟大小。允許的最小磁碟大小為 10。預設值為 100
      • A3ULTRA_NODE_POOL_DISK_SIZE_GB:A3 Ultra 節點集區中每個節點的開機磁碟大小。允許的最小磁碟大小為 10。預設值為 100

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

    彈性啟動

    1. examples/gke-a3-ultragpu/gke-a3-ultragpu-deployment.yamlGitHub 存放區的藍圖中,將 terraform_backend_defaultsvars 區段中的下列變數替換為部署作業的特定值:

      • DEPLOYMENT_NAME:部署作業的專屬名稱,長度必須介於 6 至 30 個字元之間。如果部署名稱在專案內重複,叢集建立作業就會失敗。
      • BUCKET_NAME:您在上一個步驟中建立的 Cloud Storage bucket 名稱。
      • PROJECT_ID:您的 Google Cloud 專案 ID。
      • COMPUTE_REGION:叢集的運算區域。
      • COMPUTE_ZONE:A3 Ultra 機器節點集區的運算可用區。
      • 移除「static_node_count」。
      • IP_ADDRESS/SUFFIX:允許連線至叢集的 IP 位址範圍。這個 CIDR 區塊必須包含您要用於呼叫 Terraform 的機器 IP 位址。詳情請參閱「已獲授權的網路運作方式」。
      • 移除 reservation 欄位,並將該欄位替換為 enable_flex_start: true。如要使用佇列式佈建,請在下一行新增 enable_queued_provisioning: true。詳情請參閱「使用節點集區搭配彈性啟動和排隊佈建」。
      • 為系統和 A3 Ultra 節點集區的每個節點設定開機磁碟大小。所需磁碟大小取決於用途。舉例來說,如果您使用磁碟做為快取,以減少重複提取映像檔的延遲時間,則可以設定較大的磁碟大小,以容納架構、模型或容器映像檔:

        • SYSTEM_NODE_POOL_DISK_SIZE_GB:系統節點集區中每個節點的開機磁碟大小。允許的最小磁碟大小為 10。預設值為 100
        • A3ULTRA_NODE_POOL_DISK_SIZE_GB:A3 Ultra 節點集區中每個節點的開機磁碟大小。允許的最小磁碟大小為 10。預設值為 100
    2. examples/gke-a3-ultragpu/gke-a3-ultragpu.yaml 藍圖中 (位於 GitHub 存放區),進行下列變更:

      • vars 區塊中,移除 static_node_count
      • vars 區塊中,將 version_prefix 數字更新為 "1.32." 以上版本。如要在 GKE 中使用彈性啟動功能,叢集必須使用 1.32.2-gke.1652000 以上版本。
      • vars 區塊中,將整個 reservation 區塊 (包括 reservation 行本身) 替換為 enable_flex_start: true,並視需要替換為 enable_queued_provisioning: true
      • vars 區塊中,移除以下這行程式碼: kueue_configuration_path: $(ghpc_stage("./kueue-configuration.yaml.tftpl"))
      • id: a3-ultragpu-pool 下方,移除以下程式碼行: static_node_count: $(vars.static_node_count)
      • id: a3-ultragpu-pool 下方移除 reservation_affinity 區塊。將這個區塊替換為下列程式碼行:

        • enable_flex_start: $(vars.enable_flex_start)
        • auto_repair: false
        • 如要啟用佇列佈建,請新增下列額外行:
          • enable_queued_provisioning: $(vars.enable_queued_provisioning)
          • autoscaling_total_min_nodes: 0
      • id: workload-manager-install 下方,移除下列程式碼區塊:

        config_path: $(vars.kueue_configuration_path)
        config_template_vars:
          num_gpus: $(a4-pool.static_gpu_count)
          accelerator_type: $(vars.accelerator_type)
        
        • 如要使用彈性啟動功能並排隊佈建,請按照下列三個步驟操作:

          1. gpu_nominal_quota: NOMINAL_QUOTA 新增至 vars 區塊。gpu_nominal_quota 值用於設定 ClusterQueue 規格中的 GPU nominalQuota。在這個範例中,只有在 GPU 要求總和小於或等於 NOMINAL_QUOTA 值時,ClusterQueue 才會允許工作負載。如要進一步瞭解 ClusterQueue,請參閱下列 Kueue 叢集佇列文件

          2. kueue 區塊更新為以下內容:

            kueue:
               install: true
               config_path: $(vars.kueue_configuration_path)
               config_template_vars:
                  num_gpus: $(vars.gpu_nominal_quota)
            
          3. kueue-configuration.yaml.tftpl 檔案的內容替換成以下內容:

            apiVersion: kueue.x-k8s.io/v1beta1
            kind: ResourceFlavor
            metadata:
               name: "default-flavor"
            ---
            apiVersion: kueue.x-k8s.io/v1beta1
            kind: AdmissionCheck
            metadata:
               name: dws-prov
            spec:
               controllerName: kueue.x-k8s.io/provisioning-request
               parameters:
                  apiGroup: kueue.x-k8s.io
                  kind: ProvisioningRequestConfig
                  name: dws-config
            ---
            apiVersion: kueue.x-k8s.io/v1beta1
            kind: ProvisioningRequestConfig
            metadata:
               name: dws-config
            spec:
               provisioningClassName: queued-provisioning.gke.io
               managedResources:
               - nvidia.com/gpu
            ---
            apiVersion: kueue.x-k8s.io/v1beta1
            kind: ClusterQueue
            metadata:
               name: "dws-cluster-queue"
            spec:
               namespaceSelector: {}
               resourceGroups:
               - coveredResources: ["nvidia.com/gpu"]
                  flavors:
                  - name: "default-flavor"
                  resources:
                  - name: "nvidia.com/gpu"
                     nominalQuota: ${num_gpus}
               admissionChecks:
               - dws-prov
            ---
            apiVersion: kueue.x-k8s.io/v1beta1
            kind: LocalQueue
            metadata:
               namespace: "default"
               name: "dws-local-queue"
            spec:
               clusterQueue: "dws-cluster-queue"
            ---
            
        • id: job-template 欄位中,將 node_count 變數替換為 2

    Spot

    1. examples/gke-a3-ultragpu/gke-a3-ultragpu-deployment.yamlGitHub 存放區的藍圖中,填入 terraform_backend_defaultsvars 區段的下列設定,以符合部署作業的特定值:

      • DEPLOYMENT_NAME:部署作業的專屬名稱,長度必須介於 6 至 30 個字元之間。如果部署名稱在專案內重複,叢集建立作業就會失敗。
      • BUCKET_NAME:您在上一個步驟中建立的 Cloud Storage bucket 名稱。
      • PROJECT_ID:您的 Google Cloud 專案 ID。
      • COMPUTE_REGION:叢集的運算區域。
      • COMPUTE_ZONE:A3 Ultra 機器節點集區的運算可用區。
      • STATIC_NODE_COUNT:叢集中的 A3 Ultra 節點數量。
      • IP_ADDRESS/SUFFIX:允許連線至叢集的 IP 位址範圍。這個 CIDR 區塊必須包含您要用於呼叫 Terraform 的機器的 IP 位址。詳情請參閱「授權網路的運作方式」。
      • 將整個 reservation 區塊 (包括 reservation 行本身) 替換為 spot: true
      • 為系統和 A3 Ultra 節點集區的每個節點設定開機磁碟大小。所需磁碟大小取決於用途。舉例來說,如果您使用磁碟做為快取,以減少重複提取映像檔的延遲時間,則可以設定較大的磁碟大小,以容納架構、模型或容器映像檔:

        • SYSTEM_NODE_POOL_DISK_SIZE_GB:系統節點集區中每個節點的開機磁碟大小。允許的最小磁碟大小為 10。預設值為 100
        • A3ULTRA_NODE_POOL_DISK_SIZE_GB:A3 Ultra 節點集區中每個節點的開機磁碟大小。允許的最小磁碟大小為 10。預設值為 100
    2. GitHub 存放區examples/gke-a3-ultragpu/gke-a3-ultragpu.yaml 藍圖中,進行下列變更:

      • vars 區塊中,將整個 reservation 區塊 (包括 reservation 行本身) 替換為 spot: true
      • id: a3-ultragpu-pool 下方移除 reservation_affinity 區塊。將這個區塊替換為下列程式碼行:

        • spot: $(vars.spot)
  6. 產生應用程式預設憑證 (ADC),授予 Terraform 存取權。如果您使用 Cloud Shell,請登入並設定 ADC:

    gcloud auth application-default login
    
  7. 部署藍圖,使用 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 buckets、網路儲存空間和永久磁碟區資源。

A3 Mega

  1. 啟動 Cloud Shell。您可以使用其他環境,但我們建議使用 Cloud Shell,因為 Cluster Toolkit 的依附元件已預先安裝。如不想使用 Cloud Shell,請按照安裝依附元件的操作說明,準備其他環境。
  2. 從 Git 存放區複製 Cluster Toolkit:

    cd ~
    git clone https://github.com/GoogleCloudPlatform/cluster-toolkit.git
    
  3. 安裝 Cluster Toolkit:

    cd cluster-toolkit && git checkout main && make
    
  4. 建立已啟用版本控管的 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 部署作業狀態的運算區域。
  5. 如要建立叢集,您需要編輯的檔案取決於部署作業使用的消耗選項。選取與用量選項的佈建模式對應的分頁。

    取決於預留項目

    GitHub 存放區的藍圖中,將 terraform_backend_defaultsvars 區段中的下列變數替換為部署作業的特定值:examples/gke-a3-megagpu/gke-a3-megagpu-deployment.yaml

    • DEPLOYMENT_NAME:部署作業的專屬名稱,長度必須介於 6 到 30 個字元之間。如果部署作業名稱在專案內重複,叢集建立作業就會失敗。
    • BUCKET_NAME:您在上一個步驟中建立的 Cloud Storage bucket 名稱。
    • PROJECT_ID:您的 Google Cloud 專案 ID。
    • COMPUTE_REGION:叢集的運算區域。
    • COMPUTE_ZONE:A3 Mega 機器節點集區的運算可用區。請注意,這個可用區應與預留項目中可用的機器所在可用區相符。
    • NODE_COUNT:叢集中的 A3 Mega 節點數量。
    • IP_ADDRESS/SUFFIX:您要允許連線至叢集的 IP 位址範圍。這個 CIDR 區塊必須包含您要用於呼叫 Terraform 的機器 IP 位址。詳情請參閱「已獲授權的網路運作方式」。
    • 視您是否要在佈建節點集區時,指定保留項目中的特定區塊reservation 欄位可使用下列其中一個值:

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

        RESERVATION_NAME/reservationBlocks/BLOCK_NAME
        

      如要瞭解預訂中可用的區塊,請參閱「查看預訂的拓撲」。

    如要修改進階設定,請編輯 examples/gke-a3-megagpu/gke-a3-megagpu.yaml

    彈性啟動

    1. examples/gke-a3-megagpu/gke-a3-megagpu-deployment.yamlGitHub 存放區中的藍圖,將 vars 區段中的下列變數替換為部署作業的特定值:

      • DEPLOYMENT_NAME:部署作業的專屬名稱,長度必須介於 6 至 30 個字元之間。如果部署名稱在專案內重複,叢集建立作業就會失敗。
      • BUCKET_NAME:您在上一個步驟中建立的 Cloud Storage bucket 名稱。
      • PROJECT_ID:您的 Google Cloud 專案 ID。
      • COMPUTE_REGION:叢集的運算區域。
      • COMPUTE_ZONE:A3 Mega 機器節點集區的運算可用區。
      • 移除「static_node_count」。
      • IP_ADDRESS/SUFFIX:允許連線至叢集的 IP 位址範圍。這個 CIDR 區塊必須包含您要用於呼叫 Terraform 的機器 IP 位址。詳情請參閱「已獲授權的網路運作方式」。
      • 移除 reservation 欄位,並將該欄位替換為 enable_flex_start: true。如要使用佇列佈建,請在下列程式碼行中新增 enable_queued_provisioning: true。詳情請參閱「使用節點集區搭配彈性啟動和排隊佈建」。
    2. examples/gke-a3-megagpu/gke-a3-megagpu.yaml 藍圖中,從 GitHub 存放區進行下列變更:

      • vars 區塊中,移除 static_node_count
      • vars 區塊中,將 version_prefix 數字更新為 "1.32." 以上版本。如要在 GKE 中使用彈性啟動功能,叢集必須使用 1.32.2-gke.1652000 以上版本。
      • vars 區塊中,將整個 reservation 區塊 (包括 reservation 行本身) 替換為 enable_flex_start: true,並視需要替換為 enable_queued_provisioning: true
      • vars 區塊中,移除以下這行程式碼: kueue_configuration_path: $(ghpc_stage("./kueue-configuration.yaml.tftpl"))
      • id: a3_megagpu_pool 下方,移除以下程式碼行: static_node_count: $(vars.static_node_count)
      • id: a3_megagpu_pool 下方移除 reservation_affinity 區塊。將這個區塊替換為下列程式碼行:

        • enable_flex_start: $(vars.enable_flex_start)
        • auto_repair: false
        • 如要啟用佇列佈建,請新增下列額外行:
          • enable_queued_provisioning: $(vars.enable_queued_provisioning)
          • autoscaling_total_min_nodes: 0
      • id: workload_manager_install 下方,移除下列程式碼區塊:

        config_path: $(vars.kueue_configuration_path)
        config_template_vars:
          num_gpus: $(a3_megagpu_pool.static_gpu_count)
          accelerator_type: $(vars.accelerator_type)
        
        • 如要使用彈性啟動功能並排隊佈建,請按照下列三個步驟操作:

          1. gpu_nominal_quota: NOMINAL_QUOTA 新增至 vars 區塊。gpu_nominal_quota 值用於設定 ClusterQueue 規格中的 GPU nominalQuota。在這個範例中,只有在 GPU 要求總和小於或等於 NOMINAL_QUOTA 值時,ClusterQueue 才會允許工作負載。如要進一步瞭解 ClusterQueue,請參閱下列 Kueue 叢集佇列文件

          2. kueue 區塊更新為以下內容:

            kueue:
               install: true
               config_path: $(vars.kueue_configuration_path)
               config_template_vars:
                  num_gpus: $(vars.gpu_nominal_quota)
            
          3. kueue-configuration.yaml.tftpl 檔案的內容替換成以下內容:

            apiVersion: kueue.x-k8s.io/v1beta1
            kind: ResourceFlavor
            metadata:
               name: "default-flavor"
            ---
            apiVersion: kueue.x-k8s.io/v1beta1
            kind: AdmissionCheck
            metadata:
               name: dws-prov
            spec:
               controllerName: kueue.x-k8s.io/provisioning-request
               parameters:
                  apiGroup: kueue.x-k8s.io
                  kind: ProvisioningRequestConfig
                  name: dws-config
            ---
            apiVersion: kueue.x-k8s.io/v1beta1
            kind: ProvisioningRequestConfig
            metadata:
               name: dws-config
            spec:
               provisioningClassName: queued-provisioning.gke.io
               managedResources:
               - nvidia.com/gpu
            ---
            apiVersion: kueue.x-k8s.io/v1beta1
            kind: ClusterQueue
            metadata:
               name: "dws-cluster-queue"
            spec:
               namespaceSelector: {}
               resourceGroups:
               - coveredResources: ["nvidia.com/gpu"]
                  flavors:
                  - name: "default-flavor"
                  resources:
                  - name: "nvidia.com/gpu"
                     nominalQuota: ${num_gpus}
               admissionChecks:
               - dws-prov
            ---
            apiVersion: kueue.x-k8s.io/v1beta1
            kind: LocalQueue
            metadata:
               namespace: "default"
               name: "dws-local-queue"
            spec:
               clusterQueue: "dws-cluster-queue"
            ---
            
        • id: job-template 欄位中,node_count 變數的值為 2

    Spot

    1. examples/gke-a3-megagpu/gke-a3-megagpu-deployment.yamlGitHub 存放區中的藍圖,於 vars 區段中填入下列設定,以符合部署作業的特定值:
      • DEPLOYMENT_NAME:部署作業的專屬名稱,長度必須介於 6 至 30 個字元之間。如果部署名稱在專案內重複,叢集建立作業就會失敗。
      • BUCKET_NAME:您在上一個步驟中建立的 Cloud Storage bucket 名稱。
      • PROJECT_ID:您的 Google Cloud 專案 ID。
      • COMPUTE_REGION:叢集的運算區域。
      • COMPUTE_ZONE:A3 Mega 機器節點集區的運算可用區。
      • STATIC_NODE_COUNT:叢集中的 A3 Mega 節點數量。
      • IP_ADDRESS/SUFFIX:IP
      • IP_ADDRESS/SUFFIX:您要允許連線至叢集的 IP 位址範圍。這個 CIDR 區塊必須包含您要用於呼叫 Terraform 的機器的 IP 位址。詳情請參閱「授權網路的運作方式」。
      • 將整個 reservation 區塊 (包括 reservation 行本身) 替換為 provisioning_model: SPOT
    2. 在 GitHub 存放區的 examples/gke-a3-megagpu/gke-a3-megagpu.yaml 藍圖中,進行下列變更:

      • vars 區塊中,將整個 reservation 區塊 (包括 reservation 行本身) 替換為 provisioning_model: {type: string, default: SPOT}
      • id: a3_megagpu_pool 下方移除 reservation_affinity 區塊。將這個區塊替換為下列程式碼行: provisioning_model: $(vars.provisioning_model) auto_repair: false
  6. 您也可以選擇在叢集上啟用叢集健康狀態掃描器 (CHS)。CHS 會執行測試,確認叢集是否已準備好執行工作負載,藉此檢查 GPU 叢集的健康狀態。如要啟用 CHS,請在 examples/gke-a3-megagpu/gke-a3-megagpu-deployment.yaml 檔案中進行下列變更:

    • vars 區塊中,將 enable_periodic_health_checks 欄位設為 true

    • 根據預設,健康檢查會在每週日太平洋標準時間凌晨 12:00 執行。如要變更這項設定,請在 vars 區塊中,將 health_check_schedule 欄位設為適當的值 (cron 格式)。
      以 cron 格式排定時間: none * * * * * # | | | | | # | | | | day of the week (0-6) (Sunday to Saturday) # | | | month (1-12) # | | day of the month (1-31) # | hour (0-23) # minute (0-59)

  7. 產生應用程式預設憑證 (ADC),授予 Terraform 存取權。如果您使用 Cloud Shell,可以執行下列指令:

    gcloud auth application-default login
    
  8. 部署藍圖,使用 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
    
  9. 出現提示時,選取「(A)pply」(套用) 部署藍圖。

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

使用 XPK 建立叢集並執行工作負載

Accelerated Processing Kit (XPK) 可讓您快速佈建及使用叢集。XPK 會產生預先設定且經過訓練最佳化的基礎架構,非常適合以執行工作負載為主要目標的情況。

使用 XPK 建立叢集,並透過 A3 Ultra VM 執行工作負載:

  1. 安裝必要工具,以符合 XPK 先決條件
  2. 複製 XPK 最新標記版本的版本號碼,例如「v0.8.0」。在下列指令中,將 XPK_TAG 替換為最新 XPK 版本號碼。
  3. 在 Linux 電腦上開啟 Shell 視窗,然後輸入下列指令,從 Git 存放區複製 XPK,並安裝必要套件:

      ## Setup virtual environment.
      VENV_DIR=~/venvp3
      python3 -m venv $VENV_DIR
      source $VENV_DIR/bin/activate
      ## Clone the repository.
      git clone --branch XPK_TAG https://github.com/google/xpk.git
      cd xpk
      ## Install required packages
      make install && export PATH=$PATH:$PWD/bin
    
  4. 使用 A3 Ultra、A3 Mega 或 A3 High VM 建立標準叢集。您可以使用預留容量佈建叢集的節點:

      python3 xpk.py cluster create \
         --cluster=CLUSTER_NAME \
         --device-type=DEVICE_TYPE \
         --zone=COMPUTE_ZONE  \
         --project=PROJECT_ID \
         --num-nodes=NUM_NODES \
         --reservation=RESERVATION_NAME
    

    請替換下列變數:

    • CLUSTER_NAME:叢集名稱。
    • DEVICE_TYPE:要使用的裝置類型。
      • 如果是 A3 Ultra,請使用 h200-141gb-8
      • 如果是 A3 Mega,請使用 h100-mega-80gb-8
      • 如果是 A3 High,請使用 h100-80gb-8
    • COMPUTE_ZONE:A3 Ultra 機器節點集區的運算區域。如要使用預留容量,請務必使用預留容量的可用區。一般來說,建議選擇靠近使用者的可用區,以盡量縮短延遲時間。
    • PROJECT_ID:您的 Google Cloud 專案 ID
    • NUM_NODES:節點集區中的工作站節點數量。
    • RESERVATION_NAME:預訂名稱。

      XPK 提供叢集建立作業的額外引數,包括建立私人叢集、建立 Vertex AI TensorBoard,以及使用自動佈建節點的引數。詳情請參閱 XPK 的叢集建立指南。

  5. 確認叢集已成功建立:

      python3 xpk.py cluster list --zone=COMPUTE_ZONE --project=PROJECT_ID
    
  6. 選用:執行工作負載來測試叢集環境:

      python3 xpk.py workload create \
         --workload WORKLOAD_NAME --command "echo goodbye" \
         --cluster CLUSTER_NAME \
         --device-type=DEVICE_TYPE \
         --num-nodes=WORKLOAD_NUM_NODES \
         --zone=COMPUTE_ZONE \
         --project=PROJECT_ID
    

    請替換下列變數:

    • WORKLOAD_NAME:工作負載名稱。
    • CLUSTER_NAME:叢集名稱。
    • DEVICE_TYPE:要使用的裝置類型。
      • 如果是 A3 Ultra,請使用 h200-141gb-8
      • 如果是 A3 Mega,請使用 h100-mega-80gb-8
      • 如果是 A3 High,請使用 h100-80gb-8
    • WORKLOAD_NUM_NODES:用於執行工作負載的 worker 節點數量。
    • COMPUTE_ZONE:A3 Ultra 機器的節點集區運算區域
    • PROJECT_ID:您的 Google Cloud 專案 ID

測試網路效能

建議您驗證已佈建叢集的功能。如要執行這項操作,請使用 NCCL 測試,也就是針對 Google 環境最佳化的 NVIDIA Collective Communications Library (NCCL) 測試

執行可重現的基準測試

您可以在 GKE 的 A4、A3 Ultra 和 A3 Mega VM 執行個體上,重現大型機器學習開放模型的預先訓練基準。

每份食譜都會提供完成下列工作的操作說明:

  • 準備環境。
  • 執行基準測試。
  • 分析基準結果。包括基準測試結果和詳細記錄,方便您進一步分析。

如要查看所有可用的做法,請參閱 GPU 做法 GitHub 存放區。

模型 架構 方案
Llama-3.1-70B MaxText 32 個節點的工作負載
Llama-3.1-70B NeMo 32 個節點的工作負載
Mixtral-8-7B NeMo 32 個節點的工作負載

清理 Cluster Toolkit 建立的資源

為避免系統持續收取本頁面所用資源的費用,請清理 Cluster Toolkit 佈建的資源,包括虛擬私有雲網路和 GKE 叢集:

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

CLUSTER_NAME 替換為叢集名稱。 使用 Cluster Toolkit 建立的叢集,叢集名稱會以 DEPLOYMENT_NAME 為依據。

後續步驟