建立自行管理的 Slurm 叢集,用於 AI 工作負載

本文說明如何設定及部署自我管理的 Slurm 叢集,並使用 A4X Max、A4X、A4、A3 Ultra、A3 Mega 或 A3 High 機型。如要進一步瞭解這些加速器最佳化機型,請參閱「GPU 機型」一文。

本文的步驟說明如何使用 Cluster Toolkit 建立 Slurm 叢集。Cluster Toolkit 是 Google 提供的開放原始碼工具,可透過藍圖簡化叢集的設定和部署作業。您可以全權控管叢集,但也要負責管理。如要避免管理叢集的開銷,並專注於執行工作負載,請使用 Cluster Director 建立全代管叢集

限制

視叢集中 Compute Engine 執行個體使用的機型而定,適用下列限制:

A4X Max

A4X

A4

  • 使用 A4 機型的執行個體無法享有續用折扣彈性承諾使用折扣
  • A4 機型只能在特定區域和可用區使用。
  • 您無法使用永久磁碟 (區域或可用區)。只能使用 Google Cloud Hyperdisk
  • A4 機型僅適用於 Emerald Rapids CPU 平台
  • 您無法將執行個體的機型變更為 A4 機型,也無法從 A4 機型變更為其他機型。您必須使用這個機型建立新的執行個體。
  • A4 機器類型不支援單一租戶
  • 您無法在 A4 機型上執行 Windows 作業系統。
  • 如果是 A4 執行個體,使用 ethtool -S 監控 GPU 網路時,結尾為 _phy 的實體連接埠計數器不會更新。這是使用 MRDMA 虛擬函式 (VF) 架構的執行個體預期會發生的行為。詳情請參閱「MRDMA functions and network monitoring tools」。
  • 您無法將 2026 年 2 月 4 日前建立的 Hyperdisk ML 磁碟連結至 A4 機器類型。

A3 Ultra

  • 使用 A3 Ultra 機型的執行個體不適用續用折扣彈性承諾使用折扣
  • A3 Ultra 機型僅適用於特定區域和可用區
  • 您無法使用永久磁碟 (區域或可用區)。只能使用 Google Cloud Hyperdisk
  • A3 Ultra 機型僅適用於 Emerald Rapids CPU 平台
  • A3 Ultra 機型不支援變更機型。如要改用或停用這類機器類型,必須建立新的執行個體。
  • 您無法在 A3 Ultra 機型上執行 Windows 作業系統。
  • A3 Ultra 機型不支援單一租戶
  • 如果是 A3 Ultra 執行個體,使用 ethtool -S 監控 GPU 網路時,結尾為 _phy 的實體連接埠計數器不會更新。如果執行個體使用 MRDMA 虛擬函式 (VF) 架構,這是預期行為。詳情請參閱「MRDMA functions and network monitoring tools」。

A3 Mega

A3 High

事前準備

建立 Slurm 叢集前,請先完成下列步驟 (如尚未完成):

  1. 選擇計費方案:您選擇的計費方案會決定取得及使用 GPU 資源的方式。詳情請參閱「選擇消耗量選項」。
  2. 取得容量:取得容量的程序會因消費選項而異。如要瞭解如何為所選用量方案取得容量,請參閱「容量總覽」。
  3. 確認您有足夠的 Filestore 容量配額:部署前,您必須在目標區域中擁有足夠的 Filestore 配額。所需最低容量取決於叢集中的機器類型:
    • A4X Max、A4X、A4、A3 Ultra 和 A3 Mega:需要至少 10 TiB (10,240 GiB) 的 HIGH_SCALE_SSD (可用區) 容量。
    • A3 High:至少需要 2.5 TiB (2,560 GiB) 的 BASIC_SSD (標準) 容量。

    如要查看配額或申請提高配額,請參閱下列文章:

  4. 安裝 Cluster Toolkit:如要佈建 Slurm 叢集,您必須使用 Cluster Toolkit v1.62.0 以上版本。

    如要安裝 Cluster Toolkit,請參閱「設定 Cluster Toolkit」。

