使用 A4 VM 建立自行管理的 Slurm 叢集
本頁面說明如何使用 gcloud CLI 和 Cluster Toolkit,透過 A4 加速器最佳化機型,快速建立及部署 AI 適用的 Slurm 叢集。
A4 加速器最佳化機型連接的是 NVIDIA B200 GPU,專為密集型 AI 運算而設計,可協助 Slurm 叢集有效處理大規模模型訓練和推論作業。如要進一步瞭解 Google Cloud上的 A4 加速器最佳化機型,請參閱「GPU 機型」。
您也可以使用 Cluster Director 建立 A4 型 Slurm 叢集。Cluster Director 是代管服務,可簡化及自動化叢集部署作業,降低作業負擔。詳情請參閱「使用兩個 A4 VM 建立全代管 Slurm 叢集」。
如要直接在 Google Cloud 控制台中,按照這項工作的逐步指南操作,請按一下「Guide me」(逐步引導):
教學課程總覽
本教學課程說明如何使用 A4 加速器最佳化機型,設定 AI 適用的 Slurm 叢集。具體來說,您會使用 Compute Engine 執行個體設定叢集、建立 Cloud Storage bucket 來儲存必要的 Terraform 模組,以及設定 Filestore 執行個體來佈建 Slurm 叢集。如要完成本教學課程中的步驟,請按照下列程序操作:
- 為 Google Cloud 專案設定本指南所需的權限,以及預留機器的環境變數。
- 建立 Cloud Storage bucket。
- 設定儲存空間環境變數。
- 設定 Cluster Toolkit。
- 切換至 Cluster Toolkit 目錄。
- 建立 Slurm 部署作業 YAML 檔案。
- 使用藍圖佈建 Slurm 叢集。
- 連線至 Slurm 叢集。
事前準備
- 為一部
a4-highgpu-8g機器預留容量區塊,或建立日曆模式預留項目。 請確認目前的 Filestore 配額足以佈建 Slurm 叢集。您需要至少 10,240 GiB 的可用區容量 (也稱為高可擴充性固態硬碟容量)。
如要查看 Filestore 配額,請在 Google Cloud 控制台中查看「Quotas & System limits」(配額與系統限制),並篩選表格,只顯示 Filestore 資源。
- 如需查看 Filestore 配額的詳細操作說明,請參閱「查看 API 專屬配額」一節。
- 如果配額不足,請申請提高配額。
啟用 Compute Engine、Filestore、Cloud Storage、Service Usage 和 Cloud Resource Manager API:
必要的角色
如要取得部署 Slurm 叢集所需的權限,請要求管理員授予您下列 IAM 角色:
- 專案的儲存空間管理員 (
roles/storage.admin) - 專案的 Compute 執行個體管理員 (v1) (
roles/compute.instanceAdmin.v1) - 服務帳戶使用者 (
roles/iam.serviceAccountUser) 服務帳戶本身 -
如要使用單一專案預留項目:專案的 Compute 執行個體管理員 (v1) (
roles/compute.instanceAdmin.v1) -
如要使用共用預留項目:
在擁有者專案和要使用預留項目的任何消費者專案中,都必須具備 Compute 執行個體管理員 (v1) (
roles/compute.instanceAdmin.v1) 角色。
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
費用
本教學課程的費用取決於您在各節完成的步驟,例如設定教學課程或執行工作。您可以使用 Pricing Calculator 來計算費用。
估算本教學課程的設定費用時,請使用下列規格:
- 每個區域的 Filestore (標準) 容量:10,240 GiB。
- 標準永久磁碟:Slurm 登入節點為 50 GB
pd-standard。 - 效能 (SSD) 永久磁碟:Slurm 控制器為 50 GB
pd-ssd。 - Compute Engine 執行個體:1
a4-highgpu-8g。
啟動 Cloud Shell
在本教學課程中,您會使用 Cloud Shell,這是用來管理 Google Cloud託管資源的殼層環境。
Cloud Shell 已預先安裝 Google Cloud CLI。gcloud CLI 提供 Google Cloud的主要指令列介面。啟動 Cloud Shell:
前往 Google Cloud 控制台。
在控制台的右上角,點按「啟用 Cloud Shell」按鈕:

