GPU VM を一括作成する

一括作成プロセスを使用して、画像処理装置(GPU)がアタッチされている仮想マシン(VM)のグループを作成できます。一括作成プロセスでは、リクエストが不可能な場合に失敗する検証を事前で行います。また、リージョン フラグを使用する場合、一括作成 API は、リクエストに対応できる容量のあるゾーンを自動的に選択します。

一括作成の詳細については、VM の一括作成についてをご覧ください。GPU が割り当てられた VM の作成の詳細については、GPU が割り当てられたインスタンスの作成の概要をご覧ください。

始める前に

  • GPU が割り当てられたインスタンスの作成に関する制限事項とその他の前提条件(OS イメージの選択や GPU の割り当ての確認など)を確認するには、GPU が割り当てられたインスタンスの作成の概要をご覧ください。
  • 一括作成の制限事項については、VM の一括作成についてをご覧ください。
  • まだ設定していない場合は、認証を設定します。認証とは、 Trusted Cloud by S3NS サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のいずれかのオプションを選択して Compute Engine に対する認証を行います。

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

    gcloud

      1. After installing the Google Cloud CLI, sign in to the gcloud CLI with your federated identity and then initialize it by running the following command:

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

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

          After installing the Google Cloud CLI, sign in to the gcloud CLI with your federated identity and then initialize it by running the following command:

          gcloud init

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

必要なロール

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

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

必要な権限

VM を作成するには、次の権限が必要です。

  • プロジェクトに対する compute.instances.create
  • カスタム イメージを使用して VM を作成する: イメージに対する compute.images.useReadOnly
  • スナップショットを使用して VM を作成する: スナップショットに対する compute.snapshots.useReadOnly
  • インスタンス テンプレートを使用して VM を作成する: インスタンス テンプレートに対する compute.instanceTemplates.useReadOnly
  • VM にレガシー ネットワークを割り当てる: プロジェクトに対する compute.networks.use
  • VM の静的 IP アドレスを指定する: プロジェクトに対する compute.addresses.use
  • レガシー ネットワークを使用する際に VM に外部 IP アドレスを割り当てる: プロジェクトに対する compute.networks.useExternalIp
  • VM のサブネットを指定する: プロジェクトまたは選択したサブネットに対する compute.subnetworks.use
  • VPC ネットワークの使用時に VM に外部 IP アドレスを割り当てる: プロジェクトまたは選択したサブネットに対する compute.subnetworks.useExternalIp
  • VM の VM インスタンス メタデータを設定する: プロジェクトに対する compute.instances.setMetadata
  • VM にタグを設定する: VM に対する compute.instances.setTags
  • VM にラベルを設定する: VM に対する compute.instances.setLabels
  • VM が使用するサービス アカウントを設定する: VM に対する compute.instances.setServiceAccount
  • VM 用の新しいディスクを作成する: プロジェクトに対する compute.disks.create
  • 既存のディスクを読み取り専用モードまたは読み取り / 書き込みモードでアタッチする: ディスクに対する compute.disks.use
  • 既存のディスクを読み取り専用モードでアタッチする: ディスクに対する compute.disks.useReadOnly

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

概要

一括作成メソッドを使用して GPU が接続された VM を作成する場合は、リージョン(us-central1 など)または特定のゾーン(us-central1-a など)に VM を作成できます。

リージョンを指定すると、Compute Engine は GPU をサポートするリージョン内の任意のゾーンに VM を配置します。

マシンタイプ

アクセラレータ最適化マシン ファミリーには複数のマシンタイプがあります。