必要的角色

如要取得部署 Slurm 叢集所需的權限,請要求系統管理員授予您下列 IAM 角色:

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

您或許也能透過自訂角色或其他預先定義的角色,取得必要權限。

設定儲存空間 bucket

叢集藍圖會使用 Terraform 模組佈建雲端基礎架構。使用 Terraform 時的最佳做法,是在已啟用版本的檔案中遠端儲存狀態。在 Google Cloud上,您可以建立已啟用版本管理的 Cloud Storage bucket。

如要透過 CLI 建立這個值區並啟用版本管理功能,請執行下列指令:

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

更改下列內容:

安裝 Cluster Toolkit

如要在 Google Cloud中使用 Slurm,請先安裝 Cluster Toolkit。如果是 Linux 和 macOS,建議您安裝預先建構的套件組合

安裝 Cluster Toolkit 後,請前往包含 gcluster 二進位檔的目錄:

  • 如果您安裝的是預先建構的套件組合,請變更為 gcluster-bundle 目錄:

    cd gcluster-bundle
  • 如果從來源建構二進位檔,請變更為 cluster-toolkit

    cd cluster-toolkit

    如要部署這個叢集,必須使用 Cluster Toolkit v1.62.0 以上版本。如要查看目前版本,請執行下列指令:

    ./gcluster --version

建立部署檔案

建立部署檔案,用於指定 Cloud Storage bucket、設定網路和子網路的名稱,以及設定專案 ID、區域和可用區等部署變數。

如要建立部署檔案,請按照所需機型和用量選項的步驟操作。

A4X Max

如要建立部署檔案,請使用文字編輯器建立名為 a4xmax-bm-slurm-deployment.yaml 的 YAML 檔案,並新增下列內容。


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  a4x_max_cluster_size: NUMBER_OF_INSTANCES
  a4x_max_reservation_name: RESERVATION_NAME

更改下列內容:

  • BUCKET_NAME:Cloud Storage bucket 的名稱,您已在上一個章節中建立。
  • DEPLOYMENT_NAME:部署作業的名稱。如果建立多個叢集,請務必為每個叢集選取專屬名稱。
  • PROJECT_ID:您的專案 ID。
  • REGION:預留機器的區域。
  • ZONE:您要佈建叢集的可用區。如果您使用以預訂為準的用量選項,帳戶團隊會在容量交付時提供區域和地帶資訊。
  • NUMBER_OF_INSTANCES:叢集中的 A4X Max 裸機執行個體數量。您可以指定任意數量的執行個體。不過,A4X Max 執行個體會以 18 個執行個體 (72 個 GPU) 為一組,透過多節點 NVLink 系統實體互連,形成 NVLink 網域。

    為獲得最佳網路效能,建議您指定 18 個執行個體的倍數值 (例如 18、36 或 54)。建立 A4X Max 叢集時,A4X Max 藍圖會自動建立並套用密集配置政策,每個 18 個執行個體群組的 GPU 拓撲為 1x72

  • RESERVATION_NAME預訂名稱。

A4X

如要建立部署檔案,請使用文字編輯器建立名為 a4xhigh-slurm-deployment.yaml 的 YAML 檔案,並新增下列內容。


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  a4x_cluster_size: NUMBER_OF_VMS
  a4x_reservation_name: RESERVATION_NAME

