使用 H4D 執行個體建立啟用 RDMA 的 HPC Slurm 叢集

本頁說明如何建立高效能運算 (HPC) Slurm 叢集,並搭配 H4D 機型使用遠端直接記憶體存取 (RDMA)。您可以使用 gcloud CLI 和 Cluster Toolkit 設定叢集。

H4D 系列機型專為滿足嚴苛的 HPC 工作負載需求而設計。H4D 提供執行個體,透過支援 RDMA 的 200 Gbps 網路,提升工作負載的擴充性。如要進一步瞭解 Google Cloud上的 H4D 運算最佳化機型,請參閱 H4D 系列機型

教學課程總覽

本教學課程說明如何使用 H4D 機型和 RDMA,設定 HPC 最佳化的 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. 為兩個 H4D 執行個體 (各 192 個 vCPU) 申請保留容量區塊
  2. 請確認目前的 Filestore 配額足以佈建 Slurm 叢集。您需要至少 5,120 GiB 的可用區容量,且 Filestore 服務層級為基本固態硬碟。

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

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

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

    啟用 API

費用

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

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

    • 每個區域的 Filestore (基本固態硬碟) 容量:5,120 GiB。
    • 標準永久磁碟:Slurm 登入節點為 50 GB pd-standard
    • 效能 (SSD) 永久磁碟:Slurm 控制器為 50 GB pd-ssd
    • VM 執行個體:使用 h4d-highmem-192h4d-standard-192h4d-highmem-192-lssd 機器類型建立的兩個 H4D 執行個體。
    • Hyperdisk Balanced 磁碟區:每個 H4D 執行個體 50 GiB。

啟動 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 設定下列環境變數,以利進行教學課程的其餘部分。這些環境變數會為下列任務設定預留位置值:

  • 使用相關值設定專案,以便存取已預留的 H4D 執行個體。

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

預留容量變數

export H4D_RESERVATION_PROJECT_ID=H4D_RESERVATION_PROJECT_ID
export H4D_RESERVATION_NAME=H4D_RESERVATION_NAME
export H4D_DEPLOYMENT_NAME=H4D_DEPLOYMENT_NAME
export H4D_REGION=H4D_REGION
export H4D_ZONE=H4D_ZONE
export H4D_DEPLOYMENT_FILE_NAME=H4D_DEPLOYMENT_FILE_NAME

更改下列內容:

  • H4D_RESERVATION_PROJECT_ID:授予 H4D 機型預留區塊的 Google Cloud專案 ID。
  • H4D_RESERVATION_NAME:專案中的 VM 預留區塊名稱,例如:h4d-highmem-exr
  • H4D_DEPLOYMENT_NAME:Slurm 叢集部署作業的專屬名稱,例如:h4d-hpc-slurm-cluster-deployment
  • H4D_REGION:執行預留 H4D 機器預留區塊的區域,例如:us-central1
  • H4D_ZONE:包含預留機器的區域,這個字串必須包含區域和可用區。 例如:us-central1-a
  • H4D_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

切換至預留 H4D 容量區塊的專案

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

gcloud config set project ${H4D_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=${H4D_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. 請執行下列指令來驗證建構:

    如要部署使用 H4D 執行個體的 HPC 最佳化 Slurm 叢集,您必須使用 Cluster Toolkit 的 v1.47.0 以上版本。

    ./gcluster --version

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

建立部署檔案

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

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

    ---
    terraform_backend_defaults:
      type: gcs
      configuration:
        bucket: GOOGLE_CLOUD_BUCKET_NAME
    
    vars:
      deployment_name: H4D_DEPLOYMENT_FILE_NAME
      project_id: H4D_RESERVATION_PROJECT_ID
      region: H4D_REGION
      zone: H4D_ZONE
      
      
    
  3. 依序按下 Ctrl+O 鍵 > Enter 鍵 > Ctrl+X 鍵,儲存並退出檔案。

佈建 Slurm 叢集

請執行下列部署指令,佈建 Slurm 叢集。這個指令會使用 H4D Cluster Toolkit 藍圖,來佈建 Slurm 叢集。

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

./gcluster deploy -d ${H4D_DEPLOYMENT_FILE_NAME}.yaml examples/hpc-slurm-h4d.yaml --auto-approve

連線至叢集

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

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

    前往 VM 執行個體

  2. 找出登入節點,名稱可能類似 example-deployment-login-123

  3. 按一下「SSH」以連線。

清除所用資源

如要避免系統向您的 Google Cloud 帳戶收取本頁所用資源的費用,請按照下列步驟操作。

刪除 Slurm 叢集

我們建議您清理不再需要的資源。

停用防刪除功能

輸入類似下方的指令,在更新執行個體時停用防刪除功能:

  gcloud filestore instances update INSTANCE_NAME \
      --no-deletion-protection

取代:

  • INSTANCE_NAME:要編輯的執行個體名稱,例如:my-genomics-instance

請執行 gcloud filestore instances list 指令,即可找到 INSTANCE_NAME。這個指令會列出目前 Google Cloud 專案中的所有 Filestore 執行個體,包括其名稱、位置 (可用區)、層級、容量和狀態。

執行指令後,根據本教學課程使用的 H4D 機器類型,找出相符的 Filestore 執行個體。

刪除 Slurm 叢集

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

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

    ./gcluster destroy ${H4D_DEPLOYMENT_FILE_NAME} --auto-approve
    

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

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 叢集指令。

後續步驟