GPU が接続された N1 VM を作成する


このドキュメントでは、GPU が接続され、N1 マシン ファミリーを使用する VM の作成方法について説明します。N1 shared-core を除くほとんどの N1 マシンタイプを使用できます。

始める前に

  • OS イメージの選択や GPU 割り当ての確認など、その他の前提条件を確認するには、概要のドキュメントをご覧ください。
  • まだ設定していない場合は、認証を設定します。認証とは、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 を使用して認証するをご覧ください。

必要なロール

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

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

概要

N1 マシン ファミリーを使用する VM に接続できる GPU モデルは次のとおりです。

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 に自動的に追加されます。

GPU が接続された VM を作成する

GPU が接続された N1 VM を作成するには、Google Cloud コンソール、Google Cloud CLI、または REST を使用します。

コンソール

  1. Google Cloud コンソールで、[インスタンスの作成] ページに移動します。

    [インスタンスの作成] に移動

  2. VM の名前を指定します。リソースの命名規則をご覧ください。

  3. GPU が利用可能なリージョンとゾーンを選択します。利用可能な GPU ゾーンのリストをご覧ください。

  4. [マシンの構成] セクションで、[GPU] マシン ファミリーを選択し、次の操作を行います。

    1. [GPU のタイプ] リストで、N1 マシンでサポートされている GPU モデルのいずれかを選択します。
    2. [GPU の数] リストで、GPU の数を選択します。
    3. GPU モデルがグラフィック ワークロード用の NVIDIA RTX 仮想ワークステーション(vWS)をサポートし、この VM でグラフィックを多用するワークロードを実行する予定がある場合は、[仮想ワークステーション(NVIDIA GRID)を有効にする] を選択します。

    4. [マシンタイプ] リストで、プリセットの N1 マシンタイプのいずれかを選択します。または、カスタム マシンタイプを指定することもできます。

  5. [ブートディスク] セクションで [変更] をクリックします。[ブートディスクの構成] ページが表示されます。

  6. [ブートディスクの構成] ページで、次の操作を行います。

    1. [公開イメージ] タブで、サポートされている Compute Engine イメージまたは Deep Learning VM Image を選択します。
    2. ブートディスク サイズは 40 GB 以上で指定します。
    3. ブートディスクのオプションを確認するには、[選択] をクリックします。
  7. 省略可: プロビジョニング モデルを構成します。たとえば、ワークロードがフォールト トレラントで、VM のプリエンプションが発生する可能性がある場合は、Spot VM を使用して VM とアタッチされた GPU のコストを削減することを検討してください。詳細については、Spot VM 上の GPU をご覧ください。その方法は次のとおりです。

    1. [可用性ポリシー] セクションで、[VM プロビジョニング モデル] リストから [スポット] を選択します。これを選択すると、VM の自動再起動とホスト メンテナンス オプションが無効になります。
    2. 省略可: [VM の終了時] リストで、Compute Engine が VM をプリエンプトしたときの動作を選択します。
      • プリエンプション中に VM を停止するには、[停止] を選択します(デフォルト)。
      • プリエンプション中に VM を削除するには、[削除] をクリックします。
  8. VM を作成して起動するには、[作成] をクリックします。

gcloud

VM を作成して起動するには、次のフラグを指定して、gcloud compute instances create コマンドを使用します。

ワークロードがフォールト トレラントで、VM のプリエンプションが発生する可能性がある場合は、Spot VM を使用して VM とアタッチされた GPU のコストを削減することを検討してください。詳細については、Spot VM 上の GPU をご覧ください。--provisioning-model=SPOT は、VM を Spot VM として構成するオプション フラグです。Spot VM の場合、自動再起動とホスト メンテナンスのオプション フラグは無効になります。

gcloud compute instances create VM_NAME \
    --machine-type MACHINE_TYPE \
    --zone ZONE \
    --boot-disk-size DISK_SIZE \
    --accelerator type=ACCELERATOR_TYPE,count=ACCELERATOR_COUNT \
    [--image IMAGE | --image-family IMAGE_FAMILY] \
    --image-project IMAGE_PROJECT \
    --maintenance-policy TERMINATE \
    [--provisioning-model=SPOT]

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

  • VM_NAME: 新しい VM の名前
  • MACHINE_TYPE: VM に選択したマシンタイプ
  • ZONE: VM のゾーン。このゾーンは GPU タイプをサポートしている必要があります。
  • DISK_SIZE: 起動ディスクのサイズ(GB 単位)。ブートディスク サイズは 40 GB 以上で指定します。
  • GPU をサポートする IMAGE または IMAGE_FAMILY。次のいずれかを指定します。

    • IMAGE: 公開イメージの必須バージョン。例: --image debian-10-buster-v20200309
    • IMAGE_FAMILY: イメージ ファミリー。これにより、非推奨ではない最新の OS イメージから VM が作成されます。たとえば、--image-family debian-10 を指定すると、Compute Engine は Debian 10 イメージ ファミリーの OS イメージの最新バージョンから VM を作成します。

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

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

  • ACCELERATOR_COUNT: VM に追加する GPU の数。VM のマシンタイプに基づく GPU 制限の一覧については、Compute Engine の GPU をご覧ください。

  • ACCELERATOR_TYPE: 使用する 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 に自動的に追加されます。

