使用 A4 機型建立 AI 適用的 Slurm 叢集

本頁說明如何使用 gcloud CLI 和 Cluster Toolkit,透過 A4 加速器最佳化機型,快速建立及部署 AI 適用的 Slurm 叢集

A4 加速器最佳化機型連接的是 NVIDIA B200 GPU,專為密集型 AI 運算而設計,可協助 Slurm 叢集有效處理大規模模型訓練和推論作業。如要進一步瞭解 Google Cloud上的 A4 加速器最佳化機型,請參閱 GPU 機型

您也可以使用 Cluster Director 建立以 A4 為基礎的 Slurm 叢集。Cluster Director 是一項代管服務,可簡化及自動化叢集部署作業,減少作業負擔。詳情請參閱「根據範本建立 AI 適用叢集」。


如要直接在 Google Cloud 控制台中,按照這項工作的逐步指南操作,請按一下「Guide me」(逐步引導)

逐步引導


教學課程總覽

本教學課程說明如何使用 A4 加速器最佳化機型,設定 AI 適用的 Slurm 叢集。具體來說,您會使用 Compute Engine 虛擬機器設定叢集、建立 Cloud Storage bucket 來儲存必要的 Terraform 模組,並設定 Filestore 執行個體來佈建 Slurm 叢集。如要完成本教學課程中的步驟,請按照下列程序操作:

  1. 為 Google Cloud 專案設定必要權限和環境變數。
  2. 設定 Cloud Storage bucket。
  3. 設定 Cluster Toolkit。
  4. 切換至 Cluster Toolkit 目錄。
  5. 建立 Slurm 部署作業 YAML 檔案。
  6. 使用藍圖佈建 Slurm 叢集。
  7. 連線至 Slurm 叢集。

事前準備

  1. 為一部 a4-highgpu-8g 機器預留容量區塊。本教學課程需要用到這些機器。
  2. 請確認目前的 Filestore 配額足以佈建 Slurm 叢集。您需要至少 10,240 GiB 的可用區容量 (也稱為高可擴充性固態硬碟容量)。

    如要查看 Filestore 配額,請在 Google Cloud 控制台中查看「Quotas & System limits」(配額與系統限制),並篩選表格,只顯示 Filestore 資源。

  3. 請確認您已為 Google Cloud 專案啟用計費功能

  4. 啟用 Compute Engine、Filestore、Cloud Storage、Service Usage 和 Cloud Resource Manager API:

    啟用 API

必要的角色

為確保 Compute Engine 預設服務帳戶具備部署 Slurm 叢集所需的權限,請要求管理員將下列 IAM 角色授予 Compute Engine 預設服務帳戶:

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

管理員或許也能透過自訂角色或其他預先定義的角色,將必要權限授予 Compute Engine 預設服務帳戶。

費用

本教學課程的費用取決於您在各節完成的步驟,例如設定教學課程或執行工作。您可以使用 Pricing Calculator 來計算費用。

  • 估算本教學課程的設定費用時,請使用下列規格:

    • 每個區域的 Filestore (標準) 容量:10,240 GiB。
    • 標準永久磁碟:Slurm 登入節點為 50 GB pd-standard
    • 效能 (SSD) 永久磁碟:Slurm 控制器為 50 GB pd-ssd
    • VM 執行個體:1 a4-highgpu-8g

啟動 Cloud Shell

在本教學課程中,您會使用 Cloud Shell,這是用來管理託管於 Google Cloud的資源的殼層環境。

Cloud Shell 已預先安裝 Google Cloud CLI。gcloud CLI 提供 Google Cloud的主要指令列介面。啟動 Cloud Shell:

  1. 前往 Google Cloud 控制台。

    Google Cloud console

  2. 按一下主控台右上角的「啟用 Cloud Shell」按鈕:Cloud Shell 圖示

Cloud Shell 工作階段會開啟,並顯示指令列提示。您可以使用這個殼層來執行 gcloud 和 Cluster Toolkit 指令。

設定環境變數

您需要在 Cloud Shell 設定下列環境變數,以利進行教學課程的其餘部分。這些環境變數會為下列任務設定預留位置值:

  • 使用相關值設定專案,以便存取已預留的 a4-highgpu-8g 機器。

  • 設定 Cloud Storage bucket,用於儲存 Cluster Toolkit 模組。

預留容量變數

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 檔案的專屬名稱。如果您完成本教學課程的次數超過一次,請每次都選擇不重複的部署名稱。

儲存空間容量變數

建立 Cloud Storage bucket 的環境變數。

Cluster Toolkit 會使用藍圖定義及部署 VM 叢集。藍圖會定義一或多個 Terraform 模組,用於佈建雲端基礎架構。這個 bucket 用於儲存這些藍圖。