更改下列內容:

  • BUCKET_NAME:Cloud Storage bucket 的名稱,您已在上一個章節中建立。
  • DEPLOYMENT_NAME:部署作業的名稱。如果建立多個叢集,請務必為每個叢集選取專屬名稱。
  • PROJECT_ID:您的專案 ID。
  • REGION:預留機器的區域。
  • ZONE:您要佈建叢集的可用區。如果您使用以預訂為準的用量選項,帳戶團隊會在容量交付時提供區域和地帶資訊。
  • NUMBER_OF_VMS:叢集中的 A4X VM 數量。您可以指定任意數量的 VM。不過,A4X VM 會以 18 個 VM (72 個 GPU) 為一組,透過多節點 NVLink 系統實體互連,形成 NVLink 網域。

    為獲得最佳網路效能,建議您指定 18 部 VM 的倍數值 (例如 18、36 或 54)。建立 A4X 叢集時,A4X 藍圖會自動建立並套用密集配置政策,每個 18 個 VM 的群組都會採用 1x72 GPU 拓撲。如要進一步瞭解 A4X 拓撲,請參閱「A4X 基礎知識」。

  • RESERVATION_NAME預訂名稱。

A4

您需要在部署檔案中加入的參數,取決於部署作業使用的用量選項。選取與用量選項的佈建模式對應的分頁。

取決於預留項目

如要建立部署檔案,請使用文字編輯器建立名為 a4high-slurm-deployment.yaml 的 YAML 檔案,並新增下列內容。


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  a4h_cluster_size: NUMBER_OF_VMS
  a4h_reservation_name: RESERVATION_NAME

更改下列內容:

  • BUCKET_NAME:Cloud Storage bucket 的名稱,您已在上一個章節中建立。
  • DEPLOYMENT_NAME:部署作業的名稱。如果建立多個叢集,請務必為每個叢集選取專屬名稱。
  • PROJECT_ID:您的專案 ID。
  • REGION:預留機器的區域。
  • ZONE:您要佈建叢集的可用區。如果您使用以預訂為準的用量選項,帳戶團隊會在容量交付時提供區域和地帶資訊。
  • NUMBER_OF_VMS:叢集所需的 VM 數量。
  • RESERVATION_NAME預訂名稱。

彈性啟動

如要建立部署檔案,請使用文字編輯器建立名為 a4high-slurm-deployment.yaml 的 YAML 檔案,並新增下列內容。


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  a4h_cluster_size: NUMBER_OF_VMS
  a4h_dws_flex_enabled: true

更改下列內容:

  • BUCKET_NAME:Cloud Storage bucket 的名稱,您已在上一個章節中建立。
  • DEPLOYMENT_NAME:部署作業的名稱。如果建立多個叢集,請務必為每個叢集選取專屬名稱。
  • PROJECT_ID:您的專案 ID。
  • REGION:要佈建叢集的區域。
  • ZONE:要佈建叢集的可用區。
  • NUMBER_OF_VMS:叢集所需的 VM 數量。

這項部署作業會佈建靜態運算節點,也就是說,叢集隨時都會有固定數量的節點。如要改為啟用叢集的自動調度資源功能,請使用 examples/machine-learning/a4-highgpu-8g/a4high-slurm-blueprint.yaml 檔案,並將 node_count_staticnode_count_dynamic_max 的值編輯為下列值:

      node_count_static: 0
      node_count_dynamic_max: $(vars.a4h_cluster_size)

Spot

如要建立部署檔案,請使用文字編輯器建立名為 a4high-slurm-deployment.yaml 的 YAML 檔案,並新增下列內容。


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  a4h_cluster_size: NUMBER_OF_VMS
  a4h_enable_spot_vm: true

更改下列內容:

  • BUCKET_NAME:Cloud Storage bucket 的名稱,您已在上一個章節中建立。
  • DEPLOYMENT_NAME:部署作業的名稱。如果建立多個叢集,請務必為每個叢集選取專屬名稱。
  • PROJECT_ID:您的專案 ID。
  • REGION:要佈建叢集的區域。
  • ZONE:要佈建叢集的可用區。
  • NUMBER_OF_VMS:叢集所需的 VM 數量。

A3 Ultra

