Slurm クラスタで Flex Start VM を使用する

このガイドでは、Gemini Enterprise Agent Platform で Slurm を使用して Flex Start VM を構成および使用する方法について説明します。この統合により、トレーニング ワークロードに柔軟な VM プロビジョニング モデルを使用できます。

構成とクラスタの作成

クラスタの構成を定義する前に、必要なサービス アカウントに Flex Start リソースを管理する権限が付与されていることを確認するため、次の前提条件の手順を 1 回だけ完了する必要があります。

Google API サービス エージェントの権限を確認する

  • コンテキスト: Gemini Enterprise Agent Platform 上の Slurm は、マネージド インスタンス グループを使用して、Flex Start VM インスタンスを動的にプロビジョニングし、そのライフサイクルを管理します。Google API サービス エージェントは、マネージド インスタンス グループの基盤となる Compute Engine リソースを作成して管理します。マネージド インスタンス グループと IAM のドキュメントで説明されているように、このサービス アカウントには、VM インスタンスの作成、削除、一覧表示を行う権限と、サービス アカウント ID を VM インスタンスに関連付ける権限が必要です。
  • 操作: Google API サービス エージェント (PROJECT_NUMBER@cloudservices.gserviceaccount.com)に 編集者ロール(roles/editor)がすでに付与されているかどうかを確認します。
    • 「はい」の場合: おそらく、これ以上の操作は必要ありません。通常、編集者ロールには必要な権限がすべて含まれています。
    • 「いいえ」の場合: デフォルトの編集者ロールが付与されていない場合は、MIG が機能するように、次のロールを明示的に付与する必要があります。
      • Compute インスタンス管理者(v1)(roles/compute.instanceAdmin.v1)- VM インスタンスの作成、一覧表示、削除に必要です。
      • サービス アカウント ユーザー(roles/iam.serviceAccountUser)- サービス アカウントを新しい VM に関連付けるために必要です。

Flex Start プロビジョニング モデルを使用して Slurm クラスタを作成する

Flex Start プロビジョニング モデルを使用する Slurm クラスタを作成するには、API を使用してクラスタ作成リクエストを送信するときに、クラスタ仕様のノードプール構成内で provisioning_model を指定する必要があります。

構成スニペットの例: 次の JSON 構成を cluster_config.json という名前のファイルに保存します。この例では、slurm_spec を明示的に使用しています。 プレースホルダ(<project-id>, <region>, <zone>) を実際の値に置き換えます。

{
  "display_name": "flexvm",
  "name": "projects/<project-id>/locations/<region>/modelDevelopmentClusters/",
  "network": {
    "network": "projects/<project-id>/global/networks/default",
    "subnetwork": "projects/<project-id>/regions/<region>/subnetworks/default"
  },
  "node_pools": [
    {
      "id": "login",
      "machine_spec": { "machine_type": "n2-standard-8" },
      "scaling_spec": { "min_node_count": 1, "max_node_count": 1 },
      "enable_public_ips": "true",
      "zone": "<zone>",
      "boot_disk": { "boot_disk_type": "pd-standard", "boot_disk_size_gb": 120 }
    },
    {
      "id": "a3u",
      "machine_spec": {
        "machine_type": "a3-ultragpu-8g",
        "accelerator_type": "NVIDIA_H200_141GB",
        "accelerator_count": 8
      },
      "provisioning_model": "FLEX_START",
      "flex_start_max_duration": "604800s",
      "scaling_spec": { "min_node_count": 0, "max_node_count": 2 },
      "zone": "<zone>",
      "enable_public_ips": "true",
      "boot_disk": { "boot_disk_type": "hyperdisk-balanced", "boot_disk_size_gb": 400 }
    }
  ],
  "orchestrator_spec": {
    "slurm_spec": {
      "home_directory_storage": "projects/<project-id>/locations/<zone>/instances/<filestore-id>",
      "partitions": [ { "id": "a3u", "node_pool_ids": [ "a3u" ] } ],
      "login_node_pool_id": "login"
    }
  }
}

Slurm クラスタを作成する の手順に沿って 、認証してリクエストを送信します。

Flex Start の最大期間: 必要に応じて、Flex Start インスタンスの最大実行時間を設定できます。ノードプール構成の flex_start_max_duration フィールドを使用して、値を秒単位の文字列で指定し、末尾に「s」を追加します(例: 2 日の場合は「172800s」)。省略すると、デフォルトで 7 日間に設定されます。

運用ライフサイクルと復元力

Gemini Enterprise Agent Platform 環境での Slurm の Flex Start ノードのライフサイクルを理解することは、ジョブの計画に不可欠です。

Flex Start の制約

すべての Flex Start VM には、flex_start_max_duration 設定で定義された固定の最大実行時間があります。

  • 期間の制限: デフォルトでは、flex_start_max_duration は 7 日間に設定されています。 この制限をオーバーライドするには、ノードプール構成で 30 秒から最大 7 日間(604,800 秒)のカスタム flex_start_max_duration を指定して、想定されるジョブの実行時間に合わせて調整します。
  • 終了: この制限に達すると、Compute Engine はインスタンスを強制的に終了します。

ノードのスケーリング動作

以降のセクションでは、静的と動的の 2 つのスケーリング戦略について説明します。

静的ノード

静的ノードを使用すると、常に 使用可能なリソースの固定プールを維持できます(例: min_node_count > 0)。

  • プロビジョニング: ノードは、クラスタの作成時またはサイズ変更時に、最小ノード数を満たすためにすぐにリクエストされます。
  • 有効期限と復旧: 静的な Flex Start ノードが flex_start_max_duration に達して Compute Engine によって終了すると、システムは自動的にノードの再作成を試み、定義されたクラスタ容量を復元します。このサイクルにより、Slurm ジョブがノードで待機しているかどうかに関係なく、静的プールが常に維持されます。

動的ノード

動的ノードを使用すると、必要な場合にのみクラスタをスケールアップできます。

  • プロビジョニング: ジョブがキューに登録されると(PENDING 状態になると)、Slurm スケジューラはマネージド インスタンス グループを作成してサイズ変更リクエストを発行することで、リソースをリクエストします。
  • 有効期限と復旧: 有効期限が切れると、Slurm ジョブがノードで保留中の場合にのみ、新しい Flex Start ノードがプロビジョニングされます。

クラスタの復元力と自動修復

Gemini Enterprise Agent Platform 上の Slurm は、ジョブのライフサイクルの重要な段階でノードのヘルスをモニタリングします。ジョブの安定性を維持するため、ジョブの開始前(プロローグ)と完了後(エピローグ)の両方でヘルスチェックが実行されます。

  • ハードウェア エラー処理: サービスが重大なハードウェアの問題(GPU エラーなど)を検出した場合、異常な VM を自動的に修復するように設計されています。
  • 自動置換: ジョブが PENDING 状態のままの場合(またはノード障害のために PENDING に再キューされた場合)、システムは異常な VM を置き換えるために新しい Flex Start インスタンスを自動的にプロビジョニングします。 これにより、手動で介入することなく、正常なハードウェアでワークロードを続行できます。