管理機能が強化された H4D Slurm クラスタを作成する

このページでは、強化されたクラスタ管理機能を備えた H4D VM でリモート ダイレクト メモリアクセス(RDMA)を使用するハイ パフォーマンス コンピューティング(HPC)Slurm クラスタを作成する方法について説明します。クラスタを構成するには、gcloud CLI と Cluster Toolkit を使用します。

H4D マシンシリーズは、要求の厳しい HPC ワークロードのニーズを満たすように特別に設計されています。H4D は、200 Gbps のスループットを備えた Cloud RDMA ネットワーキングにより、ワークロードの拡張性を向上させたインスタンスを提供します。 Google Cloudの H4D コンピューティング最適化マシンタイプの詳細については、H4D マシンシリーズをご覧ください。

始める前に

Slurm クラスタを作成する前に、次の手順を完了します(まだ完了していない場合)。

  1. 使用オプションを選択する: 選択したオプションによって、vCPU リソースの取得方法と使用方法が決まります。
  2. 容量を取得: 選択した使用オプションの容量を取得します。
  3. 詳細については、使用オプションを選択して容量を取得するをご覧ください。

  4. 十分な Filestore 割り当てがあることを確認する: 最小 10,240 GiB のゾーン(高スケール SSD とも呼ばれる)容量が必要です。
  5. Cluster Toolkit をインストールする: Slurm クラスタをプロビジョニングするには、Cluster Toolkit バージョン v1.62.0 以降を使用する必要があります。

    Cluster Toolkit をインストールするには、Cluster Toolkit を設定するをご覧ください。

In the Google Cloud console, activate Cloud Shell.

Activate Cloud Shell

At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

ストレージ バケットを設定する

クラスタ ブループリントは、Terraform モジュールを使用してクラウド インフラストラクチャをプロビジョニングします。Terraform を使用する際のおすすめの方法は、バージョン対応のファイルに状態をリモートで保存することです。 Google Cloudでは、バージョニングが有効になっている Cloud Storage バケットを作成できます。

このバケットを作成して 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 ディレクトリを開く

次のコマンドを実行して、Cluster Toolkit ディレクトリに移動します。

cd cluster-toolkit

このクラスタのデプロイには、Cluster Toolkit v1.70.0 以降が必要です。バージョンを確認するには、次のコマンドを実行します。

./gcluster --version

デプロイ ファイルを作成する

デプロイ ファイルを作成して、Cloud Storage バケットを指定し、ネットワークとサブネットワークの名前を設定し、プロジェクト ID、リージョン、ゾーンなどのデプロイ変数を設定します。

デプロイ ファイルを作成するには、H4D マシンタイプの手順に沿って操作します。

デプロイ ファイルに追加する必要があるパラメータは、デプロイで使用している消費オプションによって異なります。使用する消費オプションに対応するタブを選択します。

予約で制限

デプロイ ファイルを作成するには、テキスト エディタを使用して h4d-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
  h4d_cluster_size: NUMBER_OF_VMS
  h4d_reservation_name: RESERVATION_NAME

次のように置き換えます。

  • BUCKET_NAME: 前のセクションで作成した Cloud Storage バケットの名前。
  • DEPLOYMENT_NAME: デプロイの名前。複数のクラスタを作成する場合は、それぞれに一意の名前を選択してください。
  • PROJECT_ID: プロジェクト ID。
  • REGION: 予約済みマシンがあるリージョン。
  • ZONE: クラスタをプロビジョニングするゾーン。予約ベースの消費オプションを使用している場合、リージョンとゾーンの情報は、容量が提供されたときにアカウント チームから提供されています。
  • NUMBER_OF_VMS: クラスタに必要な VM の数。
  • RESERVATION_NAME: 予約の名前。

Flex Start

デプロイ ファイルを作成するには、テキスト エディタを使用して h4d-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
  h4d_cluster_size: NUMBER_OF_VMS
  h4d_dws_flex_enabled: true

次のように置き換えます。

  • BUCKET_NAME: 前のセクションで作成した Cloud Storage バケットの名前。
  • DEPLOYMENT_NAME: デプロイの名前。複数のクラスタを作成する場合は、それぞれに一意の名前を選択してください。
  • PROJECT_ID: プロジェクト ID。
  • REGION: クラスタをプロビジョニングするリージョン。
  • ZONE: クラスタをプロビジョニングするゾーン。
  • NUMBER_OF_VMS: クラスタに必要な VM の数。

