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


このドキュメントでは、GPU VM を使用するマネージド インスタンス グループ(MIG)を作成する方法について説明します。サイズ変更リクエストを使用してグループに GPU VM を一度にすべて追加する方法について説明します。

サイズ変更リクエストを使用すると、MIG 内の GPU VM の入手可能性が向上します。リクエストでは、GPU VM の数と、それらの VM を実行する期間を指定します。基盤となるスケジューラ メカニズムである Dynamic Workload Scheduler(DWS)は、リクエストされた期間とリソースの可用性に基づいて、作成されたサイズ変更リクエストを Compute Engine 全体でスケジューリングします。リソースが使用可能になると、MIG は自動的に VM を作成します。

これらの 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. Install the Google Cloud CLI, then initialize it by running the following command:

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

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

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      詳細については、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. 省略可: デフォルト値のブートディスクのタイプまたはイメージを変更するには、[ブートディスク] セクションで [変更] をクリックします。プロンプトに沿ってブートディスクを変更します。

  6. [詳細オプション] セクションを開き、次の操作を行います。

    1. [管理] セクションを開きます。
    2. [予約] リストで、[使用しない] を選択します。
  7. [作成] をクリックします。

gcloud

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

次のコマンドは、Deep Learning VM Image に基づいてグローバル インスタンス テンプレートを作成します。

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --machine-type=MACHINE_TYPE \
    --image-project=deeplearning-platform-release \
    --image-family=common-cu121 \
    --maintenance-policy=TERMINATE \
    --reservation-affinity=none

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

  • INSTANCE_TEMPLATE_NAME: インスタンス テンプレートの名前。
  • MACHINE_TYPE: GPU をサポートするマシンタイプ。N1 マシンタイプを指定する場合は、--accelerator フラグを設定して、VM にアタッチする GPU の数とタイプを指定します。

REST

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

次のリクエストでは、Deep Learning VM Image に基づいてグローバル インスタンス テンプレートを作成します。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "machineType": "MACHINE_TYPE",
    "disks": [
      {
        "boot": true,
        "mode": "READ_WRITE",
        "type": "PERSISTENT",
        "initializeParams": {
          "sourceImage": "projects/deeplearning-platform-release/global/images/family/common-cu121"
        }
      }
    ],
    "networkInterfaces": [
      {
        "accessConfigs": [
          {
            "name": "external-IP",
            "type": "ONE_TO_ONE_NAT"
          }
        ],
        "network": "global/networks/default"
      }
    ],
    "reservationAffinity": {
      "consumeReservationType": "NO_RESERVATION"
    },
    "scheduling": {
      "onHostMaintenance": "TERMINATE"
    }
  }
}

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

  • PROJECT_ID: MIG を作成するプロジェクトの ID。
  • INSTANCE_TEMPLATE_NAME: インスタンス テンプレートの名前。
  • MACHINE_TYPE: GPU をサポートするマシンタイプ。N1 マシンタイプを指定する場合は、guestAccelerators フィールドを配置して、VM にアタッチする GPU の数とタイプを指定します。

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

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

コンソール

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

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

  2. [インスタンス グループを作成] をクリックします。

  3. 次のフィールドを入力します。

    1. 名前: グループの名前を入力します。
    2. インスタンス テンプレート: 前のセクションで構成したインスタンス テンプレートを選択します。
    3. [ロケーション] セクションで次の操作を行います。
      1. [シングルゾーン] を選択します。
      2. [リージョン] リストと [ゾーン] リストで、グループを作成するロケーションを選択します。

    次の手順で自動スケーリング構成を削除して修復を無効にすると、[インスタンス数] フィールドが編集可能になります。

  4. 自動スケーリングの構成を削除します。

    1. [自動スケーリング] セクションで、[自動スケーリング モード] リストをクリックし、[自動スケーリングの構成を削除] をクリックします。
    2. [自動スケーリング構成を削除しますか?] ダイアログで、[削除] をクリックします。
  5. MIG で修復をオフにします。

    [VM インスタンスのライフサイクル] セクションで、[障害発生時のデフォルトのアクション] フィールドを [アクションなし] に設定します。

  6. サイズ変更リクエストを作成するため GPU VM の数と実行期間を指定します。

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

      [インスタンス グループの作成] ページの [インスタンス数] フィールド。

    2. [Use resize request to create VMs all at once] チェックボックスをオンにします。実行期間を入力するフィールドが表示されます。

    3. [リクエストされた実行時間] フィールドと [単位] リストを使用して、GPU VM の実行期間を指定します。期間は 1 時間から 7 日の範囲で指定してください。

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

gcloud

  1. instance-groups managed create コマンドを使用して、ゾーン MIG を作成します。

    gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
       --template=INSTANCE_TEMPLATE_NAME \
       --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 \
       --requested-run-duration=RUN_DURATION\
       --zone=ZONE
    

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

  • INSTANCE_GROUP_NAME: MIG の名前。
  • INSTANCE_TEMPLATE_NAME: GPU VM のインスタンス テンプレートの名前。
  • ZONE: Compute Engine で使用できるゾーンのいずれか。
  • RESIZE_REQUEST_NAME: サイズ変更リクエストの名前。
  • COUNT: グループに一度にすべて追加する VM の数。
  • RUN_DURATION: リクエストされた VM を実行する期間。値は、日数、時間、分、秒として指定し、その後にそれぞれ dhms を配置する必要があります。たとえば、30 分の場合は 30m を指定し、1 日と 2 時間 3 分 4 秒の場合は 1d2h3m4s を指定します。値は 10 分~7 日の範囲で指定してください。

REST

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

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers
    
    {
     "versions": [
       {
         "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME"
       }
     ],
     "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,
     "requestedRunDuration": {
       "seconds": "RUN_DURATION"
     }
    }
    

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

  • PROJECT_ID: MIG を作成するプロジェクトの ID。
  • INSTANCE_GROUP_NAME: MIG の名前。
  • INSTANCE_TEMPLATE_NAME: GPU VM のインスタンス テンプレートの名前。
  • ZONE: Compute Engine で使用できるゾーンのいずれか。
  • RESIZE_REQUEST_NAME: サイズ変更リクエストの名前。
  • COUNT: グループに一度にすべて追加する VM の数。
  • RUN_DURATION: リクエストされた VM が MIG によって自動的に削除されるまでの実行期間(秒単位)。値は 600(600 秒、10 分)から 604800(604,800 秒、7 日間)の範囲で指定する必要があります。

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

次のステップ