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


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

始める前に

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

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

    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 を使用して認証するをご覧ください。

必要なロール

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 のグループを作成する

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

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

  • A3 アクセラレータ最適化マシンタイプには、NVIDIA H100 80 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 がアタッチされています。

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

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

制限事項

A3 VM

A3 Edge、A3 High、A3 Mega マシンタイプを使用する VM には、次の制限が適用されます。

  • A3 マシンタイプを使用する VM は、継続利用割引とフレキシブル確約利用割引の対象外となります。
  • A3 マシンタイプは、特定のリージョンとゾーンでのみ使用できます。
  • A3 マシンタイプを使用する VM では、リージョン Persistent Disk を使用できません。
  • A3 マシンシリーズは、Sapphire Rapids プラットフォームでのみ使用できます。
  • VM が A3 マシンタイプを使用している場合、マシンタイプを変更することはできません。マシンタイプを変更するには、新しい VM を作成する必要があります。
  • VM のマシンタイプを A3 マシンタイプに変更することはできません。A3 マシンタイプを使用する VM が必要な場合は、新しい VM を作成する必要があります。
  • A3 マシンタイプは、単一テナンシーをサポートしません。
  • A3 マシンタイプでは Windows オペレーティング システムを実行できません。
  • A3 マシンタイプの予約は、特定の予約からのみ可能です。
  • a3-highgpu-1ga3-highgpu-2ga3-highgpu-4g マシンタイプには、次の制限が適用されます。
    • これらのマシンタイプでは、Spot VM を使用するか、Dynamic Workload Scheduler(DWS)を使用する機能(MIG でのサイズ変更リクエストなど)を使用する必要があります。これらのオプションの詳細な手順については、以下をご覧ください。
    • これらのマシンタイプでは Hyperdisk Balanced を使用できません。
    • 予約を作成できません。
    標準プロビジョニングを使用して VM を作成しようとした場合、またはこれらのマシンタイプの予約を作成しようとすると、エラー メッセージが表示されます。

A2 標準 VM

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

A2 Ultra VM

  • 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 VM

  • 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"
          }
        ]
      }
  }
 }

次のステップ