export GOOGLE_CLOUD_BUCKET_NAME=GOOGLE_CLOUD_BUCKET_NAME
export GOOGLE_CLOUD_BUCKET_LOCATION=GOOGLE_CLOUD_BUCKET_LOCATION

更改下列內容:

  • GOOGLE_CLOUD_BUCKET_NAME:您要用於 Cloud Storage bucket 的名稱,必須符合 bucket 命名規定
  • GOOGLE_CLOUD_BUCKET_LOCATION:您選擇的任何 Google Cloud 區域,bucket 會託管於該區域。例如:us-central1

切換至已通過 A4 核准的專案

執行下列指令,確認您所在的 Google Cloud專案中,擁有 A4 機型的已核准預留區塊。

gcloud config set project ${A4_RESERVATION_PROJECT_ID}

建立 Cloud Storage 值區

建立用來儲存 Terraform 模組的 bucket。請在 Cloud Shell 中執行下列指令,以使用指定的環境變數:

使用 Terraform 時的最佳做法,是在已啟用版本的檔案中遠端儲存狀態。在 Google Cloud上,您可以建立已啟用版本管理的 Cloud Storage bucket。

gcloud storage buckets create gs://${GOOGLE_CLOUD_BUCKET_NAME} \
    --project=${A4_RESERVATION_PROJECT_ID} \
    --default-storage-class=STANDARD \
    --location=${GOOGLE_CLOUD_BUCKET_LOCATION} \
    --uniform-bucket-level-access

gcloud storage buckets update gs://${GOOGLE_CLOUD_BUCKET_NAME} --versioning

設定 Cluster Toolkit

如要在 Google Cloud 專案中建立 Slurm 叢集,您可以使用 Cluster Toolkit 部署及佈建叢集。Cluster Toolkit 是 Google Cloud提供的開放原始碼軟體,可簡化在 Google Cloud上部署工作負載的程序。

請按照下列步驟設定 Cluster Toolkit。

複製 Cluster Toolkit GitHub 存放區

  1. 在 Cloud Shell 中,複製 GitHub 存放區。

    git clone https://github.com/GoogleCloudPlatform/cluster-toolkit.git
  2. 前往主要工作目錄:

    cd cluster-toolkit/

建構 Cluster Toolkit 二進位檔

  1. 在 Cloud Shell 中,執行下列指令,從來源建構 Cluster Toolkit 二進位檔:

    make
  2. 請執行下列指令來驗證建構:

    如要部署 A4 High 加速器最佳化機器 Slurm 叢集,您必須使用 Cluster Toolkit 的 v1.51.1 以上版本。

    ./gcluster --version

    建構二進位檔後,即可部署叢集來執行所需工作或工作負載。

建立部署檔案

  1. 在 Cluster Toolkit 目錄中,建立 Slurm 部署 YAML 檔案。

    nano ${A4_DEPLOYMENT_FILE_NAME}.yaml
    
  2. 將下列內容貼到 YAML 檔案中。

    ---
    terraform_backend_defaults:
      type: gcs
      configuration:
        bucket: GOOGLE_CLOUD_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
    
  3. 依序按下 Ctrl+O 鍵 > Enter 鍵 > Ctrl+X 鍵,儲存並退出檔案。

佈建 Slurm 叢集

請執行下列部署指令,佈建 Slurm 叢集。這個指令會使用 examples/machine-learning/a4-highgpu-8g/a4high-slurm-blueprint.yaml 藍圖檔案,來佈建 Slurm 叢集。

在 Cloud Shell 中,啟動叢集建立作業。

./gcluster deploy -d ${A4_DEPLOYMENT_FILE_NAME}.yaml examples/machine-learning/a4-highgpu-8g/a4high-slurm-blueprint.yaml --auto-approve

連線至叢集

部署完成後,請連線至 Google Cloud 控制台查看叢集。

  1. 在Google Cloud 控制台中,依序前往「Compute Engine」>「VM instances」(VM 執行個體) 頁面。

    前往 VM 執行個體

  2. 找出登入節點 (a4high-login-001 或類似項目)。

  3. 按一下「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 叢集

  1. 執行刪除指令前,請前往 Cluster Toolkit 目錄的根層級。根據預設,DEPLOYMENT_FOLDER 位於 Cluster Toolkit 目錄的根層級。

  2. 執行下列指令,即可刪除叢集:

    ./gcluster destroy DEPLOYMENT_FOLDER --auto-approve

    DEPLOYMENT_FOLDER 替換為部署資料夾的名稱。通常與 DEPLOYMENT_NAME 相同。

刪除作業完成後,畫面上會顯示類似如下的訊息:

Destroy complete! Resources: xx destroyed.

刪除儲存空間 bucket

請確認先前的指令已順利執行完畢,再刪除 Cloud Storage bucket:

gcloud storage buckets delete gs://${GOOGLE_CLOUD_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 叢集指令。

後續步驟