MIG でサイズ変更リクエストを作成する


このドキュメントでは、GPU が関連付けられている仮想マシン(VM)インスタンスのマネージド インスタンス グループ(MIG)でサイズ変更リクエストを作成する方法について説明します。サイズ変更リクエストの詳細については、MIG のサイズ変更リクエストについてをご覧ください。

MIG サイズ変更リクエストを作成すると、GPU などの需要の高いリソースを取得し、正確な数の VM を一度に作成して費用を最適化できます。Cluster Director で利用可能な機能とサービスを使用できる MIG サイズ変更リクエストを作成するには、AI Hypercomputer のドキュメントで MIG とサイズ変更リクエストを作成するをご覧ください。

始める前に

  • リクエストするリソースに十分な GPU 割り当てがあることを確認するには、GPU 割り当てを確認するをご覧ください。
  • まだ設定していない場合は、認証を設定します。認証とは、 Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のいずれかのオプションを選択して Compute Engine に対する認証を行います。

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

      1. After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      2. Set a default region and zone.
      3. REST

        このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。

          After installing the Google Cloud CLI, initialize it by running the following command:

          gcloud init

          If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

        詳細については、 Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。

必要なロール

MIG サイズ変更リクエストの作成に必要な権限を取得するには、プロジェクトに対する Compute インスタンス管理者(v1)roles/compute.instanceAdmin.v1)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

この事前定義ロールには、MIG サイズ変更リクエストの作成に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

MIG サイズ変更リクエストを作成するには、次の権限が必要です。

  • インスタンス テンプレートを作成する: プロジェクトに対する compute.instanceTemplates.create
  • ゾーン MIG を作成する: プロジェクトに対する compute.instanceGroupManagers.create
  • MIG のサイズ変更リクエストを作成する: プロジェクトに対する compute.instanceGroupManagers.update

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

サイズ変更リクエスト用に MIG を準備する

MIG のサイズ変更リクエストを作成するには、次のセクションで説明するように、インスタンス テンプレートと MIG を構成する必要があります。

インスタンス テンプレートを作成する

MIG サイズ変更リクエストを作成するように構成されたインスタンス テンプレートを作成するには、テンプレートで次の項目を指定します。

MIG サイズ変更リクエストを作成するように構成されたインスタンス テンプレートを作成するには、次のいずれかのオプションを選択します。

コンソール

  1. Google Cloud コンソールで、[インスタンス テンプレート] ページに移動します。

    [インスタンス テンプレート] に移動

  2. [インスタンス テンプレートを作成] をクリックします。[インスタンス テンプレートの作成] ページが開きます。

  3. [名前] フィールドに、インスタンス テンプレートの名前を入力します。

  4. [ロケーション] セクションで、次のいずれかのオプションを選択します。

    • リージョン インスタンス テンプレートを作成するには、[リージョン(推奨)] を選択し、テンプレートを作成するリージョンを選択します。

    • グローバル インスタンス テンプレートを作成するには、[グローバル] を選択します。

  5. [マシンの構成] セクションで、次の操作を行います。

    1. [GPU] タブをクリックします。

    2. [GPU のタイプ] リストで、GPU のタイプを選択します。

    3. [GPU の数] リストで、GPU の数を選択します。

    4. 省略可: GPU モデルがグラフィック ワークロード用の NVIDIA RTX 仮想ワークステーション(vWS)グラフィックを多用するワークロードを実行する場合は、仮想ワークステーション(NVIDIA GRID)を有効にするをご覧ください。

    5. [マシンタイプ] セクションでマシンタイプを選択します。

  6. [プロビジョニング モデル] セクションで、次の操作を行います。

    1. [VM プロビジョニング モデル] リストで、[Flex Start] を選択します。

    2. インスタンス テンプレートによって作成される VM の実行時間を設定するには、[時間を入力] フィールドに時間数を入力します。値は 1 時間(1)~7 日間(168)の範囲で指定してください。

  7. 省略可: デフォルト値のブートディスクのタイプまたはイメージを変更するには、[ブートディスク] セクションで [変更] をクリックします。プロンプトに従ってブートディスクを変更します。

  8. [作成] をクリックします。

gcloud

MIG サイズ変更リクエストを作成するように構成されたインスタンス テンプレートを作成するには、次のフラグを指定して beta instance-templates create コマンドを使用します。

  • --maintenance-policy フラグ。TERMINATE に設定します。

  • --instance-termination-action フラグ。DELETE に設定します。

  • --max-run-duration フラグ。

  • --provisioning-model フラグ。FLEX_START に設定します。

  • --reservation-affinity フラグ。none に設定します。