Cloud Shell 工作階段會開啟,並顯示指令列提示。您可以使用這個殼層來執行 gcloud 和 Cluster Toolkit 指令。
設定機器預留容量變數
在 Cloud Shell 中設定下列預留容量環境變數。這些環境變數會設定預留位置值,用於設定專案,以便存取預留的 a4-highgpu-8g 機器。
export A4_RESERVATION_PROJECT_ID=A4_RESERVATION_PROJECT_ID export A4_RESERVATION_NAME=A4_RESERVATION_NAME export A4_DEPLOYMENT_NAME=A4_DEPLOYMENT_NAME export A4_REGION=A4_REGION export A4_ZONE=A4_ZONE export A4_DEPLOYMENT_FILE_NAME=A4_DEPLOYMENT_FILE_NAME
更改下列內容:
A4_RESERVATION_PROJECT_ID:授予 A4 機型預留區塊的 Google Cloud專案 ID。A4_RESERVATION_NAME:專案中使用的 GPU 預留項目名稱。例如:a4high-exr。A4_DEPLOYMENT_NAME:Slurm 叢集部署作業的專屬名稱,例如:my-slurm-cluster-deployment。A4_REGION:執行預留 A4 機器預留區塊的區域,例如:us-central1。A4_ZONE:包含預留機器的可用區。這個字串必須包含區域和可用區。例如:us-central1-a。A4_DEPLOYMENT_FILE_NAME:Slurm 藍圖 YAML 檔案的專屬名稱。如果您完成本教學課程的次數超過一次,請每次都選擇不重複的部署名稱。
切換至已通過 A4 核准的專案
切換至擁有 A4 機型已核准預留區塊的 Google Cloud 專案:
gcloud config set project ${A4_RESERVATION_PROJECT_ID}建立 Cloud Storage bucket
部署藍圖及其模組時,Terraform 會建立狀態檔案,將藍圖對應至雲端中的資源。為確保基礎架構記錄可靠,建議您將 Terraform 狀態檔案儲存在遠端、已啟用版本的儲存位置,例如已啟用版本管理功能的 Cloud Storage bucket。
如要儲存狀態檔案,請在 Cloud Shell 中建立已啟用版本管理功能的 Cloud Storage bucket:
gcloud storage buckets create gs://${BUCKET_NAME} \
--project=${A4_RESERVATION_PROJECT_ID} \
--default-storage-class=STANDARD \
--location=${BUCKET_LOCATION} \
--uniform-bucket-level-access
gcloud storage buckets update gs://${BUCKET_NAME} --versioning
更改下列內容:
BUCKET_NAME:新的 Cloud Storage bucket 名稱,必須符合 bucket 命名規定。A4_RESERVATION_PROJECT_ID:授予 A4 機型預留區塊的 Google Cloud專案 ID。BUCKET_LOCATION:建立 Cloud Storage bucket 的 Google Cloud 區域,例如us-central1。Terraform 會將狀態檔案儲存在這個位置。
設定儲存空間容量變數
在 Cloud Shell 中,為您在上一個步驟建立的 bucket 建立環境變數。
export BUCKET_NAME=BUCKET_NAME export BUCKET_LOCATION=BUCKET_LOCATION
更改下列內容:
BUCKET_NAME:bucket 名稱。BUCKET_LOCATION:bucket 所在的區域。
設定 Cluster Toolkit
如要在 Google Cloud 專案中建立 Slurm 叢集,您可以使用 Cluster Toolkit 部署及佈建叢集。Cluster Toolkit 是 Google Cloud提供的開放原始碼軟體,可簡化在 Google Cloud上部署工作負載的程序。
請按照下列步驟設定 Cluster Toolkit。
安裝 Cluster Toolkit
如要安裝 Cluster Toolkit,請下載並解壓縮適用於您平台的預先建構二進位檔套件。 ZIP 和 tar (.tgz) 封存檔皆可使用。
- 前往 GitHub 的 Cluster Toolkit 版本頁面。
- 下載適用於您平台和架構的套件。可用的選項如下:
gcluster_bundle_linux_amd64.zip或gcluster_bundle_linux_amd64.tgzgcluster_bundle_linux_arm64.zip或gcluster_bundle_linux_arm64.tgzgcluster_bundle_mac_amd64.zip或gcluster_bundle_mac_amd64.tgzgcluster_bundle_mac_arm64.zip或gcluster_bundle_mac_arm64.tgz
- 在終端機中,將套件檔案解壓縮到新目錄:
-
如果是下載 ZIP 套件,請使用
unzip指令解壓縮檔案:unzip BUNDLE_FILENAME -d cluster-toolkit
-
如果是下載 tar 套件,請使用
tar指令解壓縮檔案:mkdir -p cluster-toolkit tar -xzf BUNDLE_FILENAME -C cluster-toolkit
將
BUNDLE_FILENAME替換為下載的套件名稱。 -
- 前往新目錄:
cd cluster-toolkit
- 驗證安裝項目:
./gcluster --version
輸出內容會顯示您目前使用的 Cluster Toolkit 版本。
安裝二進位檔後,即可部署叢集來執行所需工作或工作負載。
建立部署檔案
在 Cluster Toolkit 目錄中,建立 Slurm 部署 YAML 檔案。
nano ${A4_DEPLOYMENT_FILE_NAME}.yaml將下列內容貼到 YAML 檔案中。
--- terraform_backend_defaults: type: gcs configuration: bucket: BUCKET_NAME vars: deployment_name: A4_DEPLOYMENT_FILE_NAME project_id: A4_RESERVATION_PROJECT_ID region: A4_REGION zone: A4_ZONE a4h_reservation_name: A4_RESERVATION_NAME a4h_cluster_size: 1依序按下 Ctrl+O 鍵 > Enter 鍵 > Ctrl+X 鍵,儲存並退出檔案。
佈建 Slurm 叢集
請執行下列部署指令,佈建 Slurm 叢集。這個指令會使用examples/machine-learning/a4-highgpu-8g/a4high-slurm-blueprint.yaml藍圖檔案,來佈建 Slurm 叢集。根據預設,這個藍圖會部署使用預先建構 Advanced Compute Images 的運算執行個體。如要進一步瞭解您部署的預先安裝驅動程式和設定工具,請參閱「進階運算映像檔總覽」。
在 Cloud Shell 中,使用 gcluster deploy 指令啟動叢集建立作業。
./gcluster deploy -d ${A4_DEPLOYMENT_FILE_NAME}.yaml examples/machine-learning/a4-highgpu-8g/a4high-slurm-blueprint.yaml --auto-approve
連線至叢集
部署完成後,請連線至 Google Cloud 控制台查看叢集。
在Google Cloud 控制台中,依序前往「Compute Engine」>「VM instances」(VM 執行個體) 頁面。
找出登入節點 (
a4high-login-001或類似項目)。按一下「SSH」以連線。
清除所用資源
為了避免系統向您的 Google Cloud 帳戶收取本頁面所用資源的費用,請按照下列步驟操作。
刪除 Slurm 叢集
我們建議您清理不再需要的資源。
根據預設,A4 High 藍圖會在 Filestore 執行個體上,啟用防刪除功能。刪除 Slurm 叢集時,您必須先停用防刪除功能,才能執行刪除指令。
停用防刪除功能
輸入類似下方的指令,在更新執行個體時停用防刪除功能:
gcloud filestore instances update INSTANCE_NAME \
--no-deletion-protection
將 INSTANCE_NAME 替換為要編輯的執行個體名稱。例如:my-genomics-instance。
請執行 gcloud filestore instances
list,即可找到 INSTANCE_NAME。這個指令會列出目前 Google Cloud 專案中的所有 Filestore 執行個體,包括其名稱、位置 (可用區)、層級、容量和狀態。
執行指令後,根據本教學課程執行的 a4-highgpu-8g 機器,找出相符的 Filestore 執行個體。
刪除 Slurm 叢集
執行刪除指令前,請前往 Cluster Toolkit 目錄的根層級。根據預設,
DEPLOYMENT_FOLDER位於 Cluster Toolkit 目錄的根層級。使用
gcluster destroy指令終止叢集:./gcluster destroy DEPLOYMENT_FOLDER --auto-approve
將
DEPLOYMENT_FOLDER替換為部署作業資料夾的名稱。通常與DEPLOYMENT_NAME相同。
刪除作業完成後,畫面上會顯示類似如下的訊息:
Destroy complete! Resources: xx destroyed.
刪除儲存空間 bucket
請確認先前的指令已順利執行完畢,再刪除 Cloud Storage bucket:
gcloud storage buckets delete gs://${BUCKET_NAME}
疑難排解
錯誤訊息:Cloud Shell can't provision the cluster because there is no storage left (Cloud Shell 無法佈建叢集,因為儲存空間不足)。
如果您經常使用 Cloud Shell,導致儲存空間用盡,就可能會看到這則錯誤訊息。
如要解決這個問題,請參閱「停用或重設 Cloud Shell」。
錯誤訊息:Cluster or blueprint name already exists (已有名稱相同的叢集或藍圖)。
如果您所用的專案已使用在本教學課程中用過的確切檔案名稱,就可能會看到這則錯誤訊息。舉例來說,如果貴機構的其他人已端對端完成本教學課程。
如要解決這個問題,請再次執行本教學課程,並為部署檔案選擇不重複的名稱,然後使用新的部署檔案,重新執行佈建 Slurm 叢集指令。
後續步驟
- 進階 Slurm 任務:
- 瞭解如何管理主機事件:
- 查看運算執行個體的拓撲
- 監控 Compute Engine 執行個體和 Slurm 叢集
- 回報出錯的主機