您需要在部署檔案中加入的參數,取決於部署作業使用的用量選項。選取與用量選項的佈建模式對應的分頁。

取決於預留項目

如要建立部署檔案,請使用文字編輯器建立名為 a3ultra-slurm-deployment.yaml 的 YAML 檔案,並新增下列內容。


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  a3u_cluster_size: NUMBER_OF_VMS
  a3u_reservation_name: RESERVATION_NAME

更改下列內容:

  • BUCKET_NAME:Cloud Storage bucket 的名稱,您已在上一個章節中建立。
  • DEPLOYMENT_NAME:部署作業的名稱。如果建立多個叢集,請務必為每個叢集選取專屬名稱。
  • PROJECT_ID:您的專案 ID。
  • REGION:預留機器的區域。
  • ZONE:您要佈建叢集的可用區。如果您使用以預訂為準的用量選項,帳戶團隊會在容量交付時提供區域和地帶資訊。
  • NUMBER_OF_VMS:叢集所需的 VM 數量。
  • RESERVATION_NAME預訂名稱。

彈性啟動

如要建立部署檔案,請使用文字編輯器建立名為 a3ultra-slurm-deployment.yaml 的 YAML 檔案,並新增下列內容。


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  a3u_cluster_size: NUMBER_OF_VMS
  a3u_dws_flex_enabled: true

更改下列內容:

  • BUCKET_NAME:Cloud Storage bucket 的名稱,您已在上一個章節中建立。
  • DEPLOYMENT_NAME:部署作業的名稱。如果建立多個叢集,請務必為每個叢集選取專屬名稱。
  • PROJECT_ID:您的專案 ID。
  • REGION:要佈建叢集的區域。
  • ZONE:要佈建叢集的可用區。
  • NUMBER_OF_VMS:叢集所需的 VM 數量。

這項部署作業會佈建靜態運算節點,也就是說,叢集隨時都會有固定數量的節點。如要改為啟用叢集的自動調度資源功能,請使用 examples/machine-learning/a3-ultragpu-8g/a3ultra-slurm-blueprint.yaml 檔案,並將 node_count_staticnode_count_dynamic_max 的值編輯為下列值:

      node_count_static: 0
      node_count_dynamic_max: $(vars.a3u_cluster_size)

Spot

如要建立部署檔案,請使用文字編輯器建立名為 a3ultra-slurm-deployment.yaml 的 YAML 檔案,並新增下列內容。


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  a3u_cluster_size: NUMBER_OF_VMS
  a3u_enable_spot_vm: true

更改下列內容:

  • BUCKET_NAME:Cloud Storage bucket 的名稱,您已在上一個章節中建立。
  • DEPLOYMENT_NAME:部署作業的名稱。如果建立多個叢集,請務必為每個叢集選取專屬名稱。
  • PROJECT_ID:您的專案 ID。
  • REGION:要佈建叢集的區域。
  • ZONE:要佈建叢集的可用區。
  • NUMBER_OF_VMS:叢集所需的 VM 數量。

A3 Mega

您需要在部署檔案中加入的參數,取決於部署作業使用的用量選項。選取與用量選項的佈建模式對應的分頁。

取決於預留項目

如要建立部署檔案,請建立名為 a3mega-slurm-deployment.yaml 的 YAML 檔案,並加入下列內容。


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  network_name_system: SYSTEM_NETWORK_NAME
  subnetwork_name_system: SYSTEM_SUBNET_NAME
  slurm_cluster_name: CLUSTER_NAME
  a3mega_cluster_size: NUMBER_OF_VMS
  a3mega_reservation_name: RESERVATION_NAME
  a3mega_partition_name: PARTITION_NAME

