本頁面說明如何建立自己的 AI 最佳化 Google Kubernetes Engine (GKE) 叢集,使用 A4X、A4、A3 Ultra、A3 Mega 和 A3 High (8 個 GPU) 虛擬機器 (VM),支援 AI 和機器學習工作負載。
A4X、A4、A3 Ultra、A3 Mega 和 A3 High (8 個 GPU) 系列機型可讓您執行大規模 AI/ML 叢集,並提供目標工作負載放置、進階叢集維護控制和拓撲感知排程等功能。詳情請參閱叢集管理總覽。
GKE 提供單一平台介面,可執行各種工作負載,滿足貴機構的需求。包括高效能分散式預先訓練、模型微調、模型推論、應用程式服務,以及支援服務。GKE 可減輕管理多個平台的作業負擔。
選擇如何建立 AI 最佳化 GKE 叢集
下列叢集建立選項在叢集設定和工作負載排程方面,各有不同程度的便利性和彈性:
使用運算、儲存空間和網路資源的預設設定,以及啟用 GPUDirect RDMA-over-Converged-Ethernet (RoCE),建立叢集:
- 使用 Cluster Toolkit 快速建立可供實際工作環境使用的 GKE 叢集。
- 使用加速處理套件 (XPK) 快速建立 GKE 叢集,進行概念驗證和測試。
或者,您也可以手動建立 GKE 叢集,以便精確自訂或擴充現有的實際工作 GKE 環境。如要手動建立 AI 最佳化 GKE 叢集,請參閱下列其中一頁:
- A4X:建立自訂 AI 最佳化 GKE 叢集,使用 A4X。
- A4 或 A3 Ultra:建立使用 A4 或 A3 Ultra 的自訂 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)
- Kubernetes Engine 管理員 (
選擇用量方案並取得容量
選擇使用選項。請根據您取得及使用 GPU 資源的方式做出選擇。詳情請參閱「選擇消耗選項」。
選擇 GKE 的用量選項時,請考慮下列額外資訊:
- A4X VM 無法透過彈性啟動佈建。
- 如要進一步瞭解彈性啟動 (搶先版) 和 GKE,請參閱「關於彈性啟動的 GPU 取得能力」。
- 彈性啟動會盡可能使用密集配置。如要檢查拓撲,請參閱「查看 GKE 叢集中節點的實體拓撲」。
- 使用 Spot VM 時,只有在設定密集配置時,才能取得拓撲資訊。
取得容量。取得容量的程序因每個用量選項而異。
如要瞭解所選用量方案的程序,請參閱「容量總覽」。
需求條件
AI 最佳化 GKE 叢集必須符合下列條件:
如果是 A4X,請務必使用 GKE 1.33.4-gke.1036000 以上版本 (適用於 1.33 以上版本)。如果是 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,讓 A4X 節點集區使用 A4X 的網路功能。
請務必使用最低 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 Ultra 節點集區,您必須將磁碟類型設為
hyperdisk-balanced。如要使用 GPUDirect RDMA,請視機器類型使用下列最低版本:
- A4X:請參閱上述版本需求。
- A4:請使用 1.32.2-gke.1475000 以上版本。
- A3 Ultra:使用 1.31.4-gke.1183000 以上版本。
如要使用 GPUDirect RDMA,GKE 節點必須使用 Container-Optimized OS 節點映像檔。不支援 Ubuntu 和 Windows 節點映像檔。
您必須使用取決於預留項目的佈建模式,才能建立搭載 A4X 的叢集。系統不支援其他佈建模型。
建立叢集
請按照下列操作說明,使用 Cluster Toolkit 或 XPK 建立叢集。
使用 Cluster Toolkit 建立叢集
本節將逐步說明如何建立叢集,確保專案遵循最佳做法,並符合 AI 適用 GKE 叢集的需求。
A4X
- 啟動 Cloud Shell。您可以使用其他環境,但我們建議使用 Cloud Shell,因為 Cluster Toolkit 的依附元件已預先安裝。如不想使用 Cloud Shell,請按照安裝依附元件的指示操作,準備其他環境。
從 Git 存放區複製 Cluster Toolkit:
cd ~ git clone https://github.com/GoogleCloudPlatform/cluster-toolkit.git安裝 Cluster Toolkit:
cd cluster-toolkit && git checkout main && make建立 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 部署作業狀態的運算區域。
在
examples/gke-a4x/gke-a4x-deployment.yaml藍圖中 (位於 GitHub 存放區),填入terraform_backend_defaults和vars區段中的下列設定,以符合部署作業的特定值: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 網域取得一個子區塊的1x72GPU 拓撲。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檔案。您也可以選擇在叢集上啟用叢集健康狀態掃描器 (CHS)。CHS 會執行測試,確認叢集是否已準備好執行工作負載,藉此檢查 GPU 叢集的健康狀態。如要啟用 CHS,請在
examples/gke-a4x/gke-a4x-deployment.yaml檔案中進行下列變更:在
vars區塊中,將enable_periodic_health_checks欄位設為true。根據預設,健康檢查會在太平洋標準時間每週日凌晨 12:00 執行。如要變更這項設定,請在
vars區塊中,以 cron 格式將health_check_schedule欄位設為適當值。
以 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)
產生應用程式預設憑證 (ADC),授予 Terraform 存取權。如果您使用 Cloud Shell,可以執行下列指令:
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 buckets、網路儲存空間和永久磁碟區資源。
A4
- 啟動 Cloud Shell。您可以使用其他環境,但我們建議使用 Cloud Shell,因為 Cluster Toolkit 的依附元件已預先安裝。如不想使用 Cloud Shell,請按照安裝依附元件的指示操作,準備其他環境。
從 Git 存放區複製 Cluster Toolkit:
cd ~ git clone https://github.com/GoogleCloudPlatform/cluster-toolkit.git安裝 Cluster Toolkit:
cd cluster-toolkit && git checkout main && make建立 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 部署作業狀態的運算區域。
建立叢集時需要編輯的檔案,取決於您用於部署的消耗選項。選取與用量選項的佈建模型對應的分頁。
取決於預留項目
在
examples/gke-a4/gke-a4-deployment.yaml藍圖中 (位於 GitHub 存放區),填入terraform_backend_defaults和vars區段中的下列設定,以符合部署作業的特定值: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。彈性啟動
在
examples/gke-a4/gke-a4-deployment.yaml藍圖中 (位於 GitHub 存放區),填入terraform_backend_defaults和vars區段中的下列設定,以符合部署作業的特定值: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。
在
examples/gke-a4/gke-a4.yamlGitHub 存放區中的藍圖,進行下列變更:- 在
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規格中的 GPUnominalQuota(請參閱下方的設定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
在
examples/gke-a4/gke-a4-deployment.yaml藍圖中 (位於 GitHub 存放區),填入terraform_backend_defaults和vars區段中的下列設定,以符合部署作業的特定值: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。
在
examples/gke-a4/gke-a4.yamlGitHub 存放區中的藍圖,進行下列變更:- 在
vars區塊中,將整個reservation區塊 (包括reservation行本身) 替換為spot: true。 在
id: a4-pool下方移除reservation_affinity區塊。將這個區塊替換為下列程式碼行:spot: $(vars.spot)
- 在
您也可以選擇在叢集上啟用叢集健康狀態掃描器 (CHS)。CHS 會執行測試,確認叢集是否已準備好執行工作負載,藉此檢查 GPU 叢集的健康狀態。如要啟用 CHS,請在
examples/gke-a4/gke-a4-deployment.yaml檔案中進行下列變更:在
vars區塊中,將enable_periodic_health_checks欄位設為true。根據預設,健康檢查會在太平洋標準時間每週日凌晨 12:00 執行。如要變更這項設定,請在
vars區塊中,以 cron 格式將health_check_schedule欄位設為適當值。
以 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)
產生應用程式預設憑證 (ADC),授予 Terraform 存取權。如果您使用 Cloud Shell,可以執行下列指令:
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 buckets、網路儲存空間和永久磁碟區資源。
A3 Ultra
- 啟動 Cloud Shell。您可以使用其他環境,但我們建議使用 Cloud Shell,因為 Cluster Toolkit 的依附元件已預先安裝。如不想使用 Cloud Shell,請按照安裝依附元件的指示操作,準備其他環境。
從 Git 存放區複製 Cluster Toolkit:
cd ~ git clone https://github.com/GoogleCloudPlatform/cluster-toolkit.git安裝 Cluster Toolkit:
cd cluster-toolkit && git checkout main && make建立 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 部署作業狀態的運算區域。
建立叢集時需要編輯的檔案,取決於您用於部署的消耗選項。選取與用量選項的佈建模型對應的分頁。
取決於預留項目
在
examples/gke-a3-ultragpu/gke-a3-ultragpu-deployment.yamlGitHub 存放區的藍圖中,將terraform_backend_defaults和vars區段中的下列變數替換為部署作業的特定值: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。彈性啟動
在
examples/gke-a3-ultragpu/gke-a3-ultragpu-deployment.yamlGitHub 存放區的藍圖中,將terraform_backend_defaults和vars區段中的下列變數替換為部署作業的特定值: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。
在
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規格中的 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 存放區的藍圖中,填入
terraform_backend_defaults和vars區段的下列設定,以符合部署作業的特定值:examples/gke-a3-ultragpu/gke-a3-ultragpu-deployment.yamlDEPLOYMENT_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。
在
examples/gke-a3-ultragpu/gke-a3-ultragpu.yamlGitHub 存放區中的藍圖,進行下列變更:- 在
vars區塊中,將整個reservation區塊 (包括reservation行本身) 替換為spot: true。 在
id: a3-ultragpu-pool下方移除reservation_affinity區塊。將這個區塊替換為下列程式碼行:spot: $(vars.spot)
- 在
您也可以選擇在叢集上啟用叢集健康狀態掃描器 (CHS)。CHS 會執行測試,確認叢集是否已準備好執行工作負載,藉此檢查 GPU 叢集的健康狀態。如要啟用 CHS,請在
examples/gke-a3-ultragpu/gke-a3-ultragpu-deployment.yaml檔案中進行下列變更:在
vars區塊中,將enable_periodic_health_checks欄位設為true。根據預設,健康檢查會在太平洋標準時間每週日凌晨 12:00 執行。如要變更這項設定,請在
vars區塊中,以 cron 格式將health_check_schedule欄位設為適當值。
以 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)
產生應用程式預設憑證 (ADC),授予 Terraform 存取權。如果您使用 Cloud Shell,可以執行下列指令:
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、網路儲存空間和永久磁碟區資源。
使用 XPK 建立叢集並執行工作負載
透過加速處理套件 (XPK),您可以快速佈建及使用叢集。XPK 會產生預先設定且經過訓練最佳化的基礎架構,非常適合以執行工作負載為主要目標的情況。
使用 XPK 建立叢集,並透過 A3 Ultra VM 執行工作負載:
- 安裝必要工具,以符合 XPK 先決條件。
- 複製 XPK 最新標記版本的版本號碼,例如「v0.8.0」。在下列指令中,將
XPK_TAG替換為最新 XPK 版本號碼。 在 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使用 A3 Ultra VM 建立標準叢集。您可以使用預留容量,佈建叢集的節點:
python3 xpk.py cluster create \ --cluster=CLUSTER_NAME \ --device-type=h200-141gb-8 \ --zone=COMPUTE_ZONE \ --project=PROJECT_ID \ --num-nodes=NUM_NODES \ --reservation=RESERVATION_NAME請替換下列變數:
確認叢集已成功建立:
python3 xpk.py cluster list --zone=COMPUTE_ZONE --project=PROJECT_ID選用:執行工作負載來測試叢集環境:
python3 xpk.py workload create \ --workload WORKLOAD_NAME --command "echo goodbye" \ --cluster CLUSTER_NAME \ --device-type=h200-141gb-8 \ --num-nodes=WORKLOAD_NUM_NODES \ --zone=COMPUTE_ZONE \ --project=PROJECT_ID請替換下列變數:
測試網路效能
建議您驗證已佈建叢集的功能。如要執行這項操作,請使用 NCCL/gIB 測試,也就是針對 Google 環境最佳化的 NVIDIA Collective Communications Library (NCCL) 測試。
執行可重現的基準測試
您可以在 GKE 的 A4 和 A3 Ultra VM 上,重現大型機器學習開放模型的預先訓練基準。
每份食譜都會提供完成下列工作的指示:
- 準備環境。
- 執行基準測試。
- 分析基準結果。包括基準測試結果和詳細記錄,方便您進一步分析。
如要查看所有可用的做法,請前往 GPU 做法 GitHub 存放區。
| 模型 | 架構 | 方案 |
|---|---|---|
| Llama-3.1-70B | MaxText | 32 個節點的工作負載 |
| Llama-3.1-70B | NeMo | 32 個節點的工作負載 |
| Mixtral-8-7B | NeMo | 32 個節點的工作負載 |
清除 Cluster Toolkit 建立的資源
如要避免系統持續收取本頁面所用資源的費用,請清除 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 叢集」。
- 如要瞭解如何測試環境,確保設定正確並進行最佳化,請參閱「叢集網路最佳化總覽」