次のコマンドは、リージョン インスタンス テンプレートを作成します。グローバル インスタンス テンプレートを作成するには、--instance-template-region フラグを使用せずに同じコマンドを使用します。

gcloud beta compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --image-project=IMAGE_PROJECT \
    --image-family=IMAGE_FAMILY \
    --instance-termination-action=DELETE \
    --instance-template-region=REGION \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=TERMINATE \
    --max-run-duration=RUN_DURATION \
    --provisioning-model=FLEX_START \
    --reservation-affinity=none

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

  • INSTANCE_TEMPLATE_NAME: 作成するインスタンス テンプレートの名前。

  • IMAGE_PROJECT: イメージを含むイメージ プロジェクト。例: debian-cloud サポートされているイメージ プロジェクトの詳細については、公開イメージをご覧ください。

  • IMAGE_FAMILY: イメージ ファミリー。これにより、非推奨ではない最新の OS イメージが指定されます。たとえば、debian-12 を指定すると、Debian 12 イメージ ファミリーの最新バージョンが使用されます。イメージ ファミリーの使用の詳細については、イメージ ファミリーのベスト プラクティスをご覧ください。

  • REGION: インスタンス テンプレートを作成するリージョン。

  • MACHINE_TYPE: GPU マシンタイプ。N1 マシンタイプを指定する場合は、--accelerator フラグを設定して、VM にアタッチする GPU の数とタイプを定義します。

  • RUN_DURATION: リクエストされた VM を実行する期間。値は、日数、時間、分、秒として指定し、その後にそれぞれ dhms を続ける必要があります。たとえば、30 分の場合は 30m を指定し、1 日と 2 時間 3 分 4 秒の場合は 1d2h3m4s を指定します。値は 10 分~7 日の範囲で指定してください。

REST

MIG でサイズ変更リクエストを作成するように構成されたインスタンス テンプレートを作成するには、次のいずれかのメソッドに POST リクエストを送信します。

リクエスト本文で、次のフィールドを指定します。

  • scheduling.onHostMaintenance フィールド。TERMINATE に設定します。

  • scheduling.instanceTerminationAction フィールド。DELETE に設定します。

  • scheduling.maxRunDuration フィールド。

  • scheduling.provisioningModel フィールド。FLEX_START に設定します。

  • reservationAffinity.consumeReservationType フィールド。NO_RESERVATION に設定します。

たとえば、リージョン インスタンス テンプレートを作成するには、次のように POST リクエストを送信します。

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/instanceTemplates

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "reservationAffinity": {
      "consumeReservationType": "NO_RESERVATION"
    },
    "scheduling": {
      "instanceTerminationAction": "DELETE",
      "maxRunDuration": {
        "seconds": RUN_DURATION
      },
      "onHostMaintenance": "TERMINATE",
      "provisioningModel": "FLEX_START"
    }
  }
}

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

  • PROJECT_ID: インスタンス テンプレートを作成するプロジェクトの ID。

  • REGION: インスタンス テンプレートを作成するリージョン。

  • INSTANCE_TEMPLATE_NAME: 作成するインスタンス テンプレートの名前。

  • IMAGE_PROJECT: イメージを含むイメージ プロジェクト。例: debian-cloud サポートされているイメージ プロジェクトの詳細については、公開イメージをご覧ください。

  • IMAGE: 次のいずれかを指定します。

    • OS イメージの特定のバージョン。例: debian-12-bookworm-v20240617

    • イメージ ファミリーfamily/IMAGE_FAMILY の形式にする必要があります。これにより、非推奨ではない最新の OS イメージが指定されます。たとえば、family/debian-12 を指定すると、Debian 12 イメージ ファミリーの最新バージョンが使用されます。イメージ ファミリーの使用の詳細については、イメージ ファミリーのベスト プラクティスをご覧ください。

  • MACHINE_TYPE: GPU マシンタイプ。N1 マシンタイプを指定する場合は、リクエスト本文に guestAccelerators フィールドを含めて、VM に関連付けられる GPU の数とタイプを定義します。

  • RUN_DURATION: リクエストされた VM の実行時間(秒単位)。値は 600(600 秒、10 分)から 604800(604,800 秒、7 日間)の範囲で指定する必要があります。

インスタンス テンプレートの作成の詳細については、インスタンス テンプレートを作成するをご覧ください。

MIG を作成または更新する

前のセクションの説明に従ってインスタンス テンプレートを作成したら、そのインスタンス テンプレートを使用して次のように MIG を作成するか、MIG を更新します。また、サイズ変更リクエスト用に MIG を準備するには、次のことを行う必要があります。

サイズ変更リクエストと互換性のある MIG を作成するには、次のいずれかのオプションを選択します。