各アクセラレータ最適化マシンタイプには、特定モデルの NVIDIA GPU がアタッチされています。

  • A4X マシンタイプには、NVIDIA GB200 スーパーチップがアタッチされています。
  • A4 マシンタイプには、NVIDIA B200 GPU がアタッチされています。
  • A3 マシンタイプには、NVIDIA H100 80 GB または NVIDIA H200 141 GB GPU がアタッチされています。次のオプションが用意されています。
    • A3 Ultra: H200 141 GB GPU がアタッチされるマシンタイプです。
    • A3 Mega: H100 80 GB GPU がアタッチされるマシンタイプです。
    • A3 High: H100 80 GB GPU がアタッチされるマシンタイプです。
    • A3 Edge: H100 80 GB GPU がアタッチされるマシンタイプです。
  • A2 マシンタイプには、NVIDIA A100 GPU がアタッチされています。次のオプションが用意されています。
    • A2 Ultra: A100 80 GB GPU がアタッチされるマシンタイプです。
    • A2 Standard: A100 40 GB GPU がアタッチされるマシンタイプです。
  • G2 マシンタイプには、NVIDIA L4 GPU がアタッチされています。

A3、A2、G2 VM のグループを作成する

このセクションでは、Google Cloud CLI または REST を使用して、A3 High、A3 Mega、A3 Edge、A2、G2 マシンシリーズのインスタンスを一括作成する方法について説明します。

gcloud

VM のグループを作成するには、gcloud compute instances bulk create コマンドを使用します。パラメータとこのコマンドの使用方法については、VM の一括作成をご覧ください。

例に示したコマンドには、以下のオプションのフラグがあります。

  • --provisioning-model=SPOT は、VM を Spot VM として構成する場合に指定するフラグです。ワークロードがフォールト トレラントで、VM のプリエンプションが発生しても耐えられる場合は、Spot VM を使用すると VM と、アタッチされた GPU のコストを縮小できます。詳細については、Spot VM 上の GPU をご覧ください。Spot VM の場合は、自動再起動とホスト メンテナンスのオプション フラグは無効化されます。

  • 仮想ワークステーションを指定する --accelerator フラグ。NVIDIA RTX 仮想ワークステーション(vWS)は、G2 VM でのみサポートされています。

この例では、次の仕様を使用して、GPU が接続された 2 つの VM を作成します。

gcloud compute instances bulk create \
    --name-pattern="my-test-vm-#" \
    --region=REGION \
    --count=2 \
    --machine-type=MACHINE_TYPE \
    --boot-disk-size=200 \
    --image=IMAGE \
    --image-project=IMAGE_PROJECT \
    --on-host-maintenance=TERMINATE \
    [--provisioning-model=SPOT] \
    [--accelerator=type=nvidia-l4-vws,count=VWS_ACCELERATOR_COUNT]

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

  • REGION: VM のリージョン。このリージョンは、選択した GPU モデルをサポートしている必要があります。
  • MACHINE_TYPE: 選択したマシンタイプ。次のいずれかを選択します。

    • A3 マシンタイプ
    • A2 マシンタイプ
    • G2 マシンタイプ。G2 マシンタイプはカスタムメモリもサポートしています。メモリは 1,024 MB の倍数で、サポートされているメモリ範囲内にある必要があります。たとえば、4 個の vCPU と 19 GB のメモリを備えた VM を作成するには、--machine-type=g2-custom-4-19456 を指定します。
  • IMAGE: GPU をサポートするオペレーティング システム イメージ。

    イメージ ファミリーの最新イメージを使用する場合は、--image フラグを --image-family フラグに置き換え、その値を GPU をサポートするイメージ ファミリーに設定します。例: --image-family=rocky-linux-8-optimized-gcp

    カスタム イメージまたは Deep Learning VM Image を指定することもできます。

  • IMAGE_PROJECT: OS イメージが属する Compute Engine イメージ プロジェクト。カスタム イメージまたは Deep Learning VM Image を使用する場合は、それらのイメージが属するプロジェクトを指定します。

  • VWS_ACCELERATOR_COUNT: 必要な仮想 GPU の数。

成功すると、出力は次のようになります。

NAME          ZONE
my-test-vm-1  us-central1-b
my-test-vm-2  us-central1-b
Bulk create request finished with status message: [VM instances created: 2, failed: 0.]

REST

