A4 VM を使用して自己管理型 Slurm クラスタを作成する

このページでは、gcloud CLI と Cluster Toolkit を使用して、A4 アクセラレータ最適化マシンタイプで AI 最適化 Slurm クラスタを迅速に作成してデプロイする方法について説明します。

A4 アクセラレータ最適化マシンタイプには NVIDIA B200 GPU が搭載されており、集中的な AI コンピューティング用に特別に設計されています。これにより、Slurm クラスタは大規模なモデルのトレーニングと推論を効率的に処理できます。 の A4 アクセラレータ最適化マシンタイプの詳細については、 GPU マシンタイプをご覧ください。 Google Cloud

または、Cluster Director を使用して A4 ベースの Slurm クラスタを作成することもできます。Cluster Director は、クラスタのデプロイを簡素化して自動化し、運用オーバーヘッドを削減するマネージド サービスです。詳細については、 2 つの A4 VM を使用してフルマネージド Slurm クラスタを作成するをご覧ください。


このタスクを Google Cloud コンソールで直接行う際の順を追ったガイダンスについては、「ガイドを表示」をクリックしてください。

ガイドを表示


チュートリアルの概要

このチュートリアルでは、A4 アクセラレータ最適化マシンタイプを使用して AI 最適化 Slurm クラスタを設定する手順について説明します。具体的には、Compute Engine 仮想マシンでクラスタを設定して、必要な Terraform モジュールを保存する Cloud Storage バケットを作成し、Slurm クラスタをプロビジョニングする Filestore インスタンスを設定します。このチュートリアルの手順を完了するには、次のプロセスを行います。

  1. このガイドに必要な権限と、マシンを予約するための環境変数を使用して、 Google Cloud プロジェクトを設定します。
  2. Cloud Storage バケットを作成する。
  3. ストレージ環境変数を設定する。
  4. Cluster Toolkit を設定します。
  5. Cluster Toolkit ディレクトリに切り替えます。
  6. Slurm Deployment YAML ファイルを作成します。
  7. ブループリントを使用して Slurm クラスタをプロビジョニングします。
  8. Slurm クラスタに接続します。

始める前に

  1. 1 台の a4-highgpu-8g マシンの容量ブロックを予約します。
  2. Slurm クラスタをプロビジョニングするのに十分な Filestore の割り当てがあることを確認します。最小 10,240 GiB のゾーン容量(高スケール SSD 容量とも呼ばれる)が必要です。

    Filestore の割り当てを確認するには、 Google Cloud コンソールの [割り当てとシステム上限] を表示し、表をフィルタリングして Filestore リソースのみを表示します。

  3. プロジェクトに対して課金が有効になっていることを確認します Google Cloud 。

  4. Compute Engine、Filestore、Cloud Storage、Service Usage、Cloud Resource Manager API を有効にします。

    API を有効にする

必要なロール

Slurm クラスタをデプロイするために必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。

ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

必要な権限は、カスタム ロールや他の事前定義 ロールから取得することもできます。

費用

このチュートリアルの実行にかかる費用は、チュートリアルの設定やジョブの実行など、完了するセクションによって異なります。料金計算ツールを使用して費用を計算できます。

  • このチュートリアルの設定費用を見積もるには、次の仕様を使用します。

    • リージョンあたりの 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 コンソール

  2. コンソールの右上隅にある [Cloud Shell をアクティブにする] ボタン 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 バケットを作成する

ブループリントとそのモジュールをデプロイすると、Terraform はブループリントをクラウド内のリソースにマッピングする状態ファイルを作成します。インフラストラクチャの信頼できる レコードを維持するには、Terraform の状態ファイルを、バージョン管理が有効になっている Cloud Storage バケットなど、 バージョン管理が有効になっているリモート の場所に保存することをおすすめします。

状態ファイルを保存するには、Cloud Shell からバージョン管理が有効になっている Cloud Storage バケットを作成します。

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 バケットの名前。 バケット命名要件を満たす必要があります。
  • A4_RESERVATION_PROJECT_ID: A4 マシンタイプの予約ブロックが付与された Google Cloud プロジェクト ID。
  • BUCKET_LOCATION: Cloud Storage バケットを作成する Google Cloud リージョンus-central1 など)。Terraform は、この場所に状態ファイルを保存します。

ストレージ容量変数を設定する

Cloud Shell で、前の手順で作成したバケットの環境変数を作成します。

