このページでは、強化されたクラスタ管理機能を備えた H4D VM でリモート ダイレクト メモリアクセス(RDMA)を使用するハイ パフォーマンス コンピューティング(HPC)Slurm クラスタを作成する方法について説明します。クラスタを構成するには、gcloud CLI と Cluster Toolkit を使用します。
H4D マシンシリーズは、要求の厳しい HPC ワークロードのニーズを満たすように特別に設計されています。H4D は、200 Gbps のスループットを備えた Cloud RDMA ネットワーキングにより、ワークロードの拡張性を向上させたインスタンスを提供します。 Google Cloudの H4D コンピューティング最適化マシンタイプの詳細については、H4D マシンシリーズをご覧ください。
始める前に
Slurm クラスタを作成する前に、次の手順を完了します(まだ完了していない場合)。
- 使用オプションを選択する: 選択したオプションによって、vCPU リソースの取得方法と使用方法が決まります。
- 容量を取得: 選択した使用オプションの容量を取得します。
- 十分な Filestore 割り当てがあることを確認する: 最小 10,240 GiB のゾーン(高スケール SSD とも呼ばれる)容量が必要です。
- 割り当てを確認するには、API 固有の割り当てを表示するをご覧ください。
- 割り当てが不足している場合は、割り当ての増加をリクエストします。
- Cluster Toolkit をインストールする: Slurm クラスタをプロビジョニングするには、Cluster Toolkit バージョン
v1.62.0以降を使用する必要があります。Cluster Toolkit をインストールするには、Cluster Toolkit を設定するをご覧ください。
詳細については、使用オプションを選択して容量を取得するをご覧ください。
In the Google Cloud console, 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
次のように置き換えます。
BUCKET_NAME: バケットの命名要件を満たす Cloud Storage バケットの名前。PROJECT_ID: プロジェクト ID。BUCKET_REGION: 任意の使用可能なロケーション。
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_static と node_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 を使用します。
コンソール
[Compute Engine] > [VM インスタンス] ページに移動します。
ログインノードを見つけます。名前はパターン
DEPLOYMENT_NAME+login-001にする必要があります。ログインノードの [接続] 列で、[SSH] をクリックします。
gcloud
ログインノードに接続する手順は次のとおりです。
gcloud compute instances listコマンドを使用してログインノードを特定します。gcloud compute instances list \ --zones=
ZONE\ --filter="name ~ login" --format "value(name)"出力に複数の Slurm クラスタがリストされている場合は、指定した
DEPLOYMENT_NAMEでログインノードを特定できます。gcloud compute sshコマンドを使用してログインノードに接続します。gcloud compute ssh LOGIN_NODE \ --zone=
ZONE--tunnel-through-iap次のように置き換えます。
ZONE: クラスタの VM が配置されているゾーン。LOGIN_NODE: 前の手順で特定したログインノードの名前。
Slurm クラスタを再デプロイする
コンピューティング ノードの数を増やすか、クラスタに新しいパーティションを追加する必要がある場合は、再デプロイして Slurm クラスタの構成を更新する必要があります。
既存のイメージを使用してクラスタを再デプロイする手順は次のとおりです。
次のコマンドを実行します。
./gcluster deploy -d h4d-slurm-deployment.yaml examples/h4d/h4d-slurm-deployment.yaml --only cluster-env,cluster --auto-approve -w
このコマンドは、イメージがすでに存在する場合の再デプロイ専用です。クラスタとそのインフラストラクチャのみを再デプロイします。
Slurm クラスタを破棄する
Slurm クラスタとその内部のインスタンスを削除する手順は次のとおりです。
まだクラスタから切断していない場合は、切断します。
破棄のコマンドを実行する前に、Cluster Toolkit ディレクトリのルートに移動します。デフォルトでは、DEPLOYMENT_FOLDER は Cluster Toolkit ディレクトリのルートにあります。
クラスタを破棄するには、次のコマンドを実行します。
./gcluster destroy DEPLOYMENT_FOLDER --auto-approve
次のように置き換えます。
DEPLOYMENT_FOLDER: デプロイ フォルダの名前。通常は DEPLOYMENT_NAME と同じです。
クラスタの削除が完了すると、次のようなメッセージが表示されます。
Destroy complete! Resources: xx destroyed.
インフラストラクチャを完全に破棄する方法と、高度な手動デプロイの手順については、Cluster Toolkit ディレクトリのルートにあるデプロイ フォルダ(DEPLOYMENT_FOLDER/instructions.txt)をご覧ください。