更改下列內容:

  • BUCKET_NAME:Cloud Storage bucket 的名稱,您已在上一個章節中建立。
  • DEPLOYMENT_NAME:部署作業的名稱。如果建立多個叢集,請務必為每個叢集選取專屬名稱。
  • PROJECT_ID:您的專案 ID。
  • SYSTEM_NETWORK_NAME:用於系統網路的虛擬私有雲網路名稱。
  • SYSTEM_SUBNET_NAME:用於系統網路的子網路名稱。
  • CLUSTER_NAME:Slurm 叢集的名稱。
  • REGION:預留機器的區域。
  • ZONE:您要佈建叢集的可用區。如果您使用以預訂為準的用量選項,帳戶團隊會在容量交付時提供區域和地帶資訊。
  • NUMBER_OF_VMS:叢集所需的 VM 數量。
  • RESERVATION_NAME預訂名稱。
  • PARTITION_NAME:Slurm 分區的名稱。

彈性啟動

如要建立部署檔案,請建立名為 a3mega-slurm-deployment.yaml 的 YAML 檔案,並加入下列內容。


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  network_name_system: SYSTEM_NETWORK_NAME
  subnetwork_name_system: SYSTEM_SUBNET_NAME
  slurm_cluster_name: CLUSTER_NAME
  a3mega_cluster_size: NUMBER_OF_VMS
  a3mega_dws_flex_enabled: true

更改下列內容:

  • BUCKET_NAME:Cloud Storage bucket 的名稱,您已在上一個章節中建立。
  • DEPLOYMENT_NAME:部署作業的名稱。如果建立多個叢集,請務必為每個叢集選取專屬名稱。
  • PROJECT_ID:您的專案 ID。
  • SYSTEM_NETWORK_NAME:用於系統網路的虛擬私有雲網路名稱。
  • SYSTEM_SUBNET_NAME:用於系統網路的子網路名稱。
  • CLUSTER_NAME:Slurm 叢集的名稱。
  • REGION:要佈建叢集的區域。
  • ZONE:要佈建叢集的可用區。
  • NUMBER_OF_VMS:叢集所需的 VM 數量。

這項部署作業會佈建靜態運算節點,也就是說,叢集隨時都會有固定數量的節點。如要改為啟用叢集的自動調度資源功能,請使用 examples/machine-learning/a3-megagpu-8g/a3mega-slurm-blueprint.yaml 檔案,並將 node_count_staticnode_count_dynamic_max 的值編輯為下列值:

      node_count_static: 0
      node_count_dynamic_max: $(vars.a3mega_cluster_size)

Spot

如要建立部署檔案,請建立名為 a3mega-slurm-deployment.yaml 的 YAML 檔案,並加入下列內容。


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  network_name_system: SYSTEM_NETWORK_NAME
  subnetwork_name_system: SYSTEM_SUBNET_NAME
  slurm_cluster_name: CLUSTER_NAME
  a3mega_cluster_size: NUMBER_OF_VMS
  a3mega_enable_spot_vm: true

更改下列內容:

  • BUCKET_NAME:Cloud Storage bucket 的名稱,您已在上一個章節中建立。
  • DEPLOYMENT_NAME:部署作業的名稱。如果建立多個叢集,請務必為每個叢集選取專屬名稱。
  • PROJECT_ID:您的專案 ID。
  • SYSTEM_NETWORK_NAME:用於系統網路的虛擬私有雲網路名稱。
  • SYSTEM_SUBNET_NAME:用於系統網路的子網路名稱。
  • CLUSTER_NAME:Slurm 叢集的名稱。
  • REGION:要佈建叢集的區域。
  • ZONE:要佈建叢集的可用區。
  • NUMBER_OF_VMS:叢集所需的 VM 數量。

A3 High

您需要在部署檔案中加入的參數,取決於部署作業使用的用量選項。選取與用量選項的佈建模式對應的分頁。

取決於預留項目