export BUCKET_NAME=BUCKET_NAME
export BUCKET_LOCATION=BUCKET_LOCATION

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

  • BUCKET_NAME: バケットの名前。
  • BUCKET_LOCATION: バケットが配置されているリージョン。

Cluster Toolkit を設定する

プロジェクトに Slurm クラスタを作成するには、 Google Cloud Cluster Toolkit を使用してクラスタのデプロイ とプロビジョニングを処理します。Cluster Toolkit は、 にワークロードをデプロイするプロセスを簡素化するために Google Cloud が提供するオープンソース ソフトウェアです Google Cloud。

Cluster Toolkit を設定する手順は次のとおりです。

Cluster Toolkit をインストールする

Cluster Toolkit をインストールするには、プラットフォーム用にビルド済みのバイナリ バンドルをダウンロードして展開します。ZIP アーカイブと tar(.tgz)アーカイブの両方を使用できます。

  1. GitHub の Cluster Toolkit のリリースページ に移動します。
  2. 使用するプラットフォームとアーキテクチャに一致するバンドルをダウンロードします。次のオプションを使用できます。
    • gcluster_bundle_linux_amd64.zip または gcluster_bundle_linux_amd64.tgz
    • gcluster_bundle_linux_arm64.zip または gcluster_bundle_linux_arm64.tgz
    • gcluster_bundle_mac_amd64.zip または gcluster_bundle_mac_amd64.tgz
    • gcluster_bundle_mac_arm64.zip または gcluster_bundle_mac_arm64.tgz
  3. ターミナルで、バンドル ファイルを新しいディレクトリに展開します。
    • ZIP バンドルをダウンロードした場合は、 unzip コマンドを使用してファイルを展開します。

      unzip BUNDLE_FILENAME -d cluster-toolkit
    • tar バンドルをダウンロードした場合は、 tar コマンドを使用してファイルを展開します。

      mkdir -p cluster-toolkit
      tar -xzf BUNDLE_FILENAME -C cluster-toolkit

    BUNDLE_FILENAME は、ダウンロードしたバンドルの名前に置き換えます。

  4. 新しいディレクトリに移動します。
    cd cluster-toolkit
  5. インストールを確認します。
    ./gcluster --version

    出力には、使用している Cluster Toolkit の現在のバージョンが表示されます。

バイナリをインストールしたことで、ジョブまたはワークロードを実行するクラスタをデプロイする準備が整いました。

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

  1. Cluster Toolkit ディレクトリに、Slurm デプロイ YAML ファイルを作成します。

    nano ${A4_DEPLOYMENT_FILE_NAME}.yaml
    
  2. 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
    
  3. ファイルを保存して終了するには、Ctrl+O > Enter > Ctrl+X の順に押します。

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

Slurm クラスタをプロビジョニングするには、次のデプロイ コマンドを実行します。この コマンドは、Slurm クラスタを examples/machine-learning/a4-highgpu-8g/a4high-slurm-blueprint.yaml ブループリント ファイルを使用してプロビジョニングします。

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 インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. ログインノード(a4high-login-001 など)を見つけます。

  3. [SSH] をクリックして接続します。

クリーンアップ

このページで使用したリソースについて、 Google Cloud アカウントに課金されないようにするには、 次の手順を実施します。

Slurm クラスタを破棄する

リソースが不要になったら、クリーンアップすることをおすすめします。

A4 High ブループリントでは、Filestore インスタンスで削除からの保護がデフォルトで有効になっています。Slurm クラスタを破棄する場合は、destroy コマンドを実行する前に削除からの保護を無効にする必要があります。

削除からの保護を無効にする

インスタンスの更新時に削除からの保護を無効にするには、次のようなコマンドを使用します。

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

INSTANCE_NAME は、編集するインスタンスの名前に置き換えます。例: my-genomics-instance

INSTANCE_NAME を見つけるには、gcloud filestore instances list を実行します。このコマンドは、現在のプロジェクト内のすべての Filestore インスタンスを一覧表示します。名前、ロケーション(ゾーン)、階層、容量、ステータスなどが表示されます。 Google Cloud

コマンドを実行したら、このチュートリアルで実行されている 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.

ストレージ バケットの削除

前のコマンドがエラーなしで終了したことを確認してから、Cloud Storage バケットを削除します。

gcloud storage buckets delete gs://${BUCKET_NAME}

トラブルシューティング

次のステップ