クラスタの管理

Gemini Enterprise Agent Platform トレーニング クラスタに関心をお持ちの場合は、営業担当者にお問い合わせください。

クラスタがデプロイされたら、次の Agent Platform API エンドポイントを使用して、クラスタを変更または削除できます。

  • Update: 既存のクラスタ構成を変更します。
  • Delete: クラスタとそのリソースを完全に削除します。

クラスタの更新は、Agent Platform API を介してのみ可能です。クラスタは、Agent Platform API または Google Cloud コンソールから削除できます。

すべてのクラスタを一覧表示する、または個々のクラスタを表示する手順については、クラスタを表示するをご覧ください。

認証

alias gcurl='curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'

クラスタの更新

UPDATE_PAYLOAD には、更新する完全な ModelDevelopmentCluster を定義する JSON ファイルのローカルパスを指定します。

たとえば、CPU 専用クラスタのプールのノード数を更新するには、次の JSON ペイロードを使用します。

{
  "display_name": "DISPLAY_NAME",
  "network": {
    "network": "projects/PROJECT_ID/global/networks/NETWORK",
    "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK"
  },
  "node_pools": [
    {
      "id": "cpu",
      "machine_spec": {
        "machine_type": "n2-standard-8"
      },
      "scaling_spec": {
        "min_node_count": UPDATED_MIN_NODE_COUNT,
        "max_node_count": UPDATED_MAX_NODE_COUNT
      },
      "zone": "ZONE",
      "enable_public_ips": true,
      "boot_disk": {
        "boot_disk_type": "pd-standard",
        "boot_disk_size_gb": 120
      }
    },
    {
      "id": "login",
      "machine_spec": {
        "machine_type": "n2-standard-8"
      },
      "scaling_spec": {
        "min_node_count": 1,
        "max_node_count": 1
      },
      "zone": "ZONE",
      "enable_public_ips": true,
      "boot_disk": {
        "boot_disk_type": "pd-standard",
        "boot_disk_size_gb": 120
      }
    }
  ],
  "orchestrator_spec": {
    "slurm_spec": {
      "home_directory_storage": "projects/PROJECT_ID/locations/ZONE/instances/FILESTORE",
      "partitions": [
        {
          "id": "cpu",
          "node_pool_ids": [
            "cpu"
          ]
        }
      ],
      "login_node_pool_id": "login"
    }
  }
}

gcurl -X PATCH -d @UPDATE_PAYLOAD https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/modelDevelopmentClusters/CLUSTER_ID
クエリ パラメータ
  • updateMask(文字列、省略可): 更新するモデル開発クラスタ リソースのフィールドを指定する FieldMask。updateMask にリストされているフィールドのみが変更されます。

    ModelDevelopmentCluster リソース内の次のフィールドは、updateMask で指定できます。

    • labels
    • node_pools
    • orchestrator_spec.slurm_spec.partitions
    • orchestrator_spec.slurm_spec.default_partition_id
    • orchestrator_spec.slurm_spec.login_node_pool_id
    • orchestrator_spec.slurm_spec.prolog_bash_scripts
    • orchestrator_spec.slurm_spec.epilog_bash_scripts
    • orchestrator_spec.slurm_spec.config
    • orchestrator_spec.slurm_spec.scheduling と orchestrator_spec.slurm_spec.accounting: config に置き換えられた以前のフィールド。クラスタはどちらか一方を使用します。Slurm 構成設定を更新するをご覧ください。
    • orchestrator_spec.slurm_spec.node_sets
  • updateMode(列挙型、省略可): 更新モードを指定します。使用できる値は次のとおりです。

    • UPDATE_MODE_UNSPECIFIED: デフォルト値。USER_AND_SERVICE として扱われます。
    • USER_ONLY: リクエストでユーザーが指定したフィールドの変更のみを適用します。サービスは、スタートアップ スクリプト、プロローグ スクリプト、エピローグ スクリプトなどのサービス管理フィールドを更新しません。また、node_image を自分で設定しない限り、各ノードプールは現在実行中のイメージに留まるため、node_image を省略した USER_ONLY の更新ではノードは再作成されません。
    • USER_AND_SERVICE: ユーザー指定のフィールド変更を適用し、サービスでサービス管理フィールドを更新できるようにします。
    クラスタを最新の状態に保つには、USER_AND_SERVICE を使用することをおすすめします。

次のコマンドは、ノードプールの構成と Slurm パーティションの両方を更新します。

gcurl -X PATCH -d @update-payload.json \
'https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/modelDevelopmentClusters/CLUSTER_ID?updateMask=orchestrator_spec.slurm_spec.partitions,node_pools&updateMode=USER_AND_SERVICE'
繰り返しフィールドに関する重要な注意事項

node_pools、prolog_bash_scripts、epilog_bash_scripts などの繰り返しフィールドの場合、API は完全な置換オペレーションのみをサポートします。既存のリストを完全に置き換えるには、リクエスト ペイロードで想定される項目のリスト全体を指定する必要があります。

デフォルトのパーティションを変更する

partitions を再送信せずにデフォルト パーティションを変更するには、default_partition_id を設定し、updateMask で orchestrator_spec.slurm_spec.default_partition_id のみを指定します。default_partition_id で指定されたパーティションを削除または名前変更する更新は拒否されます。

Slurm 構成設定を更新する