如要建立部署檔案,請建立名為 a3high-slurm-deployment.yaml 的 YAML 檔案,並加入下列內容。


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  tcpx_kernel_login: TCPX_KERNEL_LOGIN
  tcpx_kernel_password: TCPX_KERNEL_PASSWORD
  keyserver_ubuntu_key: KEYSERVER_UBUNTU_KEY

  network_name_system: SYSTEM_NETWORK_NAME
  subnetwork_name_system: SYSTEM_SUBNET_NAME
  slurm_cluster_name: CLUSTER_NAME
  a3_static_cluster_size: NUMBER_OF_VMS
  a3_reservation_name: RESERVATION_NAME
  a3_partition_name: PARTITION_NAME

更改下列內容:

  • BUCKET_NAME:Cloud Storage bucket 的名稱,您已在上一個章節中建立。
  • DEPLOYMENT_NAME:部署作業的名稱。如果建立多個叢集,請務必為每個叢集選取專屬名稱。
  • PROJECT_ID:您的專案 ID。
  • TCPX_KERNEL_LOGINTCPX_KERNEL_PASSWORDKEYSERVER_UBUNTU_KEY:A3 High 最佳化圖片的技術憑證。這些值由 Google Cloud 帳戶團隊提供。詳情請參閱「取得 GPUDirect-TCPX 的憑證」。
  • SYSTEM_NETWORK_NAME:用於系統網路的虛擬私有雲網路名稱。
  • SYSTEM_SUBNET_NAME:用於系統網路的子網路名稱。
  • CLUSTER_NAME:Slurm 叢集的名稱。
  • REGION:預留機器的區域。
  • ZONE:您要佈建叢集的可用區。如果您使用以預訂為準的用量選項,帳戶團隊會在容量交付時提供區域和地帶資訊。
  • NUMBER_OF_VMS:叢集所需的 VM 數量。
  • RESERVATION_NAME預訂名稱。
  • PARTITION_NAME:Slurm 分區的名稱。

彈性啟動

如要建立部署檔案,請建立名為 a3high-slurm-deployment.yaml 的 YAML 檔案,並加入下列內容。


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  tcpx_kernel_login: TCPX_KERNEL_LOGIN
  tcpx_kernel_password: TCPX_KERNEL_PASSWORD
  keyserver_ubuntu_key: KEYSERVER_UBUNTU_KEY

  network_name_system: SYSTEM_NETWORK_NAME
  subnetwork_name_system: SYSTEM_SUBNET_NAME
  slurm_cluster_name: CLUSTER_NAME
  a3_static_cluster_size: NUMBER_OF_VMS
  a3_dws_flex_enabled: true

更改下列內容:

  • BUCKET_NAME:Cloud Storage bucket 的名稱,您已在上一個章節中建立。
  • DEPLOYMENT_NAME:部署作業的名稱。如果建立多個叢集,請務必為每個叢集選取專屬名稱。
  • PROJECT_ID:您的專案 ID。
  • TCPX_KERNEL_LOGINTCPX_KERNEL_PASSWORDKEYSERVER_UBUNTU_KEY:A3 High 最佳化圖片的技術憑證。這些值由 Google Cloud 帳戶團隊提供。詳情請參閱「取得 GPUDirect-TCPX 的憑證」。
  • SYSTEM_NETWORK_NAME:用於系統網路的虛擬私有雲網路名稱。
  • SYSTEM_SUBNET_NAME:用於系統網路的子網路名稱。
  • CLUSTER_NAME:Slurm 叢集的名稱。
  • REGION:要佈建叢集的區域。
  • ZONE:要佈建叢集的可用區。
  • NUMBER_OF_VMS:叢集所需的 VM 數量。

這項部署作業會佈建靜態運算節點,也就是說,叢集隨時都會有固定數量的節點。如要改為啟用叢集的自動調度資源功能,請使用 examples/machine-learning/a3-highgpu-8g/a3high-slurm-blueprint.yaml 檔案,並將 node_count_staticnode_count_dynamic_max 的值編輯為下列值:

      node_count_static: 0
      node_count_dynamic_max: $(vars.a3_static_cluster_size)

