本文件說明如何建立 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,請參閱「關於彈性啟動的 GPU 取得能力」。
- 彈性啟動會盡可能使用密集配置模式。如要檢查拓撲,請參閱「查看 GKE 叢集中節點的實體拓撲」。
- 使用 Spot VM 時,只有設定密集配置,才能取得拓撲資訊。
- 如要進一步瞭解如何在 Cluster Toolkit 藍圖中設定這些使用選項,請參閱「GKE 使用選項」。
取得容量:取得容量的程序因用量選項而異。如要瞭解所選用量選項的程序,請參閱「容量總覽」。
需求條件
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 將 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 使用下列項目:
請務必使用最低 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
- 啟動 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:具有預留項目的 Google Cloud專案 ID。預留項目可能位於PROJECT_ID以外的專案。NUM_NODE_POOLS:叢集中要啟用的節點集區數量。如要建立超過 18 個節點的叢集,可以指定多個節點集區。預設值為1。
如要修改進階設定,請編輯
examples/gke-a4x-max-bm/gke-a4x-max-bm.yaml檔案。選用:設定 Google Cloud Managed Lustre,做為高效能共用儲存空間。A4X Max GKE 藍圖預設會啟用 Managed Lustre CSI 驅動程式。如要為叢集佈建 Managed Lustre 執行個體和永久磁碟區,請按照下列步驟操作:
- 開啟
examples/gke-a4x-max-bm/gke-a4x-max-bm.yaml檔案。 - 在
vars區段中,取消註解lustre_instance_id、lustre_size_gib和per_unit_storage_throughput變數。 - 在
# --- MANAGED LUSTRE ADDITIONS ---區段中,取消註解private_service_access、lustre_firewall_rule、managed-lustre和lustre-pv模組。
- 開啟
產生應用程式預設憑證 (ADC),提供 Terraform 存取權。如果您使用的是 Cloud Shell,請使用
gcloud auth application-default login指令: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出現提示時,選取「(A)pply」來部署藍圖。
- 藍圖會建立虛擬私有雲網路、GPU RDMA 虛擬私有雲網路、服務帳戶、叢集和節點集區。
- 為支援藍圖中的
fio-bench-job-template工作範本,系統會建立Google Cloud bucket、網路儲存空間和永久磁碟區資源。
A4X
- 啟動 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/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檔案。選用:設定 Managed Lustre,取得高效能共用儲存空間。A4X GKE 藍圖預設會啟用 Managed Lustre CSI 驅動程式。如要為叢集佈建 Managed Lustre 執行個體和永久磁碟區,請按照下列步驟操作:
- 開啟
examples/gke-a4x/gke-a4x.yaml檔案。 - 在
vars區段中,取消註解lustre_instance_id、lustre_size_gib和per_unit_storage_throughput變數。 - 在
# --- MANAGED LUSTRE ADDITIONS ---區段中,取消註解private_service_access、lustre_firewall_rule、managed-lustre和lustre-pv模組。
- 開啟
產生應用程式預設憑證 (ADC),提供 Terraform 存取權。如果您使用的是 Cloud Shell,請使用
gcloud auth application-default login指令:gcloud auth application-default login使用
gcluster deploy指令部署藍圖,並使用 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 部署作業狀態的運算區域。
選擇 GKE 部署作業的使用選項:
根據預設,部署檔案會設為使用特定預留項目。如要使用其他計費模式 (例如 Spot VM 或彈性啟動佈建模式),請更新 Deployment YAML 檔案。詳情請參閱「GKE 使用選項」。
在 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如果您不確定預留項目中有哪些可用區塊,請參閱「查看預留項目拓撲」。
如要修改進階設定,請編輯
examples/gke-a4/gke-a4.yaml。- 如要將節點集區放在預留項目中的任何位置,請提供預留項目的名稱 (
彈性啟動
在 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欄位,並將該欄位替換為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)
- 在
選用:設定 Managed Lustre,取得高效能共用儲存空間。A4 GKE 藍圖預設會啟用 Managed Lustre CSI 驅動程式。如要為叢集佈建 Managed Lustre 執行個體和永久磁碟區,請按照下列步驟操作:
- 開啟
examples/gke-a4/gke-a4.yaml檔案。 - 在
vars區段中,取消註解lustre_instance_id、lustre_size_gib和per_unit_storage_throughput變數。 - 在
# --- MANAGED LUSTRE ADDITIONS ---區段中,取消註解private_service_access、lustre_firewall_rule、managed-lustre和lustre-pv模組。
- 開啟
產生應用程式預設憑證 (ADC),提供 Terraform 存取權。如果您使用的是 Cloud Shell,請使用
gcloud auth application-default login指令:gcloud auth application-default login使用
gcluster deploy指令部署藍圖,並透過 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 部署作業狀態的運算區域。
選擇 GKE 部署作業的使用選項:
根據預設,部署檔案會設為使用特定預留項目。如要使用其他計費模式 (例如 Spot VM 或彈性啟動佈建模式),請更新 Deployment YAML 檔案。詳情請參閱「GKE 使用選項」。
在 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。
彈性啟動
在 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欄位,並將該欄位替換為enable_flex_start: true。如要使用佇列式佈建,請在下一行新增enable_queued_provisioning: true。詳情請參閱「搭配使用彈性啟動節點集區和佇列式佈建」。 - 移除
static_node_count。
在 GitHub 存放區的
examples/gke-a3-ultragpu/gke-a3-ultragpu.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-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規格中的 GPUnominalQuota。在這個範例中,只有在 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)
- 在
選用:設定 Managed Lustre,取得高效能共用儲存空間。A3 Ultra GKE 藍圖預設會啟用 Managed Lustre CSI 驅動程式。如要為叢集佈建 Managed Lustre 執行個體和永久磁碟區,請按照下列步驟操作:
- 開啟
examples/gke-a3-ultragpu/gke-a3-ultragpu.yaml檔案。 - 在
vars區段中,取消註解lustre_instance_id、lustre_size_gib和per_unit_storage_throughput變數。 - 在
# --- MANAGED LUSTRE ADDITIONS ---區段中,取消註解private_service_access、lustre_firewall_rule、managed-lustre和lustre-pv模組。
- 開啟
產生應用程式預設憑證 (ADC),提供 Terraform 存取權。如果您使用的是 Cloud Shell,請使用
gcloud auth application-default login指令:gcloud auth application-default login使用
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出現提示時,選取「(A)pply」來部署藍圖。
- 藍圖會建立虛擬私有雲網路、GPU RDMA 虛擬私有雲網路、服務帳戶、叢集和節點集區。
- 為支援藍圖中的
fio-bench-job-template工作範本,系統會建立Google Cloud bucket、網路儲存空間和永久磁碟區資源。
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 部署作業狀態的運算區域。
在 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指令。
選擇 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藍圖。- 在
產生應用程式預設憑證 (ADC),提供 Terraform 存取權。如果您使用的是 Cloud Shell,請使用
gcloud auth application-default login指令:gcloud auth application-default login使用
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出現提示時,選取「(A)pply」部署藍圖。藍圖會建立虛擬私有雲網路、服務帳戶、叢集和節點集區。
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 的名稱,必須符合 bucket 命名規定。PROJECT_ID:您的 Google Cloud 專案 ID。COMPUTE_REGION_TERRAFORM_STATE:要儲存 Terraform 部署作業狀態的運算區域。
在 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指令。
選擇 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藍圖。- 在
產生應用程式預設憑證 (ADC),提供 Terraform 存取權。如果您使用的是 Cloud Shell,請使用
gcloud auth application-default login指令:gcloud auth application-default login使用
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出現提示時,選取「(A)pply」部署藍圖。藍圖會建立虛擬私有雲網路、服務帳戶、叢集和節點集區。
執行 Dynamic Workload Scheduler 範例工作
如果您使用 Dynamic Workload Scheduler (彈性啟動或佇列式佈建) 佈建叢集,可以提交 Kubernetes 範例工作,驗證工作負載排程。
如要進一步瞭解 Dynamic Workload Scheduler 佈建模式,請參閱「Dynamic Workload Scheduler 彈性啟動與佇列式佈建」。
提交範例工作
選取計費模式對應的分頁標籤:
彈性啟動
這項工作為選用,僅適用於使用彈性啟動佈建叢集的情況。設定為彈性啟動的工作負載,必須在 Pod 規格中加入 cloud.google.com/gke-flex-start: "true" 節點選取器。
提交範例彈性啟動工作:
kubectl apply -f examples/dws-sample-workloads/sample-job-flex.yaml監控工作和 Pod 的狀態:
kubectl get jobs kubectl describe job JOB_NAME kubectl get pods kubectl describe pod POD_NAME更改下列內容:
JOB_NAME:工作名稱。POD_NAME:Pod 名稱。
工作完成後,請刪除工作資源:
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"
詳情請參閱「佇列式佈建的工作負載資訊清單規定」。
提交範例佇列式佈建工作:
kubectl apply -f examples/dws-sample-workloads/sample-job-flex-queue.yaml監控工作和 Pod 的狀態:
kubectl get jobs kubectl describe job JOB_NAME kubectl get pods kubectl describe pod POD_NAME更改下列內容:
JOB_NAME:工作名稱。POD_NAME:Pod 名稱。
工作完成後,請刪除工作資源:
kubectl delete -f examples/dws-sample-workloads/sample-job-flex-queue.yaml
測試網路效能
建議您驗證已佈建叢集的功能。請使用 NCCL 測試,也就是專為 Google 環境最佳化的 NVIDIA Collective Communications Library (NCCL) 測試。
執行可重現的基準測試
使用 Cluster Toolkit 建立叢集後,您可以按照 GitHub 提供的方案,在所選機器系列上重現大型機器學習開放模型的預先訓練基準。
每份食譜都會提供操作說明,協助您完成下列工作:
- 準備環境。
- 執行基準測試。
- 分析基準測試結果。這項審查包含基準測試結果和詳細記錄,可供進一步分析。
如要查看所有可用於訓練和其他工作負載類型的 recipe,請前往 GPU recipe GitHub 存放區。
清除 Cluster Toolkit 建立的資源
為避免系統針對本頁面使用的資源持續收費,請使用 gcluster destroy 指令,清除 Cluster Toolkit 佈建的資源,包括虛擬私有雲網路和 GKE 叢集:
cd ~/cluster-toolkit
./gcluster destroy CLUSTER_NAME/
將 CLUSTER_NAME 替換為叢集名稱。如果是使用 Cluster Toolkit 建立的叢集,叢集名稱會依據 DEPLOYMENT_NAME 名稱而定。
後續步驟
- 如要瞭解如何使用拓撲感知調度 (TAS) 和 Kueue,在 GKE 叢集上排定工作負載,請參閱「使用拓撲感知調度排定 GKE 工作負載」。
- 如要瞭解如何管理與 GKE 叢集和 AI 工作負載相關的常見事件,請參閱「管理 AI 最佳化 GKE 叢集」。
- 如要瞭解如何測試環境,確保設定和最佳化作業正確無誤,請參閱「叢集網路最佳化總覽」。
- 如要瞭解 GKE 叢集支援的所有計費模式,請參閱「GKE 計費選項」。