このデプロイでは、静的コンピューティング ノードがプロビジョニングされます。つまり、クラスタには常に一定数のノードが存在します。クラスタで自動スケーリングを有効にする場合は、examples/h4d/hpc-slurm-h4d.yaml ファイルを使用して、node_count_staticnode_count_dynamic_max の値を次のように編集します。

      node_count_static: 0
      node_count_dynamic_max: $(vars.h4d_cluster_size)

スポット

デプロイ ファイルを作成するには、テキスト エディタを使用して h4d-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
  h4d_cluster_size: NUMBER_OF_VMS
  h4d_enable_spot_vm: true

次のように置き換えます。

  • BUCKET_NAME: 前のセクションで作成した Cloud Storage バケットの名前。
  • DEPLOYMENT_NAME: デプロイの名前。複数のクラスタを作成する場合は、それぞれに一意の名前を選択してください。
  • PROJECT_ID: プロジェクト ID。
  • REGION: クラスタをプロビジョニングするリージョン。
  • ZONE: クラスタをプロビジョニングするゾーン。
  • NUMBER_OF_VMS: クラスタに必要な VM の数。

H4D Slurm クラスタをプロビジョニングする

Cluster Toolkit は、前の手順で作成したデプロイ ファイルとデフォルトのクラスタ ブループリントに基づいてクラスタをプロビジョニングします。ブループリントによってインストールされるソフトウェアの詳細については、Slurm カスタム イメージの詳細をご覧ください。

Cloud Shell を使用して、Cluster Toolkit をインストールし、デプロイ ファイルを作成したディレクトリから、次のコマンドを使用してクラスタをプロビジョニングできます。このコマンドは H4D Slurm ブループリント ファイルを使用します。このステップには約 20 ~ 30 分かかります。

./gcluster deploy -d h4d-slurm-deployment.yaml examples/hpc-slurm-h4d/hpc-slurm-h4d.yaml --auto-approve

Slurm クラスタに接続する

クラスタにアクセスするには、Slurm ログインノードにログインする必要があります。ログインするには、 Google Cloud コンソールまたは Google Cloud CLI を使用します。

コンソール

  1. [Compute Engine] > [VM インスタンス] ページに移動します。

    [VM インスタンス] ページに移動

  2. ログインノードを見つけます。名前はパターン DEPLOYMENT_NAME + login-001 にする必要があります。

  3. ログインノードの [接続] 列で、[SSH] をクリックします。

gcloud

ログインノードに接続する手順は次のとおりです。

  1. gcloud compute instances list コマンドを使用してログインノードを特定します。

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

    出力に複数の Slurm クラスタがリストされている場合は、指定した DEPLOYMENT_NAME でログインノードを特定できます。

  2. gcloud compute ssh コマンドを使用してログインノードに接続します。

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

    次のように置き換えます。

    • ZONE: クラスタの VM が配置されているゾーン。
    • LOGIN_NODE: 前の手順で特定したログインノードの名前。

Slurm クラスタを再デプロイする

コンピューティング ノードの数を増やすか、クラスタに新しいパーティションを追加する必要がある場合は、再デプロイして Slurm クラスタの構成を更新する必要があります。

既存のイメージを使用してクラスタを再デプロイする手順は次のとおりです。

  1. クラスタに接続する

  2. 次のコマンドを実行します。

    ./gcluster deploy -d h4d-slurm-deployment.yaml examples/h4d/h4d-slurm-deployment.yaml --only cluster-env,cluster --auto-approve -w
    

    このコマンドは、イメージがすでに存在する場合の再デプロイ専用です。クラスタとそのインフラストラクチャのみを再デプロイします。

Slurm クラスタを破棄する

Slurm クラスタとその内部のインスタンスを削除する手順は次のとおりです。

  1. まだクラスタから切断していない場合は、切断します。

  2. 破棄のコマンドを実行する前に、Cluster Toolkit ディレクトリのルートに移動します。デフォルトでは、DEPLOYMENT_FOLDER は Cluster Toolkit ディレクトリのルートにあります。

  3. クラスタを破棄するには、次のコマンドを実行します。

    ./gcluster destroy DEPLOYMENT_FOLDER --auto-approve

    次のように置き換えます。

    • DEPLOYMENT_FOLDER: デプロイ フォルダの名前。通常は DEPLOYMENT_NAME と同じです。

クラスタの削除が完了すると、次のようなメッセージが表示されます。

  Destroy complete! Resources: xx destroyed.

インフラストラクチャを完全に破棄する方法と、高度な手動デプロイの手順については、Cluster Toolkit ディレクトリのルートにあるデプロイ フォルダ(DEPLOYMENT_FOLDER/instructions.txt)をご覧ください。

次のステップ