コンソール

  1. Google Cloud コンソールで、[インスタンス グループ] ページに移動します。

    [インスタンス グループ] に移動

  2. [インスタンス グループを作成] をクリックします。[インスタンス グループの作成] ページが開きます。

  3. [名前] フィールドに、MIG の名前を入力します。

  4. インスタンス テンプレートを選択する前に、自動スケーリングの構成を削除し、次のように修復を無効にする必要があります。

    1. 自動スケーリング構成を削除するには、次の操作を行います。

      1. [自動スケーリング] セクションで、[自動スケーリング モード] リストをクリックし、[自動スケーリングの構成を削除] をクリックします。

      2. 確認ダイアログで [削除] をクリックします。

    2. 修復を無効にするには、[VM インスタンスのライフサイクル] セクションで、[障害発生時のデフォルトのアクション] リストをクリックして、[アクションなし] を選択します。

  5. [インスタンス テンプレート] フィールドに戻ります。[インスタンス テンプレート] リストで、前のセクションで作成したインスタンス テンプレートを選択します。リージョン インスタンス テンプレートを選択すると、[リージョン] リストはテンプレートのリージョンに設定されます。

  6. 次のいずれかを行います。

    • MIG の作成時にサイズ変更リクエストを作成するには、次の操作を行います。

      1. [インスタンス数] フィールドに、一度に作成する VM の数を入力します。

      2. [サイズ変更リクエストを使用して VM を一度に作成する] チェックボックスを選択します。

      3. 省略可: インスタンス テンプレートで設定された実行時間とは異なる実行時間を VM に指定するには、[リクエストされた実行時間] フィールドと [単位] リストで期間を指定します。期間は 1 時間~7 日の範囲で指定してください。

    • MIG の作成後にサイズ変更リクエストを作成するには、[インスタンス数] フィールドに「0」と入力します。

  7. [ロケーション] セクションで、ゾーン MIG またはリージョン MIG を作成するかどうかを次のように指定します。

    1. ゾーン MIG を作成するには、[単一ゾーン] を選択します。リージョン MIG を作成する場合は、[マルチゾーン] を選択します。

    2. MIG のリージョンゾーンを選択します。

    3. リージョン MIG を作成する場合は、次の操作を行います。

      1. [ターゲット分配形態] フィールドで、[任意のシングルゾーン] を選択します。

      2. 表示されたダイアログで、[インスタンスの再分配を無効化] をクリックします。

  8. [作成] をクリックします。

gcloud

--default-action-on-vm-failure フラグを do_nothing に設定して instance-groups managed create コマンドを使用します。リージョン MIG を作成する場合は、--target-distribution-shape フラグを any-single-zone に設定し、--instance-redistribution-type フラグを none に設定することも必要です。

  • ゾーン MIG を作成するには、次のコマンドを実行します。

    gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
        --template=INSTANCE_TEMPLATE_URL \
        --size=0 \
        --zone=ZONE \
        --default-action-on-vm-failure=do_nothing
    
  • リージョン MIG を作成するには、次のコマンドを実行します。

    gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
        --template=INSTANCE_TEMPLATE_URL \
        --size=0 \
        --region=REGION \
        --target-distribution-shape=any-single-zone \
        --instance-redistribution-type=none \
        --default-action-on-vm-failure=do_nothing
    

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

  • INSTANCE_GROUP_NAME: 作成する MIG の名前。

  • INSTANCE_TEMPLATE_URL: 前のセクションで作成したインスタンス テンプレートの部分的な URL。リージョン インスタンス テンプレートを使用して MIG を作成する場合は、テンプレートのリージョン内にのみ MIG を作成できます。次のいずれかの値を指定します。

    • リージョン インスタンス テンプレートの場合: projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_NAME

    • グローバル インスタンス テンプレートの場合: INSTANCE_TEMPLATE_NAME

  • ZONE: MIG を作成するゾーン。

  • REGION: MIG を作成するリージョン。