Spot

如要建立部署檔案,請建立名為 a3high-slurm-deployment.yaml 的 YAML 檔案,並加入下列內容。


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  tcpx_kernel_login: TCPX_KERNEL_LOGIN
  tcpx_kernel_password: TCPX_KERNEL_PASSWORD
  keyserver_ubuntu_key: KEYSERVER_UBUNTU_KEY

  network_name_system: SYSTEM_NETWORK_NAME
  subnetwork_name_system: SYSTEM_SUBNET_NAME
  slurm_cluster_name: CLUSTER_NAME
  a3_static_cluster_size: NUMBER_OF_VMS
  a3_enable_spot_vm: true

更改下列內容:

  • BUCKET_NAME:Cloud Storage bucket 的名稱,您已在上一個章節中建立。
  • DEPLOYMENT_NAME:部署作業的名稱。如果建立多個叢集,請務必為每個叢集選取專屬名稱。
  • PROJECT_ID:您的專案 ID。
  • TCPX_KERNEL_LOGINTCPX_KERNEL_PASSWORDKEYSERVER_UBUNTU_KEY:A3 High 最佳化圖片的技術憑證。這些值由 Google Cloud 帳戶團隊提供。詳情請參閱「取得 GPUDirect-TCPX 的憑證」。
  • SYSTEM_NETWORK_NAME:用於系統網路的虛擬私有雲網路名稱。
  • SYSTEM_SUBNET_NAME:用於系統網路的子網路名稱。
  • CLUSTER_NAME:Slurm 叢集的名稱。
  • REGION:要佈建叢集的區域。
  • ZONE:要佈建叢集的可用區。
  • NUMBER_OF_VMS:叢集所需的 VM 數量。

佈建 Slurm 叢集

Cluster Toolkit 會根據您在上一個步驟中建立的部署檔案和預設叢集藍圖,佈建叢集。如要進一步瞭解藍圖安裝的軟體 (包括 NVIDIA 驅動程式和 CUDA),請參閱 Slurm 自訂映像檔

如要佈建叢集,請選取下列其中一個選項,從 Cluster Toolkit 目錄執行機型的指令。這個步驟大約需要 20 到 30 分鐘。

A4X Max

./gcluster deploy -d a4xmax-bm-slurm-deployment.yaml examples/machine-learning/a4x-maxgpu-4g-metal/a4xmax-bm-slurm-blueprint.yaml --auto-approve

A4X

./gcluster deploy -d a4xhigh-slurm-deployment.yaml examples/machine-learning/a4x-highgpu-4g/a4xhigh-slurm-blueprint.yaml --auto-approve

A4

./gcluster deploy -d a4high-slurm-deployment.yaml examples/machine-learning/a4-highgpu-8g/a4high-slurm-blueprint.yaml --auto-approve

A3 Ultra

./gcluster deploy -d a3ultra-slurm-deployment.yaml examples/machine-learning/a3-ultragpu-8g/a3ultra-slurm-blueprint.yaml --auto-approve

A3 Mega

./gcluster deploy -d a3mega-slurm-deployment.yaml examples/machine-learning/a3-megagpu-8g/a3mega-slurm-blueprint.yaml --auto-approve

A3 High

./gcluster deploy -d a3high-slurm-deployment.yaml examples/machine-learning/a3-highgpu-8g/a3high-slurm-blueprint.yaml --auto-approve

連線至 Slurm 叢集

如要存取叢集,請登入 Slurm 登入節點。嘗試連線至節點時,如果發生錯誤,請參閱「排解 SSH 錯誤」。

如要連線至叢集中的登入節點,請選取下列其中一個選項:

控制台

  1. 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。

    前往 VM 執行個體頁面

  2. 找出登入節點,其名稱為 DEPLOYMENT_NAME-login-001

  3. 在節點的列中,按一下「連線」欄中的「SSH」

