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

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

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

リクエストされた期間が終わる前にジョブが終了した場合は、作成した Flex Start VM を削除できます。それ以外の場合、MIG は実行期間の終了時に Flex-start 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. Google Cloud CLI をインストールします。 インストール後、次のコマンドを実行して Google Cloud CLI を初期化します。

      gcloud init

      外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

    2. Set a default region and zone.

    REST

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

      Google Cloud CLI をインストールします。 インストール後、次のコマンドを実行して Google Cloud CLI を初期化します。

      gcloud init

      外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

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

制限事項

MIG サイズ変更リクエストを作成する際の制限事項を確認します。

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

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

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

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

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

インスタンス テンプレートの作成

このセクションで説明するように、MIG サイズ変更リクエストのサポートされている GPU マシンシリーズを指定するインスタンス テンプレートを作成します。次に、このテンプレートを使用して MIG を作成します。

注: データ サイエンスまたは ML のワークロードを実行する場合は、インスタンス テンプレートの作成時に Deep Learning VM Image を使用することを検討してください。Deep Learning VM Image は、ML フレームワークと必須ツールが付属する、パッケージ化された VM イメージのセットです。これらのイメージの詳細については、Deep Learning VM Image のドキュメントのイメージを選択するをご覧ください。

コンソール

  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

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

gcloud 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

instanceTemplates.insert メソッドPOST リクエストを送信してインスタンス テンプレートを作成します。

POST https://compute.googleapis.com/compute/v1/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. [インスタンス数] フィールドに、一度に作成する Flex-start 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: グループに一度にすべて追加する Flex Start 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 Flex Start VM の数と、それらの Flex Start 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: グループに一度にすべて追加する Flex Start VM の数。

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

次のステップ