必須パラメータによる instances.bulkInsert メソッドを使用して、1 つのゾーンに複数の VM を作成します。パラメータとこのコマンドの使用方法については、VM の一括作成をご覧ください。

この例では、次の仕様を使用して、GPU が接続された 2 つの VM を作成します。

  • VM 名: my-test-vm-1my-test-vm-2
  • 各 VM には 2 つの GPU が接続され、適切なアクセラレータ最適化マシンタイプを使用して指定されます。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert
    {
    "namePattern":"my-test-vm-#",
    "count":"2",
    "instanceProperties": {
      "machineType":MACHINE_TYPE,
      "disks":[
        {
          "type":"PERSISTENT",
          "initializeParams":{
            "diskSizeGb":"200",
            "sourceImage":SOURCE_IMAGE_URI
          },
          "boot":true
        }
      ],
      "name": "default",
      "networkInterfaces":
      [
        {
          "network": "projects/PROJECT_ID/global/networks/default"
        }
      ],
      "scheduling":{
        "onHostMaintenance":"TERMINATE",
        ["automaticRestart":true]
      }
    }
    }
    

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

  • PROJECT_ID: プロジェクト ID
  • REGION: VM のリージョン。このリージョンは、選択した GPU モデルをサポートしている必要があります。
  • MACHINE_TYPE: 選択したマシンタイプ。次のいずれかを選択します。

    • A2 マシンタイプ
    • G2 マシンタイプ。G2 マシンタイプはカスタムメモリもサポートしています。メモリは 1,024 MB の倍数で、サポートされているメモリ範囲内にある必要があります。たとえば、4 個の vCPU と 19 GB のメモリを備えた VM を作成するには、--machine-type=g2-custom-4-19456 を指定します。
  • SOURCE_IMAGE_URI: 使用する特定のイメージまたはイメージ ファミリーの URI。

    次に例を示します。

    • 特定のイメージ: "sourceImage": "projects/rocky-linux-cloud/global/images/rocky-linux-8-optimized-gcp-v20220719"
    • イメージ ファミリー: "sourceImage": "projects/rocky-linux-cloud/global/images/family/rocky-linux-8-optimized-gcp"

    イメージ ファミリーを指定すると、Compute Engine はそのファミリー内のサポート対象の最新の OS イメージから VM を作成します。イメージ ファミリーを使用するタイミングについて詳しくは、イメージ ファミリーのベスト プラクティスをご覧ください。

追加の設定:

  • ワークロードがフォールト トレラントで、VM のプリエンプションが発生しても耐えられる場合は、Spot VM を使用すると VM と、アタッチされた GPU のコストを縮小できます。詳細については、Spot VM 上の GPU をご覧ください。Spot VM を使用するには、リクエストに "provisioningModel": "SPOT オプションを追加します。Spot VM の場合は、自動再起動とホスト メンテナンス オプションのフラグは無効化されます。

    "scheduling":
      {
        "provisioningModel": "SPOT"
      }
    
  • G2 VM の場合、NVIDIA RTX 仮想ワークステーション(vWS)がサポートされています。仮想ワークステーションを指定するには、リクエストに guestAccelerators オプションを追加します。VWS_ACCELERATOR_COUNT は、必要な仮想 GPU の数に置き換えます。

    "guestAccelerators":
     [
       {
         "acceleratorCount": VWS_ACCELERATOR_COUNT,
         "acceleratorType": "projects/PROJECT_ID/zones/ZONEacceleratorTypes/nvidia-l4-vws"
       }
     ]
    

N1 汎用 VM のグループを作成する

GPU が接続された VM のグループを作成するには、Google Cloud CLI または ERST を使用します。

このセクションでは、次の GPU タイプを使用して VM を作成する方法について説明します。

NVIDIA GPU:

  • NVIDIA T4: nvidia-tesla-t4
  • NVIDIA P4: nvidia-tesla-p4
  • NVIDIA P100: nvidia-tesla-p100
  • NVIDIA V100: nvidia-tesla-v100