gcloud

如要連線至叢集中的登入節點,請完成下列步驟:

  1. 如要找出登入節點,請使用下列 gcloud compute instances list 指令

    gcloud compute instances list \
        --filter="name ~ login" \
        --format "value(name)" \
        --zones=ZONE
    

    如果輸出內容列出多個 Slurm 叢集,您可以根據先前步驟中指定的 DEPLOYMENT_NAME 識別登入節點。

  2. 如要連線至登入節點,請使用 gcloud compute ssh 指令並加上 --tunnel-through-iap 旗標:

    gcloud compute ssh LOGIN_NODE \
        --tunnel-through-iap \
        --zone=ZONE
    

    更改下列內容:

    • ZONE:節點所在的可用區。

    • LOGIN_NODE:登入節點的名稱。

測試 Slurm 叢集的網路效能

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

重新部署 Slurm 叢集

如需增加運算節點數量或在叢集中新增分割區,您可能需要重新部署 Slurm 叢集,藉此更新叢集設定。使用先前部署作業的現有映像檔,可加快叢集重新部署作業。如要避免在重新部署期間建立新映像檔,請指定 --only 標記。

如要使用現有映像檔重新部署叢集,請執行下列操作:

  1. 連線至叢集

  2. 根據叢集使用的機型,選取下列其中一個選項。本節中的指令僅適用於已存在映像檔的重新部署作業。這項指令只會重新部署叢集及其基礎架構。

    A4X Max

    ./gcluster deploy -d a4xmax-bm-slurm-deployment.yaml examples/machine-learning/a4x-maxgpu-4g-metal/a4xmax-bm-slurm-blueprint.yaml --only cluster-env,cluster --auto-approve -w

    A4X

    ./gcluster deploy -d a4xhigh-slurm-deployment.yaml examples/machine-learning/a4x-highgpu-4g/a4xhigh-slurm-blueprint.yaml --only cluster-env,cluster --auto-approve -w

    A4

    ./gcluster deploy -d a4high-slurm-deployment.yaml examples/machine-learning/a4-highgpu-8g/a4high-slurm-blueprint.yaml --only cluster-env,cluster -w --auto-approve

    A3 Ultra

    ./gcluster deploy -d a3ultra-slurm-deployment.yaml examples/machine-learning/a3-ultragpu-8g/a3ultra-slurm-blueprint.yaml --only cluster-env,cluster -w --auto-approve

    A3 Mega

    ./gcluster deploy -d a3mega-slurm-deployment.yaml examples/machine-learning/a3-megagpu-8g/a3mega-slurm-blueprint.yaml --only cluster-env,cluster -w --auto-approve

    A3 High

    ./gcluster deploy -d a3high-slurm-deployment.yaml examples/machine-learning/a3-highgpu-8g/a3high-slurm-blueprint.yaml --only cluster-env,cluster -w --auto-approve

刪除 Slurm 叢集

根據預設,A4X Max、A4X、A4 和 A3 Ultra 藍圖會在 Filestore 執行個體上,啟用防刪除功能。如要在刪除 Slurm 叢集時刪除 Filestore 執行個體,請先停用防刪除功能,再執行刪除指令。如需操作說明,請參閱「為現有執行個體設定或移除防刪除功能」。

如要刪除 Slurm 叢集,請完成下列步驟:

  1. 如果尚未中斷與叢集的連線,請先執行這項操作。

  2. 執行 destroy 指令前,請前往 Cluster Toolkit 目錄的根層級。

  3. 如要刪除叢集,請執行下列指令:

    ./gcluster destroy DEPLOYMENT_FOLDER --auto-approve

    DEPLOYMENT_FOLDER 替換為部署資料夾的名稱。

Cluster Toolkit 毀損叢集時,輸出內容會類似於下列範例:

Destroy complete! Resources: DEPLOYMENT_NAME destroyed.

後續步驟