GPU VM のグループを一括作成する


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

始める前に

  • OS イメージの選択や GPU 割り当ての確認など、その他の前提条件を確認するには、概要のドキュメントをご覧ください。
  • まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。

    このページのサンプルをどのように使うかに応じて、タブを選択してください。

    gcloud

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

      gcloud init
    2. デフォルトのリージョンとゾーンを設定します

    REST

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

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

      gcloud init

必要なロール

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 を配置します。

アクセラレータ最適化 VM のグループを作成する

アクセラレータ最適化マシン ファミリーは、A3 標準マシンタイプ、A2 標準マシンタイプと Ultra マシンタイプ、G2 標準マシンタイプで使用できます。

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

  • A3 アクセラレータ最適化マシンタイプには、NVIDIA H100 80 GB GPU が接続されています。
  • A2 アクセラレータ最適化マシンタイプには、NVIDIA A100 GPU がアタッチされています。これらは、A100 40 GB と A100 80 GB の両方のオプションで利用できます。
  • G2 アクセラレータ最適化マシンタイプには、NVIDIA L4 GPU が接続されています。

アクセラレータ最適化 VM のグループを作成するには、Google Cloud CLI または REST を使用します。

gcloud

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

コマンドの例では、以下のオプションのフラグが示されています。

  • VM をプリエンプティブル VM インスタンスとして構成する --preemptible フラグ。これにより、VM とそれに接続される GPU のコストが削減されます。詳細については、プリエンプティブル インスタンスの GPU をご覧ください。

  • 仮想ワークステーションを指定する --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 --restart-on-failure \
    [--preemptible] \
    [--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 を使用すると、VM とそれに接続される GPU のコストを削減できます。詳細については、プリエンプティブル VM インスタンスの GPU をご覧ください。VM をプリエンプティブルとして設定するには、リクエストに "preemptible": true オプションを追加します。

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

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

制限事項

A3 標準

  • A3 標準マシンタイプを使用する VM は、継続利用割引とフレキシブル確約利用割引を受けることができません。
  • A3 標準マシンタイプは、特定のリージョンとゾーンでのみ使用できます。
  • A3 標準マシンタイプを使用する VM では、リージョン Persistent Disk を使用できません。
  • A3 標準マシンタイプは、Sapphire Rapids プラットフォームでのみ使用できます。
  • VM が A3 標準マシンタイプを使用している場合、マシンタイプは変更できません。別のマシンタイプを使用する必要がある場合は、新しい VM を作成する必要があります。
  • 他のマシンタイプを A3 標準マシンタイプに変更することはできません。A3 標準マシンタイプを使用する VM を作成する必要がある場合は、新しい VM を作成する必要があります。
  • A3 標準マシンタイプは、単一テナンシーをサポートしません。
  • Windows オペレーティング システムでは A3 標準マシンタイプを実行できません。

A2 標準

  • A2 標準マシンタイプを使用する VM は、継続利用割引とフレキシブル確約利用割引を受けることができません。
  • A2 標準マシンタイプは、特定のリージョンとゾーンでのみ使用できます。
  • A2 標準マシンタイプを使用する VM では、リージョン Persistent Disk を使用できません。
  • A2 標準マシンタイプは、Cascade Lake プラットフォームでのみ使用できます。
  • VM が A2 標準マシンタイプを使用する場合、ある A2 標準マシンタイプから別の A2 標準マシンタイプにのみ切り替えることができます。他のマシンタイプには変更できません。詳細については、アクセラレータ最適化 VM を変更するをご覧ください。
  • a2-megagpu-16g A2 標準マシンタイプは Windows オペレーティング システムでは使用できません。Windows オペレーティング システムを使用する場合は、別の A2 標準マシンタイプを選択します。
  • A2 標準マシンタイプを使用する Windows VM では、アタッチされたローカル SSD をクイック フォーマットできません。これらのローカル SSD をフォーマットするには、diskpart ユーティリティを使用し、format fs=ntfs label=tmpfs を指定して、完全フォーマットする必要があります。
  • A2 標準マシンタイプは、単一テナンシーをサポートしません。

A2 Ultra

  • A2 Ultra マシンタイプを使用する VM は、継続利用割引とフレキシブル確約利用割引を受けることができません。
  • A2 Ultra マシンタイプは、特定のリージョンとゾーンでのみ使用できます。
  • A2 Ultra マシンタイプを使用する VM では、リージョン Persistent Disk を使用できません。
  • A2 Ultra マシンタイプは、Cascade Lake プラットフォームでのみ使用できます。
  • VM が A2 Ultra マシンタイプを使用する場合、マシンタイプは変更できません。別の A2 Ultra マシンタイプやその他のマシンタイプを使用する必要がある場合は、新しい VM を作成する必要があります。
  • 他のマシンタイプを A2 Ultra マシンタイプに変更することはできません。A2 Ultra マシンタイプを使用する VM を作成する必要がある場合は、新しい VM を作成する必要があります。
  • A2 Ultra マシンタイプを使用する Windows VM では、アタッチされたローカル SSD をクイック フォーマットできません。これらのローカル SSD をフォーマットするには、diskpart ユーティリティを使用し、format fs=ntfs label=tmpfs を指定して、完全フォーマットする必要があります。

G2 標準

  • G2 標準マシンタイプを使用する VM は、継続利用割引とフレキシブル確約利用割引を受けることができません。
  • G2 標準マシンタイプは、特定のリージョンとゾーンでのみ使用できます。
  • G2 標準マシンタイプを使用する VM では、リージョン Persistent Disk を使用できません。
  • G2 標準マシンタイプは、Cascade Lake プラットフォームでのみ使用できます。
  • 標準 Persistent Disk(pd-standard)は、G2 標準マシンタイプを使用する VM ではサポートされません。サポートされているディスクタイプについては、G2 でサポートされているディスクタイプをご覧ください。
  • G2 標準マシンタイプでマルチインスタンス GPU を作成することはできません。
  • G2 VM のマシンタイプを変更する必要がある場合は、アクセラレータ最適化 VM を変更するをご覧ください。
  • G2 標準マシンタイプを使用する VM のブートディスクとして Deep Learning VM Image は使用できません。
  • Container-Optimized OS の現在のデフォルト ドライバは、G2 マシンタイプで実行される L4 GPU をサポートしていません。Container-Optimized OS は、特定のドライバセットのみをサポートしています。G2 マシンタイプで Container-Optimized OS を使用する場合は、次の点に注意してください。
    • 推奨される最小の NVIDIA ドライバ バージョン 525.60.13 以降をサポートする Container-Optimized OS のバージョンを使用します。詳細については、Container-Optimized OS のリリースノートをご覧ください。
    • ドライバをインストールするときに、L4 GPU で動作する最新のバージョンを指定します。例: sudo cos-extensions install gpu -- -version=525.60.13
  • 次のシナリオでは、Google Cloud CLI または REST を使用して G2 VM を作成する必要があります。
    • カスタムメモリ値を指定する必要があります。
    • 表示可能な CPU コアの数をカスタマイズする必要があります。

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/region/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"
          }
        ]
      }
  }
 }

次のステップ