NVIDIA RTX 仮想ワークステーション(vWS)(旧称 NVIDIA GRID):

  • NVIDIA T4 仮想ワークステーション: nvidia-tesla-t4-vws
  • NVIDIA P4 仮想ワークステーション: nvidia-tesla-p4-vws
  • NVIDIA P100 仮想ワークステーション: nvidia-tesla-p100-vws

    これらの仮想ワークステーションの場合、NVIDIA RTX 仮想ワークステーション(vWS)ライセンスが VM に自動的に追加されます。

gcloud

VM のグループを作成するには、gcloud compute instances bulk create コマンドを使用します。パラメータとこのコマンドの使用方法については、VM の一括作成をご覧ください。

次の例では、以下の仕様を使用して、GPU が接続された 2 つの VM を作成します。

  • VM 名: my-test-vm-1my-test-vm-2
  • GPU をサポートする us-central1 の任意のゾーンに作成された VM
  • 各 VM に 2 つの T4 GPU が接続されています。この GPU は、アクセラレータ タイプとアクセラレータ数のフラグを使用して指定します。
  • 各 VM に GPU ドライバがインストールされている
  • 各 VM が Deep Learning VM イメージ pytorch-latest-gpu-v20211028-debian-10 を使用する
gcloud compute instances bulk create \
    --name-pattern="my-test-vm-#" \
    --count=2 \
    --region=us-central1 \
    --machine-type=n1-standard-2 \
    --accelerator type=nvidia-tesla-t4,count=2 \
    --boot-disk-size=200 \
    --metadata="install-nvidia-driver=True" \
    --scopes="https://www.googleapis.com/auth/cloud-platform" \
    --image=pytorch-latest-gpu-v20211028-debian-10 \
    --image-project=deeplearning-platform-release \
    --on-host-maintenance=TERMINATE --restart-on-failure

成功すると、出力は次のようになります。

NAME          ZONE
my-test-vm-1  us-central1-b
my-test-vm-2  us-central1-b
Bulk create request finished with status message: [VM instances created: 2, failed: 0.]

REST

必須パラメータによる instances.bulkInsert メソッドを使用して、1 つのゾーンに複数の VM を作成します。パラメータとこのコマンドの使用方法については、VM の一括作成をご覧ください。

次の例では、以下の仕様を使用して、GPU が接続された 2 つの VM を作成します。

  • VM 名: my-test-vm-1my-test-vm-2
  • GPU をサポートする us-central1 の任意のゾーンに作成された VM
  • 各 VM に 2 つの T4 GPU が接続されています。この GPU は、アクセラレータ タイプとアクセラレータ数のフラグを使用して指定します。
  • 各 VM に GPU ドライバがインストールされている
  • 各 VM が Deep Learning VM イメージ pytorch-latest-gpu-v20211028-debian-10 を使用する

PROJECT_ID は、実際のプロジェクト ID に置き換えます。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-central1/instances/bulkInsert

{
    "namePattern":"my-test-vm-#",
    "count":"2",
    "instanceProperties": {
      "machineType":"n1-standard-2",
      "disks":[
        {
          "type":"PERSISTENT",
          "initializeParams":{
            "diskSizeGb":"200",
            "sourceImage":"projects/deeplearning-platform-release/global/images/pytorch-latest-gpu-v20211028-debian-10"
          },
          "boot":true
        }
      ],
      "name": "default",
      "networkInterfaces":
      [
        {
          "network": "projects/PROJECT_ID/global/networks/default"
        }
      ],
      "guestAccelerators":
      [
        {
          "acceleratorCount": 2,
          "acceleratorType": "nvidia-tesla-t4"
        }
      ],
      "scheduling":{
        "onHostMaintenance":"TERMINATE",
        "automaticRestart":true
      },
      "metadata":{
        "items":[
          {
            "key":"install-nvidia-driver",
            "value":"True"
          }
        ]
      }
  }
 }

次のステップ