クラスタの管理

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

ノードイメージの選択

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

更新全体でノードプールを特定のイメージに保持するには、node_image をそのイメージ(projects/IMAGE_PROJECT/global/images/IMAGE など)に設定します。Get から現在の値を読み取って返送する場合、更新されたことがないクラスタは、クラスタの作成時に node_image が設定されていない限り、空の 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 エンドポイントにデプロイして、オンライン推論リクエストを大規模に処理します。
  • 費用を最適化する: クラスタの使用率を定期的に確認し、アクティブに使用されていない場合はクラスタを削除して、予約済みハードウェアの請求額を最小限に抑えます。