REST

  • ゾーン MIG を作成するには、次のように instanceGroupManagers.insert メソッドを使用して POST リクエストを送信します。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers
    
    {
      "versions": [
        {
          "instanceTemplate": "INSTANCE_TEMPLATE_URL"
        }
      ],
      "name": "INSTANCE_GROUP_NAME",
      "targetSize": 0,
      "instanceLifecyclePolicy": {
        "defaultActionOnFailure": "DO_NOTHING"
      }
    }
    
  • リージョン MIG を作成するには、次のように regionInstanceGroupManagers.insert メソッドを使用して POST リクエストを送信します。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers
    
    {
      "versions": [
        {
          "instanceTemplate": "INSTANCE_TEMPLATE_URL"
        }
      ],
      "name": "INSTANCE_GROUP_NAME",
      "targetSize": 0,
      "distributionPolicy": {
        "targetShape": "ANY_SINGLE_ZONE"
      },
      "updatePolicy": {
        "instanceRedistributionType": "NONE"
      },
      "instanceLifecyclePolicy": {
        "defaultActionOnFailure": "DO_NOTHING"
      }
    }
    

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

  • PROJECT_ID: 前のセクションで作成したインスタンス テンプレートが存在するプロジェクトの ID。

  • INSTANCE_TEMPLATE_URL: 前のセクションで作成したインスタンス テンプレートの部分的な URL。リージョン インスタンス テンプレートを使用して MIG を作成する場合は、テンプレートのリージョン内にのみ MIG を作成できます。次のいずれかの値を指定します。

    • リージョン インスタンス テンプレートの場合: regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_NAME

    • グローバル インスタンス テンプレートの場合: global/instanceTemplates/INSTANCE_TEMPLATE_NAME

  • ZONE: MIG を作成するゾーン。

  • REGION: MIG を作成するリージョン。

  • INSTANCE_GROUP_NAME: 作成する MIG の名前。

MIG でサイズ変更リクエストを作成する

MIG サイズ変更リクエストを作成する前に、前のセクションの説明に従って MIG を準備してください。

サイズ変更リクエストを作成し、リクエストされたすべてのリソースが使用可能になると、MIG はリクエストされた数の VM を一度に作成します。VM は、指定された実行期間の終了後に MIG によって削除されるまで、またはユーザーがそれらを削除するまで実行されます。

MIG でサイズ変更リクエストを作成するには、次のいずれかのオプションを選択します。サイズ変更リクエストで特定の名前の VM を MIG に追加するには、gcloud CLI または REST API を使用します。

コンソール

  1. Google Cloud コンソールで、[インスタンス グループ] ページに移動します。

    [インスタンス グループ] に移動

  2. [名前] 列で、サイズ変更リクエストを作成する MIG の名前をクリックします。

    MIG の概要ページが開きます。

  3. [サイズ変更リクエスト] 行で、 [サイズ変更リクエストを編集] をクリックします。

  4. [ サイズ変更の新規リクエスト] をクリックします。

    [サイズ変更の新規リクエスト] ペインが表示されます。

  5. [名前] フィールドに、サイズ変更リクエストの名前を入力します。

  6. [必要な追加インスタンス数] フィールドに、一度に MIG に追加する VM の数を入力します。

  7. 省略可: インスタンス テンプレートで設定された実行時間とは異なる実行時間を VM に指定するには、[リクエストされた実行時間] フィールドと [単位] フィールドで期間を指定します。期間は 1 時間~7 日の範囲で指定してください。

  8. [作成] をクリックします。

gcloud

  • ゾーン MIG にサイズ変更リクエストを作成するには、instance-groups managed resize-requests create コマンドを使用します。

    gcloud compute instance-groups managed resize-requests create INSTANCE_GROUP_NAME \
        --resize-request=RESIZE_REQUEST_NAME \
        --resize-by=COUNT \
        --zone=ZONE
    
  • リージョン MIG にサイズ変更リクエストを作成するには、beta instance-groups managed resize-requests create コマンドを使用します。

    gcloud beta compute instance-groups managed resize-requests create INSTANCE_GROUP_NAME \
        --resize-request=RESIZE_REQUEST_NAME \
        --resize-by=COUNT \
        --region=REGION
    

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

  • INSTANCE_GROUP_NAME: サイズ変更リクエストを作成するために構成された MIG の名前。

  • RESIZE_REQUEST_NAME: サイズ変更リクエストの名前。指定された MIG 内で一意である必要があります。それ以外の場合、サイズ変更リクエストは作成されません。

  • COUNT: MIG に一度に追加する VM の数。

  • ZONE: MIG が存在するゾーン。

  • REGION: MIG が存在するリージョン。

必要に応じて、次の設定を行います。

REST

リクエスト本文に、次のものを含めます。

{
  "name": "RESIZE_REQUEST_NAME",
  "resizeBy": COUNT
}

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

  • PROJECT_ID: 指定した MIG が存在するプロジェクトの ID。

  • ZONE: MIG が存在するゾーン。

  • REGION: MIG が存在するリージョン。

  • INSTANCE_GROUP_NAME: サイズ変更リクエストを作成するために構成された MIG の名前。

  • RESIZE_REQUEST_NAME: サイズ変更リクエストの名前。指定された MIG 内で一意である必要があります。それ以外の場合、サイズ変更リクエストは作成されません。

  • COUNT: MIG に一度に追加する VM の数。

必要に応じて、次の設定を行います。

次のステップ