本文件說明如何建立 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 叢集
下列叢集建立選項在叢集設定和工作負載排程方面,各有不同程度的便利性和彈性:
- 使用 Cluster Toolkit 建立叢集,並採用運算、儲存和網路資源的預設設定,以及啟用 GPUDirect RDMA-over-Converged-Ethernet (RoCE)。
或者,您也可以手動建立 GKE 叢集,精確自訂或擴充現有的正式版 GKE 環境。如要手動建立 AI 最佳化 GKE 叢集,請參閱下列其中一個頁面:
- A4X Max:建立使用 A4X Max 的 AI 最佳化 GKE 叢集。
- A4X:建立使用 A4X 的 AI 最佳化 GKE 叢集。
- A4 或 A3 Ultra:建立使用 A4 或 A3 Ultra 的 AI 最佳化 GKE 叢集。
- A3 Mega 或 A3 High:建立使用 A3 Mega 或 A3 High 的 GKE Standard 叢集,或建立使用 A3 Mega 或 A3 High 的 GKE Autopilot 叢集。
事前準備
開始之前,請確認您已執行下列工作:
- 啟用 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)。
- Kubernetes Engine 管理員 (
選擇用量方案並取得容量
選擇用量方案。請根據您想取得及使用 GPU 資源的方式做出選擇。詳情請參閱「選擇消耗選項」。
選擇 GKE 的用量選項時,請考慮下列額外資訊:
- A4X Max 和 A4X 運算執行個體無法透過彈性啟動佈建。
- 如要進一步瞭解彈性啟動 (預覽) 和 GKE,請參閱「About GPU obtainability with flex-start」(關於彈性啟動的 GPU 取得能力)。
- 彈性啟動模式會盡可能使用密集配置模式。如要檢查拓撲,請參閱「查看 GKE 叢集中節點的實體拓撲」。
- 使用 Spot VM 時,只有在設定密集配置時,才能取得拓撲資訊。
取得容量。取得容量的程序因每個消耗選項而異。
如要瞭解所選消耗選項的程序,請參閱「容量總覽」。
需求條件
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 記憶體做為非統一記憶體存取 (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)。這種做法可避免 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 最低必要版本 (1.32.1-gke.1729000 以上版本) 的 A4 節點上,安裝這個驅動程式版本。
- 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
- 啟動 Cloud Shell。您可以使用其他環境,但建議使用 Cloud Shell,因為 Cluster Toolkit 的依附元件已預先安裝。如果不想使用 Cloud Shell,請按照操作說明安裝依附元件,準備其他環境。
建立已啟用版本控管的 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 部署作業狀態的運算區域。
在 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:具有預留量的專案 ID。 Google Cloud預留項目可能位於PROJECT_ID以外的專案。NUM_NODE_POOLS:要在叢集中啟用的節點集區數量。如要建立超過 18 個節點的叢集,可以指定多個節點集區。預設值為1。
如要修改進階設定,請編輯
examples/gke-a4x-max-bm/gke-a4x-max-bm.yaml檔案。產生應用程式預設憑證 (ADC),以提供 Terraform 存取權。如果您使用 Cloud Shell,請登入並設定 ADC:
gcloud auth application-default login使用
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 \ --deployment DEPLOYMENT_NAME將
DEPLOYMENT_NAME替換為部署名稱。出現提示時,選取「(A)pply」部署藍圖。
- 藍圖會建立虛擬私有雲網路、GPU RDMA 虛擬私有雲網路、服務帳戶、叢集和節點集區。
- 為支援藍圖中的
fio-bench-job-template工作範本,系統會建立Google Cloud bucket、網路儲存空間和永久磁碟區資源。
A4X
- 啟動 Cloud Shell。您可以使用其他環境,但建議使用 Cloud Shell,因為 Cluster Toolkit 的依附元件已預先安裝。如不想使用 Cloud Shell,請按照安裝依附元件的指示操作,準備其他環境。
- 安裝 Cluster Toolkit。
建立 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 部署作業狀態的運算區域。
在
examples/gke-a4x/gke-a4x-deployment.yaml藍圖中,從 GitHub 存放區,在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檔案。產生應用程式預設憑證 (ADC),提供 Terraform 存取權。如果您使用 Cloud Shell,請登入並設定 ADC:
gcloud auth application-default login部署藍圖,使用 A4X 機型佈建 GKE 基礎架構:
cd ~/cluster-toolkit ./gcluster deploy -d \ examples/gke-a4x/gke-a4x-deployment.yaml \ examples/gke-a4x/gke-a4x.yaml出現提示時,選取「(A)pply」部署藍圖。
- 藍圖會建立虛擬私有雲網路、GPU RDMA 虛擬私有雲網路、服務帳戶、叢集和節點集區。
- 為支援藍圖中的
fio-bench-job-template工作範本,系統會建立Google Cloud bucket、網路儲存空間和永久磁碟區資源。
A4
- 啟動 Cloud Shell。您可以使用其他環境,但建議使用 Cloud Shell,因為 Cluster Toolkit 的依附元件已預先安裝。如不想使用 Cloud Shell,請按照安裝依附元件的指示操作,準備其他環境。
建立 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 部署作業狀態的運算區域。
建立叢集時需要編輯的檔案,取決於部署作業使用的消耗量選項。選取與用量選項的佈建模型對應的分頁。
取決於預留項目
在 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 機器節點集區的運算可用區。請注意,這個可用區必須與預留項目中機器所在的可用區相符。STATIC_NODE_COUNT:叢集中的 A4 節點數量。AUTHORIZED_CIDR:您要允許連線至叢集的 IP 位址範圍。這個 CIDR 區塊必須包含您要用來呼叫 Terraform 的機器 IP 位址。詳情請參閱「授權網路的運作方式」。在
reservation欄位中,請根據您是否要在佈建節點集區時指定預留項目中的特定區塊,使用下列其中一項:- 如要將節點集區放在預留項目中的任何位置,請提供預留項目的名稱 (
RESERVATION_NAME)。 如要指定預留項目中的特定區塊,請使用下列格式的預留項目和區塊名稱:
RESERVATION_NAME/reservationBlocks/BLOCK_NAME
如要瞭解預訂中可用的區塊,請參閱「查看預訂拓撲」。
- 如要將節點集區放在預留項目中的任何位置,請提供預留項目的名稱 (
如要修改進階設定,請編輯
examples/gke-a4/gke-a4.yaml。彈性啟動
在
examples/gke-a4/gke-a4-deployment.yaml藍圖中,從 GitHub 存放區,在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欄位,並以enable_flex_start: true取代該欄位。如要使用佇列佈建功能,請在下一行新增enable_queued_provisioning: true。詳情請參閱「使用具備彈性啟動功能的節點集區和佇列式佈建」。 - 移除
static_node_count。
在 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)如要使用彈性啟動搭配佇列式佈建,請按照下列步驟操作:
將
gpu_nominal_quota: NOMINAL_QUOTA新增至vars區塊。gpu_nominal_quota值用於在ClusterQueue規格中設定 GPU 的nominalQuota(請參閱下方的設定ClusterQueue步驟)。在本範例中,只有在 GPU 要求總和小於或等於NOMINAL_QUOTA值時,ClusterQueue才會允許工作負載。如要進一步瞭解ClusterQueue,請參閱下列 Kueue 叢集佇列文件。將
kueue區塊更新為以下內容:kueue: install: true config_path: $(vars.kueue_configuration_path) config_template_vars: num_gpus: $(vars.gpu_nominal_quota)將
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
在 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 機器節點集區的運算可用區。STATIC_NODE_COUNT:叢集中的 A4 節點數量。AUTHORIZED_CIDR:您要允許連線至叢集的 IP 位址範圍。這個 CIDR 區塊必須包含您要用於呼叫 Terraform 的機器 IP 位址。詳情請參閱「已獲授權網路的運作方式」。- 將整個
reservation區塊 (包括reservation行本身) 替換為spot: true。
在 GitHub 存放區的
examples/gke-a4/gke-a4.yaml藍圖中,進行下列變更:- 在
vars區塊中,將整個reservation區塊 (包括reservation行本身) 替換為spot: true。 在
id: a4-pool下方,移除reservation_affinity區塊。將這個區塊替換為下列程式碼:spot: $(vars.spot)
- 在
產生應用程式預設憑證 (ADC),提供 Terraform 存取權。如果您使用 Cloud Shell,請登入並設定 ADC:
gcloud auth application-default login部署藍圖,使用 A4 機型佈建 GKE 基礎架構:
cd ~/cluster-toolkit ./gcluster deploy -d \ examples/gke-a4/gke-a4-deployment.yaml \ examples/gke-a4/gke-a4.yaml出現提示時,選取「(A)pply」部署藍圖。
- 藍圖會建立虛擬私有雲網路、GPU RDMA 虛擬私有雲網路、服務帳戶、叢集和節點集區。
- 為支援藍圖中的
fio-bench-job-template工作範本,系統會建立Google Cloud bucket、網路儲存空間和永久磁碟區資源。
A3 Ultra
- 啟動 Cloud Shell。您可以使用其他環境,但建議使用 Cloud Shell,因為 Cluster Toolkit 的依附元件已預先安裝。如果不想使用 Cloud Shell,請按照操作說明安裝依附元件,準備其他環境。
建立 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 部署作業狀態的運算區域。
建立叢集時需要編輯的檔案,取決於部署作業使用的消耗量選項。選取與用量選項的佈建模型對應的分頁。
取決於預留項目
在
examples/gke-a3-ultragpu/gke-a3-ultragpu-deployment.yamlGitHub 存放區的藍圖中,將terraform_backend_defaults和vars區段中的下列變數替換為部署作業的特定值:BUCKET_NAME:您在上一個步驟中建立的 Cloud Storage bucket 名稱。DEPLOYMENT_NAME:部署作業的專屬名稱,長度必須介於 6 到 30 個字元之間。如果部署作業名稱在專案中重複,叢集建立作業就會失敗。PROJECT_ID:您的 Google Cloud 專案 ID。COMPUTE_REGION:叢集的運算區域。COMPUTE_ZONE:A3 Ultra 機器節點集區的運算可用區。請注意,這個可用區必須與預留項目中可用的機器所在可用區相符。IP_ADDRESS/SUFFIX:您要允許連線至叢集的 IP 位址範圍。這個 CIDR 區塊必須包含您要用來呼叫 Terraform 的機器 IP 位址。詳情請參閱「授權網路的運作方式」。在
reservation欄位中,請根據您是否要在佈建節點集區時指定預留項目中的特定區塊,使用下列其中一項:- 如要在預留項目中的任何位置放置節點集區,請提供預留項目的名稱 (
RESERVATION_NAME)。 如要指定預留項目中的特定區塊,請使用下列格式的預留項目和區塊名稱:
RESERVATION_NAME/reservationBlocks/BLOCK_NAME
如要瞭解預訂中可用的區塊,請參閱「查看預訂拓撲」。
- 如要在預留項目中的任何位置放置節點集區,請提供預留項目的名稱 (
NODE_COUNT:叢集中的 A3 Ultra 節點數量。
如要修改進階設定,請編輯
examples/gke-a3-ultragpu/gke-a3-ultragpu.yaml。彈性啟動
在
examples/gke-a3-ultragpu/gke-a3-ultragpu-deployment.yamlGitHub 存放區的藍圖中,將terraform_backend_defaults和vars區段中的下列變數替換為部署作業的特定值:BUCKET_NAME:您在上一個步驟中建立的 Cloud Storage bucket 名稱。DEPLOYMENT_NAME:部署作業的專屬名稱,長度必須介於 6 到 30 個字元之間。如果部署作業名稱在專案中重複,叢集建立作業就會失敗。PROJECT_ID:您的 Google Cloud 專案 ID。COMPUTE_REGION:叢集的運算區域。COMPUTE_ZONE:A3 Ultra 機器節點集區的運算可用區。IP_ADDRESS/SUFFIX:您要允許連線至叢集的 IP 位址範圍。這個 CIDR 區塊必須包含您要用來呼叫 Terraform 的機器 IP 位址。詳情請參閱「授權網路的運作方式」。- 移除
reservation欄位,並將該欄位替換為enable_flex_start: true。如要使用佇列佈建功能,請在下一行新增enable_queued_provisioning: true。詳情請參閱「使用節點集區搭配彈性啟動和排隊佈建」。 - 移除「
static_node_count」。
在
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)如要使用彈性啟動和佇列式佈建,請按照下列三個步驟操作:
將
gpu_nominal_quota: NOMINAL_QUOTA新增至vars區塊。gpu_nominal_quota值用於設定ClusterQueue規格中 GPU 的nominalQuota。在本例中,只有在 GPU 要求總和小於或等於NOMINAL_QUOTA值時,ClusterQueue才會允許工作負載。如要進一步瞭解ClusterQueue,請參閱叢集佇列的 Kueue 文件。將
kueue區塊更新為以下內容:kueue: install: true config_path: $(vars.kueue_configuration_path) config_template_vars: num_gpus: $(vars.gpu_nominal_quota)將
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
在 GitHub 存放區的
examples/gke-a3-ultragpu/gke-a3-ultragpu-deployment.yaml藍圖中,填寫terraform_backend_defaults和vars區段中的下列設定,以符合部署作業的特定值:BUCKET_NAME:您在上一個步驟中建立的 Cloud Storage bucket 名稱。DEPLOYMENT_NAME:部署作業的專屬名稱,長度必須介於 6 到 30 個字元之間。如果部署作業名稱在專案中重複,叢集建立作業就會失敗。PROJECT_ID:您的 Google Cloud 專案 ID。COMPUTE_REGION:叢集的運算區域。COMPUTE_ZONE:A3 Ultra 機器節點集區的運算可用區。IP_ADDRESS/SUFFIX:您要允許連線至叢集的 IP 位址範圍。這個 CIDR 區塊必須包含您要用來呼叫 Terraform 的機器 IP 位址。詳情請參閱「已獲授權網路的運作方式」。- 將整個
reservation區塊 (包括reservation行本身) 替換為spot: true。 NODE_COUNT:叢集中的 A3 Ultra 節點數量。
在 GitHub 存放區的
examples/gke-a3-ultragpu/gke-a3-ultragpu.yaml藍圖中,進行下列變更:- 在
vars區塊中,將整個reservation變數替換為spot: true。 在
id: a3-ultragpu-pool區段中,移除reservation_affinity區塊。將這個區塊替換為以下程式碼:spot: $(vars.spot)
- 在
產生應用程式預設憑證 (ADC),以提供 Terraform 的存取權。如果您使用的是 Cloud Shell,請登入並設定 ADC:
gcloud auth application-default login部署藍圖,使用 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出現提示時,選取「(A)pply」部署藍圖。
- 藍圖會建立虛擬私有雲網路、GPU RDMA 虛擬私有雲網路、服務帳戶、叢集和節點集區。
- 為支援藍圖中的
fio-bench-job-template工作範本,系統會建立Google Cloud buckets、網路儲存空間和永久磁碟區資源。
A3 Mega
- 啟動 Cloud Shell。您可以使用其他環境,但建議使用 Cloud Shell,因為 Cluster Toolkit 的依附元件已預先安裝。如果不想使用 Cloud Shell,請按照安裝依附元件的操作說明,準備其他環境。
建立 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 部署作業狀態的運算區域。
建立叢集時,您需要編輯的檔案取決於部署作業使用的使用選項。選取與用量選項的佈建模型對應的分頁。
取決於預留項目
在
examples/gke-a3-megagpu/gke-a3-megagpu-deployment.yamlGitHub 存放區的藍圖中,將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 位址。詳情請參閱「已獲授權的網路運作方式」。在
reservation欄位中,請根據您是否要在佈建節點集區時指定預留項目中的特定區塊,使用下列其中一項:- 如要將節點集區放在預留項目中的任何位置,請提供預留項目的名稱 (
RESERVATION_NAME)。 如要指定預留項目中的特定區塊,請使用下列格式的預留項目和區塊名稱:
RESERVATION_NAME/reservationBlocks/BLOCK_NAME
如果您不確定預留項目中有哪些可用區塊,請參閱「查看預留項目的拓撲」。
- 如要將節點集區放在預留項目中的任何位置,請提供預留項目的名稱 (
STATIC_NODE_COUNT:叢集中的 A3 Mega 節點數量。
如要修改進階設定,請編輯
examples/gke-a3-megagpu/gke-a3-megagpu.yaml。彈性啟動
在
examples/gke-a3-megagpu/gke-a3-megagpu-deployment.yamlGitHub 存放區的藍圖中,將vars區段中的下列變數換成部署作業的特定值:BUCKET:您在上一個步驟中建立的 Cloud Storage bucket 名稱。DEPLOYMENT_NAME:部署作業的專屬名稱,長度必須介於 6 到 30 個半形字元之間。如果部署作業名稱在專案中重複,叢集建立作業就會失敗。PROJECT_ID:您的 Google Cloud 專案 ID。REGION:叢集的運算區域。ZONE:A3 Mega 機器節點集區的運算可用區。AUTHORIZED_CIDR:您要允許連線至叢集的 IP 位址範圍。這個 CIDR 區塊必須包含您要用來呼叫 Terraform 的機器 IP 位址。詳情請參閱「已獲授權的網路運作方式」。- 移除
reservation欄位,並以enable_flex_start: true取代該欄位。如要一併使用佇列式佈建,請在下列指令行中加入enable_queued_provisioning: true。詳情請參閱「使用節點集區搭配彈性啟動和排隊佈建」。 - 移除
static_node_count。
在 GitHub 存放區的
examples/gke-a3-megagpu/gke-a3-megagpu.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: 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)如要使用彈性啟動和佇列式佈建,請按照下列三個步驟操作:
將
gpu_nominal_quota: NOMINAL_QUOTA新增至vars區塊。gpu_nominal_quota值用於設定ClusterQueue規格中 GPU 的nominalQuota。在這個範例中,只有在 GPU 要求總和小於或等於NOMINAL_QUOTA值時,ClusterQueue才會允許工作負載。如要進一步瞭解ClusterQueue,請參閱下列 Kueue 叢集佇列文件。將
kueue區塊更新為以下內容:kueue: install: true config_path: $(vars.kueue_configuration_path) config_template_vars: num_gpus: $(vars.gpu_nominal_quota)將
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
在 GitHub 存放區的
examples/gke-a3-megagpu/gke-a3-megagpu-deployment.yaml藍圖中,更新下列變數,使其與部署作業的特定值相符:BUCKET:您在上一個步驟中建立的 Cloud Storage bucket 名稱。DEPLOYMENT_NAME:部署作業的專屬名稱,長度必須介於 6 到 30 個字元之間。如果部署作業名稱在專案中重複,叢集建立作業就會失敗。PROJECT_ID:您的 Google Cloud 專案 ID。REGION:叢集的運算區域。ZONE:A3 Mega 機器節點集區的運算可用區。AUTHORIZED_CIDR:您要允許連線至叢集的 IP 位址範圍。這個 CIDR 區塊必須包含您要用於呼叫 Terraform 的機器 IP 位址。詳情請參閱「已獲授權網路的運作方式」。- 將整個
reservation區塊 (包括reservation行本身) 替換為provisioning_model: SPOT。 STATIC_NODE_COUNT:叢集中的 A3 Mega 節點數量。
在
examples/gke-a3-megagpu/gke-a3-megagpu.yaml藍圖中,從 GitHub 存放區進行下列變更:- 在
vars區塊中,將整個reservation區塊 (包括reservation行本身) 替換為spot: true。 在
id: a3_megagpu_pool區段中,移除reservation_affinity區塊。將這個區塊替換為下列程式碼:spot: $(vars.spot)
- 在
產生應用程式預設憑證 (ADC),提供 Terraform 存取權。如果您使用的是 Cloud Shell,可以執行下列指令:
gcloud auth application-default login部署藍圖,使用 A3 Mega 機型佈建 GKE 基礎架構:
cd ~/cluster-toolkit ./gcluster deploy -d \ examples/gke-a3-megagpu/gke-a3-megagpu.yaml出現提示時,選取「(A)pply」部署藍圖。
- 藍圖會建立虛擬私有雲網路、GPU RDMA 虛擬私有雲網路、服務帳戶、叢集和節點集區。
- 為支援藍圖中的
fio-bench-job-template工作範本,系統會建立Google Cloud buckets、網路儲存空間和永久磁碟區資源。
A3 High
- 啟動 Cloud Shell。您可以使用其他環境,但建議使用 Cloud Shell,因為 Cluster Toolkit 的依附元件已預先安裝。如果不想使用 Cloud Shell,請按照安裝依附元件的操作說明,準備其他環境。
建立 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 的名稱。PROJECT_ID:您的 Google Cloud 專案 ID。COMPUTE_REGION_TERRAFORM_STATE:要儲存 Terraform 部署作業狀態的運算區域。
建立叢集時需要編輯的檔案,取決於部署作業使用的消耗量選項。選取與消費選項佈建模式對應的分頁。
取決於預留項目
在 GitHub 存放區的藍圖中,將
terraform_backend_defaults和vars區段中的下列變數替換為部署作業的特定值:examples/gke-a3-highgpu/gke-a3-highgpu-deployment.yamlBUCKET:您在上一個步驟中建立的 Cloud Storage bucket 名稱。DEPLOYMENT_NAME:部署作業的專屬名稱,長度必須介於 6 到 30 個字元之間。如果部署作業名稱在專案內重複,叢集建立作業就會失敗。PROJECT_ID:您的 Google Cloud 專案 ID。REGION:叢集的運算區域。ZONE:A3 High 機器節點集區的運算可用區。請注意,這個可用區應與預留項目中可用的機器所在可用區相符。AUTHORIZED_CIDR:您要允許連線至叢集的 IP 位址範圍。這個 CIDR 區塊必須包含您要用來呼叫 Terraform 的機器 IP 位址。詳情請參閱「授權網路的運作方式」。STATIC_NODE_COUNT:叢集中的 A3 High 節點數量。在
reservation欄位中,請根據您是否要在佈建節點集區時指定預留項目中的特定區塊,使用下列其中一項:- 如要將節點集區放在預留項目中的任何位置,請提供預留項目的名稱 (
RESERVATION_NAME)。 如要指定預留項目中的特定區塊,請使用下列格式的預留項目和區塊名稱:
RESERVATION_NAME/reservationBlocks/BLOCK_NAME
如要瞭解預訂中可用的區塊,請參閱「查看預訂的拓撲」。
- 如要將節點集區放在預留項目中的任何位置,請提供預留項目的名稱 (
如要修改進階設定,請編輯
examples/gke-a3-highgpu/gke-a3-highgpu.yaml。彈性啟動
在 GitHub 存放區的
examples/gke-a3-highgpu/gke-a3-highgpu-deployment.yaml檔案中,將vars區段中的下列變數替換為部署作業的特定值:BUCKET:您在上一個步驟中建立的 Cloud Storage bucket 名稱。DEPLOYMENT_NAME:部署作業的專屬名稱,長度必須介於 6 到 30 個半形字元之間。如果部署作業名稱在專案中重複,叢集建立作業就會失敗。PROJECT_ID:您的 Google Cloud 專案 ID。REGION:叢集的運算區域。ZONE:A3 High 機器節點集區的運算可用區。AUTHORIZED_CIDR:您要允許連線至叢集的 IP 位址範圍。這個 CIDR 區塊必須包含您要用於呼叫 Terraform 的機器的 IP 位址。詳情請參閱「授權網路的運作方式」。- 移除
reservation欄位,並將該欄位替換為enable_flex_start: true。如要一併使用佇列式佈建,請在下列指令行中加入enable_queued_provisioning: true。詳情請參閱「使用節點集區搭配彈性啟動和排隊佈建」。 - 移除
static_node_count。
在 GitHub 存放區的
examples/gke-a3-highgpu/gke-a3-highgpu.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: a3_highgpu_pool下方,移除下列程式碼行:static_node_count: $(vars.static_node_count)。 在
id: a3_highgpu_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_component_install下方,移除下列區塊:config_path: $(vars.kueue_configuration_path) config_template_vars: num_gpus: $(a3_highgpu_pool.static_gpu_count) accelerator_type: $(vars.accelerator_type)如要使用彈性啟動功能並佇列式佈建,請按照下列三個步驟操作:
將
gpu_nominal_quota: NOMINAL_QUOTA新增至vars區塊。gpu_nominal_quota值用於設定ClusterQueue規格中 GPU 的nominalQuota。在本例中,只有在 GPU 要求總和小於或等於NOMINAL_QUOTA值時,ClusterQueue才會允許工作負載。如要進一步瞭解ClusterQueue,請參閱叢集佇列的 Kueue 文件。將
kueue區塊更新為以下內容:kueue: install: true config_path: $(vars.kueue_configuration_path) config_template_vars: num_gpus: $(vars.gpu_nominal_quota)將
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
在 GitHub 存放區的
examples/gke-a3-highgpu/gke-a3-highgpu-deployment.yaml藍圖中,更新下列變數,使其與部署作業的特定值相符:BUCKET:您在上一個步驟中建立的 Cloud Storage bucket 名稱。DEPLOYMENT_NAME:部署作業的專屬名稱,長度必須介於 6 到 30 個字元之間。如果部署作業名稱在專案中重複,叢集建立作業就會失敗。PROJECT_ID:您的 Google Cloud 專案 ID。REGION:叢集的運算區域。ZONE:A3 High 機器節點集區的運算可用區。AUTHORIZED_CIDR:您要允許連線至叢集的 IP 位址範圍。這個 CIDR 區塊必須包含您要用來呼叫 Terraform 的機器 IP 位址。詳情請參閱「授權網路的運作方式」。- 將
reservation:行替換為provisioning_model: SPOT。 STATIC_NODE_COUNT:叢集中的 A3 High 節點數量。
在
examples/gke-a3-highgpu/gke-a3-highgpu.yaml藍圖中,從 GitHub 存放區進行下列變更:- 在
vars區塊中,將整個reservation區塊 (包括reservation行本身) 替換為spot: true。 在
id: a3_highgpu_pool區段中,移除reservation_affinity區塊。將這個區塊替換為以下程式碼:spot: $(vars.spot)
- 在
產生應用程式預設憑證 (ADC),提供 Terraform 存取權。如果您使用的是 Cloud Shell,可以執行下列指令:
gcloud auth application-default login部署藍圖,使用 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出現提示時,選取「(A)pply」部署藍圖。
- 藍圖會建立虛擬私有雲網路、GPU RDMA 虛擬私有雲網路、服務帳戶、叢集和節點集區。
- 為支援藍圖中的
fio-bench-job-template工作範本,系統會建立Google Cloud bucket、網路儲存空間和永久磁碟區資源。
測試網路效能
建議您驗證已佈建叢集的功能。請使用 NCCL 測試,也就是專為 Google 環境最佳化的 NVIDIA Collective Communications Library (NCCL) 測試。
執行可重現的基準測試
使用 Cluster Toolkit 建立叢集後,您可以按照 GitHub 提供的方案,在所選機器系列上重現大型機器學習開放模型的預先訓練基準。
每份食譜都會提供操作說明,協助您完成下列工作:
- 準備環境。
- 執行基準測試。
- 分析基準測試結果。包括基準測試結果和詳細記錄,方便您進一步分析。
如要查看所有可用於訓練和其他工作負載類型的方案,請前往 GPU 方案 GitHub 存放區。
清除 Cluster Toolkit 建立的資源
如要避免系統持續收取本頁面所用資源的費用,請使用 gcluster destroy 指令清除 Cluster Toolkit 佈建的資源,包括 VPC 網路和 GKE 叢集:
cd ~/cluster-toolkit
./gcluster destroy CLUSTER_NAME/
將 CLUSTER_NAME 替換為叢集名稱。如果是使用 Cluster Toolkit 建立的叢集,叢集名稱會依據 DEPLOYMENT_NAME 命名。
後續步驟
- 如要瞭解如何使用 TAS 和 Kueue 在 GKE 叢集上排定工作負載,請參閱「使用 Topology Aware Scheduling 排定 GKE 工作負載」。
- 如要瞭解如何管理與 GKE 叢集和 AI 工作負載相關的常見事件,請參閱「管理 AI 最佳化 GKE 叢集」。
- 如要瞭解如何測試環境,確保設定正確並進行最佳化,請參閱「叢集網路最佳化總覽」。