GPU VM を使用する MIG を作成する


このドキュメントでは、GPU が接続された仮想マシン(VM)インスタンスを使用するマネージド インスタンス グループ(MIG)を作成する方法について説明します。サイズ変更リクエストFlex Start プロビジョニング モデルを使用して、ゾーン MIG に GPU VM を一度にすべて追加する方法について説明します。予約を使用する MIG サイズ変更リクエストを作成する場合は、代わりに次の内容をご覧ください。

Flex Start プロビジョニング モデルで MIG サイズ変更リクエストを使用すると、GPU VM を取得できる可能性が高くなります。リクエストでは、GPU VM の数を指定する必要があります。基盤となるスケジューラ メカニズムである Dynamic Workload Scheduler(DWS)は、リクエストされた期間とリソースの可用性に基づいて、作成されたサイズ変更リクエストを Compute Engine 全体でスケジューリングします。リソースが使用可能になると、MIG は VM を作成します。

リクエストされた期間が終わる前にジョブが終了した場合は、作成した VM を削除できます。それ以外の場合、MIG は実行期間が終わる際に VM を削除します。

MIG を作成するための基本的なシナリオもご覧ください。

始める前に

  • リクエストするリソースに十分な GPU 割り当てがあることを確認するには、GPU 割り当てを確認します。
  • 割り当ての使用量については、GPU VM とプリエンプティブルの数量に基づく割り当てをご覧ください。
  • まだ設定していない場合は、認証を設定します。認証とは、 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 サイズ変更リクエストを作成する際の制限事項を確認します。

MIG を作成して GPU VM を一度にすべて追加する

MIG を作成して、グループ内に GPU VM を一度にすべて追加するには、次の操作を行います。

  1. インスタンス テンプレートを作成します。これは MIG の作成に必要です。MIG は、インスタンス テンプレートに基づいてグループに各 VM を作成します。テンプレートで、GPU VM の構成と、サイズ変更リクエストを使用するために必要な追加の構成を指定します。

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

  2. MIG とサイズ変更リクエストを作成して、GPU VM を一度にすべて追加します。

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

このセクションの説明に従ってインスタンス テンプレートを作成し、作成したテンプレートを使用して MIG を作成します。

コンソール

  1. [インスタンス テンプレート] ページに移動します。

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

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

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

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

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

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

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

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

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

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

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

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

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

gcloud

beta instance-templates create コマンドを使用してインスタンス テンプレートを作成します。

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

beta.instanceTemplates.insert メソッド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 が MIG によって自動的に削除されるまでの実行期間(秒単位)。値は 600(600 秒、10 分)~604800(604,800 秒、7 日間)の範囲で指定する必要があります。

インスタンス テンプレートを作成したら、表示して ID を確認し、インスタンス プロパティを確認できます。

MIG を作成して GPU VM を一度にすべて追加する

このセクションの説明に従って MIG を作成します。MIG でサイズ変更リクエストを作成するには、自動スケーリングを構成せず、修復をオフにする必要があります。

コンソール

  1. [インスタンス グループ] ページに移動します。

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

  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

  1. instance-groups managed create コマンドを使用して、ゾーン 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
    
  2. MIG で、instance-groups managed resize-requests create コマンドを使用してサイズ変更リクエストを作成します。必要な GPU VM の数と、それらの VM を実行する期間を指定します。

    gcloud compute instance-groups managed resize-requests create INSTANCE_GROUP_NAME \
       --resize-request=RESIZE_REQUEST_NAME \
       --resize-by=COUNT \
       --zone=ZONE
    

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

  • INSTANCE_GROUP_NAME: MIG の名前。
  • INSTANCE_TEMPLATE_URL: MIG で VM の作成に使用するインスタンス テンプレートの URL。この URL には、インスタンス テンプレートの ID または名前を含めることができます。次のいずれかの値を指定します。
    • リージョン インスタンス テンプレートの場合: projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • グローバル インスタンス テンプレートの場合: INSTANCE_TEMPLATE_ID
  • ZONE: Compute Engine で使用できるゾーンのいずれか。
  • RESIZE_REQUEST_NAME: サイズ変更リクエストの名前。
  • COUNT: グループに一度にすべて追加する VM の数。

REST

  1. instanceGroupManagers.insert メソッドPOST リクエストを送信して、ゾーン MIG を作成します。

    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"
     }
    }
    
  2. MIG で、instanceGroupManagerResizeRequests.insert メソッドPOST リクエストを送信してサイズ変更リクエストを作成します。リクエストの本文で、一度にすべて作成する GPU VM の数と、それらの VM を実行する期間を指定します。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME/resizeRequests
    
    {
     "name": "RESIZE_REQUEST_NAME",
     "resizeBy": COUNT
    }
    

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

  • PROJECT_ID: MIG を作成するプロジェクトの ID。
  • INSTANCE_GROUP_NAME: MIG の名前。
  • INSTANCE_TEMPLATE_URL: MIG で VM の作成に使用するインスタンス テンプレートの URL。この URL には、インスタンス テンプレートの ID または名前を含めることができます。次のいずれかの値を指定します。
    • リージョン インスタンス テンプレートの場合: projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • グローバル インスタンス テンプレートの場合: INSTANCE_TEMPLATE_ID
  • ZONE: Compute Engine で使用できるゾーンのいずれか。
  • RESIZE_REQUEST_NAME: サイズ変更リクエストの名前。
  • COUNT: グループに一度にすべて追加する VM の数。

作成するサイズ変更リクエストは、MIG がリクエストされたすべての GPU VM を作成するまで ACCEPTED 状態で保持されます。グループ内にすべての GPU VM が作成されると、リクエストの状態が SUCCEEDED に変わります。

次のステップ