たとえば、us-east1-d ゾーンで 1 つの NVIDIA T4 GPU と 2 つの vCPU を使用する Ubuntu 22.04 VM を起動するには、次の gcloud コマンドを使用できます。

gcloud compute instances create gpu-instance-1 \
    --machine-type n1-standard-2 \
    --zone us-east1-d \
    --boot-disk-size 40GB \
    --accelerator type=nvidia-tesla-t4,count=1 \
    --image-family ubuntu-2204-lts \
    --image-project ubuntu-os-cloud \
    --maintenance-policy TERMINATE

REST

VM に追加する GPU タイプを特定します。GET リクエストを発行し、特定のゾーンのプロジェクトで使用可能な GPU タイプをリストします。

ワークロードがフォールト トレラントで、VM のプリエンプションが発生する可能性がある場合は、Spot VM を使用して VM とアタッチされた GPU のコストを削減することを検討してください。詳細については、Spot VM 上の GPU をご覧ください。"provisioningModel": "SPOT" は、VM を Spot VM として構成するオプションのパラメータです。Spot VM の場合、自動再起動とホスト メンテナンスのオプション フラグは無効になります。

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/acceleratorTypes

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

  • PROJECT_ID: プロジェクト ID。
  • ZONE: 使用可能な GPU タイプをリストするゾーン

instances.insert メソッドに POST リクエストを送信します。使用する GPU タイプを指定する acceleratorType パラメータを組み込み、追加する GPU の数を指定する acceleratorCount パラメータを組み込みます。また、onHostMaintenance パラメータを TERMINATE に設定します。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
  "machineType": "projects/PROJECT_ID/zones/ZONE/machineTypes/MACHINE_TYPE",
  "disks":
  [
    {
      "type": "PERSISTENT",
      "initializeParams":
      {
        "diskSizeGb": "DISK_SIZE",
        "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
      },
      "boot": true
    }
  ],
  "name": "VM_NAME",
  "networkInterfaces":
  [
    {
      "network": "projects/PROJECT_ID/global/networks/NETWORK"
    }
  ],
  "guestAccelerators":
  [
    {
      "acceleratorCount": ACCELERATOR_COUNT,
      "acceleratorType": "projects/PROJECT_ID/zones/ZONE/acceleratorTypes/ACCELERATOR_TYPE"
    }
  ],
  "scheduling":
  {
    ["automaticRestart": true],
    "onHostMaintenance": "TERMINATE",
    ["provisioningModel": "SPOT"]
  },
}

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

  • VM_NAME: VM の名前
  • PROJECT_ID: プロジェクト ID。
  • ZONE: VM のゾーン。このゾーンは GPU タイプをサポートしている必要があります。
  • MACHINE_TYPE: VM に選択したマシンタイプです。希望する GPU 数に基づいた使用可能なマシンタイプについては、Compute Engine の GPU をご覧ください。
  • IMAGE または IMAGE_FAMILY: 次のいずれかを指定します。

    • IMAGE: 公開イメージの必須バージョン。たとえば、"sourceImage": "projects/debian-cloud/global/images/debian-10-buster-v20200309"
    • IMAGE_FAMILY: イメージ ファミリー。これにより、非推奨ではない最新の OS イメージから VM が作成されます。たとえば、"sourceImage": "projects/debian-cloud/global/images/family/debian-10" を指定すると、Compute Engine は Debian 10 イメージ ファミリーの OS イメージの最新バージョンから VM を作成します。

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

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

  • DISK_SIZE: 起動ディスクのサイズ(GB 単位)。ブートディスク サイズは 40 GB 以上で指定します。

  • NETWORK: VM に使用する VPC ネットワーク。default を指定して、デフォルト ネットワークを使用できます。

  • ACCELERATOR_COUNT: VM に追加する GPU の数。VM のマシンタイプに基づく GPU 制限の一覧については、Compute Engine の GPU をご覧ください。

  • ACCELERATOR_TYPE: 使用する 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 に自動的に追加されます。

ドライバをインストールする

ドライバをインストールするには、次のいずれかのオプションを選択します。

次のステップ