実行中のクラスタで Slurm 構成を変更できます。これらの設定を適用しても、ノードは再起動またはドレインされません。サービスは slurm.conf を再生成して Slurm コントローラを再読み込みするため、キューに登録されているジョブと実行中のジョブは影響を受けません。

基盤となる依存関係の変更により、実行中のジョブが完了した後にノードが再起動するリスクが常にあります。ただし、USER_ONLY 更新モードを使用すると、このリスクを最小限に抑えることができます。

オペレーションが完了してから、新しい設定が scontrol show config に表示されるまでに少し時間がかかることがあります。

クラスタ スコープの設定は orchestrator_spec.slurm_spec.config、ノードプールの設定は orchestrator_spec.slurm_spec.node_sets、パーティション設定は orchestrator_spec.slurm_spec.partitions で指定されます。 には、各パーティションの config とメンバーシップが格納されます。各マップは、前述の繰り返しフィールドと同じように、完全に置き換えられます。必要なパラメータの完全なセットを送信します。省略したパラメータは削除されます。マップをクリアするには、updateMask でパスの名前を指定して、空の値を送信します。

次のコマンドは、既存のクラスタのパーティション優先度のプリエンプションを有効にします。

gcurl -X PATCH -d @update-payload.json \
'https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/modelDevelopmentClusters/CLUSTER_ID?updateMask=orchestrator_spec.slurm_spec.config&updateMode=USER_ONLY'

ここで、update-payload.json には次の内容が含まれます。

{
  ...,
  "orchestrator_spec": {
    "slurm_spec": {
      ...,
      "config": {
        "PriorityType": "priority/multifactor",
        "PriorityWeightAge": "1000",
        "PreemptType": "preempt/partition_prio",
        "PreemptMode": "REQUEUE",
        "PreemptExemptTime": "1:01",
        "SchedulerParameters": "bf_continue,bf_window=1440"
      }
    }
  }
}

scheduling と accounting ではなく、config でクラスタ全体のパラメータを設定します。 は と を置き換えます。クラスタはどちらか一方を使用します。両方を設定するリクエストは拒否されます。

updateMask なしで PATCH を呼び出すと、サービスはペイロード全体を現在のクラスタと比較するため、これらの設定を省略したペイロードは、クラスタにすでに設定されているものをすべてクリアします。updateMask を渡して、変更するフィールドに更新を限定します。名前を付けたもののペイロードから除外したフィールドはクリアされます。

既存のクラスタを scheduling と accounting から config に移動するには、config のすべての設定を slurm.conf 名(AccountingStorageEnforce や PriorityWeightQOS など)を使用して送信し、scheduling と accounting をペイロードから除外し、updateMask で 3 つすべてに名前を付けて、古いフィールドをクリアします。その後は、orchestrator_spec.slurm_spec.config の updateMask だけで十分です。

ノードイメージの選択

node_pools は完全に置き換えられるため、node_image を省略した更新ペイロードのノードプールは、そのマシンタイプの現在のデフォルト イメージに解決されます。このデフォルトは時間の経過とともに更新されるため、node_image を省略すると、ノードプールは最新の利用可能なイメージに移行します。これは、多くの場合、ドライバ、セキュリティ、バグの修正を取得するために必要なことです。

更新全体でノードプールを特定のイメージに保持するには、node_image をそのイメージに設定します。現在の値を Get から読み取って返送する場合、更新されたことのないクラスタは空の node_image を報告することに注意してください。

更新後の動作とクラスタのステータス

リクエストが成功すると、長時間実行オペレーション(LRO)が返されます。次のコマンドを使用して、このオペレーションのステータスをモニタリングできます。

gcurl https://REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
更新オペレーションが正常に完了すると、ほとんどの変更はすぐに(または 15 秒の Slurm 同期時間内に)有効になり、それ以上の操作は必要ありません。基盤となるクラスタ コンピューティング インフラストラクチャ(ストレージ ソースやスタートアップ スクリプトの変更など)に対する変更の場合のみ、リソースの再作成が必要になります。

クラスタの削除

  gcurl -X DELETE https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/modelDevelopmentClusters/CLUSTER_ID
  

このコマンドは、成功すると長時間実行オペレーションを返します。このオペレーションは、operations describe コマンドを使用してモニタリングできます。

gcurl https://REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID

次のステップ

Gemini Enterprise Agent Platform トレーニング クラスタを管理すると、使用状況を最適化し、自動化されたワークフローに統合して、トレーニング済みモデルをデプロイ用に準備できます。

  • Gemini Enterprise Agent Platform Pipelines でトレーニングをオーケストレートする: マネージド クラスタをターゲットとするパイプラインを使用して、データ準備からモデル登録まで、トレーニング ジョブのライフサイクル全体を自動化します。
  • トレーニング ジョブのモニタリングとデバッグ: クラスタで実行されている分散トレーニング ジョブの進行状況とリソース使用量を追跡し、問題を特定します。
  • 推論用にモデルをデプロイする: モデルのトレーニングと登録が完了したら、モデルを Gemini Enterprise Agent Platform エンドポイントにデプロイして、オンライン推論リクエストを大規模に処理します。
  • 費用を最適化する: クラスタの使用率を定期的に確認し、アクティブに使用されていない場合はクラスタを削除して、予約済みハードウェアの請求額を最小限に抑えます。