GPU の追加または削除

Google Compute Engine は、仮想マシン インスタンスに追加できるグラフィック プロセッシング ユニット(GPU)を備えています。これらの GPU を使用して、機械学習やデータ処理などの特定のワークロードをインスタンス上で高速化することができます。

GPU の機能と、使用できる GPU ハードウェアのタイプの詳細については、Compute Engine の GPU をご覧ください。

始める前に

GPU を使用するインスタンスの作成

GPU を使用するインスタンスを作成する前に、インスタンスに使用するブートディスク イメージを選択し、適切な GPU ドライバがインストールされていることを確認します。

機械学習に GPU を使用している場合は、インスタンスに Deep Learning VM Image を使用できます。Deep Learning VM Image には GPU ドライバがあらかじめインストールされており、TensorFlow や PyTorch などのパッケージも含まれています。一般的な GPU ワークロードに Deep Learning VM Image を使用することもできます。使用可能なイメージとイメージにインストールされているパッケージの詳細については、Deep Learning VM のドキュメントをご覧ください。

公開イメージカスタム イメージを使用することもできますが、一部のイメージでは、このガイドで説明されていない独自のドライバやインストール プロセスが必要な場合があります。イメージに適したドライバを確認する必要があります。

ドライバをインストールする手順については、GPU ドライバのインストールをご覧ください。

1 つ以上の GPU を使用するインスタンスを作成するときには、インスタンスがホスト メンテナンス時に終了するように設定する必要があります。GPU を使用するインスタンスは、特定のハードウェア デバイスに割り当てられているため、ライブ マイグレーションができません。詳細については、GPU の制限をご覧ください。

Google Cloud Platform Consolegcloud コマンドライン ツールAPI を使用して、1 つ以上の GPU を使用するインスタンスを作成します。

Console

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

    [VM インスタンス] ページに移動

  2. [インスタンスを作成] をクリックします。
  3. GPU を使用可能なゾーンを選択します。使用可能なゾーンと GPU のリストをご覧ください。
  4. [マシンの構成] セクションで、このインスタンスに使用するマシンタイプを選択します。必要であれば、カスタムマシン タイプの設定を指定することもできます。
  5. [マシンの構成] セクションで [CPU プラットフォームと GPU] をクリックして、マシンタイプの詳細オプションと使用可能な GPU を確認します。
  6. [GPU] をクリックすると、使用可能な GPU のリストが表示されます。
  7. GPU のタイプと必要な GPU の数を指定します。
  8. 必要な GPU 設定に合わせてマシンタイプを調整します。値を変更しないと、マシンタイプのカスタマイズ画面を開く前に指定した事前定義のマシンタイプが使用されます。
  9. ブートディスクを構成するには、[ブートディスク] セクションで [変更] をクリックします。
  10. [OS イメージ] タブで、イメージを選択します。
  11. [選択] をクリックして、ブートディスクのオプションを確認します。
  12. インスタンスの起動中に GPU ドライバをインストールする起動スクリプトを追加することもできます。[自動化] の [起動スクリプト] に起動スクリプトのコンテンツを追加します。スクリプトの例については、GPU ドライバのインストールをご覧ください。
  13. 必要なその他のインスタンス設定を構成します。たとえば、[プリエンプティブ] 設定を変更して、インスタンスをプリエンプティブ インスタンスとして構成できます。これにより、インスタンスと接続される GPU のコストが削減されます。詳細については、プリエンティブ インスタンスの GPU をご覧ください。
  14. ページの下部にある [作成] をクリックして、インスタンスを作成します。

gcloud

regions describe コマンドを使用することにより、GPU を使用するインスタンスを作成する領域に十分な GPU 割り当てがあることを確認します。

gcloud compute regions describe [REGION]

[REGION] は、GPU の割り当てを確認するリージョンです。

イメージ ファミリーの最新のイメージを使用してインスタンスを起動します。

gcloud compute instances create [INSTANCE_NAME] \
    --machine-type [MACHINE_TYPE] --zone [ZONE] \
    --accelerator type=[ACCELERATOR_TYPE],count=[ACCELERATOR_COUNT] \
    --image-family [IMAGE_FAMILY] --image-project [IMAGE_PROJECT] \
    --maintenance-policy TERMINATE --restart-on-failure \
    --metadata startup-script='[STARTUP_SCRIPT]' \
    [--preemptible]

ここで

  • [INSTANCE_NAME] は、新しいインスタンスの名前です。
  • [MACHINE_TYPE] は、インスタンスに選択したマシンタイプです。希望する GPU 数に応じて使用可能なマシンタイプについては、Compute Engine の GPU をご覧ください。
  • [ZONE] は、このインスタンスのゾーンです。
  • [IMAGE_FAMILY] は、使用可能なイメージ ファミリーのいずれかです。
  • [ACCELERATOR_COUNT] は、インスタンスに追加する GPU の数です。インスタンスのマシンタイプに応じた GPU 制限の一覧については、Compute Engine の GPU をご覧ください。
  • [ACCELERATOR_TYPE] は使用する GPU モデルです。次の値のいずれかを使用できます。

    • NVIDIA® Tesla® T4: nvidia-tesla-t4
    • NVIDIA® GRID® 搭載の NVIDIA® Tesla® T4 仮想ワークステーション: nvidia-tesla-t4-vws
    • nvidia-tesla-p4 - NVIDIA® Tesla® P4
    • nvidia-tesla-p4-vws - NVIDIA® GRID® 搭載の NVIDIA® Tesla® P4 仮想ワークステーション
    • nvidia-tesla-p100 - NVIDIA® Tesla® P100
    • nvidia-tesla-p100-vws - NVIDIA® GRID® 搭載の NVIDIA® Tesla® P100 仮想ワークステーション
    • nvidia-tesla-v100 - NVIDIA® Tesla® V100
    • nvidia-tesla-k80 - NVIDIA® Tesla® K80

    使用可能な GPU モデルのリストについては、Compute Engine の GPU をご覧ください。

  • [IMAGE_PROJECT] は、イメージ ファミリーが属するイメージ プロジェクトです。

  • [STARTUP_SCRIPT] は、インスタンスが起動しているときに GPU ドライバのインストールに使用できる省略可能な起動スクリプトです。この例については、GPU ドライバのインストールをご覧ください。

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

たとえば、次の gcloud コマンドを使って、us-east1-d ゾーンで 1 つの NVIDIA® Tesla® K80 GPU と 2 つの vCPU を使用する Ubuntu 16.04 インスタンスを開始できます。startup-script メタデータは、推奨のドライバ バージョンを使用して CUDA ツールキットをインストールするようにインスタンスに指示します。

gcloud compute instances create gpu-instance-1 \
    --machine-type n1-standard-2 --zone us-east1-d \
    --accelerator type=nvidia-tesla-k80,count=1 \
    --image-family ubuntu-1604-lts --image-project ubuntu-os-cloud \
    --maintenance-policy TERMINATE --restart-on-failure \
    --metadata startup-script='#!/bin/bash
    echo "Checking for CUDA and installing."
    # Check for CUDA and try to install.
    if ! dpkg-query -W cuda-10-0; then
      curl -O http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_10.0.130-1_amd64.deb
      dpkg -i ./cuda-repo-ubuntu1604_10.0.130-1_amd64.deb
      apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
      apt-get update
      apt-get install cuda-10-0 -y
    fi'

この例のコマンドでインスタンスが開始されますが、CUDA とドライバのインストールが終了するまで数分かかります。

API

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

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

ここで

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

API で、POST リクエストを作成して新しいインスタンスを作成します。使用する GPU タイプを指定するには acceleratorType パラメータ、追加する GPU の数を指定するには acceleratorCount パラメータを含めます。さらに、onHostMaintenance パラメータを TERMINATE に設定します。

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances?key={YOUR_API_KEY}
{
  "machineType": "https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/machineTypes/n1-highmem-2",
  "disks":
  [
    {
      "type": "PERSISTENT",
      "initializeParams":
      {
        "diskSizeGb": "[DISK_SIZE]",
        "sourceImage": "https://www.googleapis.com/compute/v1/projects/[IMAGE_PROJECT]/global/images/family/[IMAGE_FAMILY]"
      },
      "boot": true
    }
  ],
  "name": "[INSTANCE_NAME]",
  "networkInterfaces":
  [
    {
      "network": "https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/networks/[NETWORK]"
    }
  ],
  "guestAccelerators":
  [
    {
      "acceleratorCount": [ACCELERATOR_COUNT],
      "acceleratorType": "https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/acceleratorTypes/[ACCELERATOR_TYPE]"
    }
  ],
  "scheduling":
  {
    "onHostMaintenance": "terminate",
    "automaticRestart": true,
    ["preemptible": true]
  },
  "metadata":
  {
    "items":
    [
      {
        "key": "startup-script",
        "value": "[STARTUP_SCRIPT]"
      }
    ]
  }
}

ここで

  • [INSTANCE_NAME] はインスタンスの名前です。
  • [PROJECT_ID] はプロジェクト ID です。
  • [ZONE] は、このインスタンスのゾーンです。
  • [MACHINE_TYPE] は、インスタンスに選択したマシンタイプです。希望する GPU 数に応じて使用可能なマシンタイプについては、Compute Engine の GPU をご覧ください。
  • [IMAGE_PROJECT] は、イメージが属するイメージ プロジェクトです。
  • [IMAGE_FAMILY] は、インスタンスの起動ディスク イメージです。使用可能な公開イメージのリストから、イメージ ファミリーを指定します。
  • [DISK_SIZE] は、起動ディスクのサイズ(GB 単位)です。
  • [NETWORK] は、このインスタンスに使用する VPC ネットワークです。デフォルトのネットワークを使用する場合は default を指定します。
  • [ACCELERATOR_COUNT] は、インスタンスに追加する GPU の数です。インスタンスのマシンタイプに応じた GPU 制限の一覧については、Compute Engine の GPU をご覧ください。
  • [ACCELERATOR_TYPE] は使用する GPU モデルです。使用可能な GPU モデルのリストについては、Compute Engine の GPU をご覧ください。
  • [STARTUP_SCRIPT] は、インスタンスが起動しているときに GPU ドライバのインストールに使用できる省略可能な起動スクリプトです。この例については、GPU ドライバのインストールをご覧ください。
  • "preemptible": true は、インスタンスをプリエンプティブなインスタンスとして構成するためのオプションのパラメータです。これにより、インスタンスと接続される GPU のコストが削減されます。詳細については、プリエンティブ インスタンスの GPU をご覧ください。

起動スクリプトを使用して GPU デバイス ドライバを自動的にインストールするには、GPU ドライバが正しくインストールされていることを確認します。

インスタンスの作成中に GPU ドライバをインストールする起動スクリプトを使用しなかった場合は、システムがデバイスを使用できるように、インスタンスに GPU ドライバを手動でインストールします。

既存のインスタンスでの GPU の追加または削除

既存のインスタンスに GPU を追加したり、切り離したりできますが、まずインスタンスを停止してホストのメンテナンス設定を変更し、インスタンスがライブ マイグレーションを実行するのではなく終了するようにする必要があります。GPU を使用するインスタンスは、特定のハードウェア デバイスに割り当てられているため、ライブ マイグレーションができません。詳細については、GPU の制限をご覧ください。

また、GPU を追加した後、このインスタンスに GPU ドライバをインストールする必要があることにも注意してください。このインスタンスの作成に使用したブートディスク イメージによって、必要なドライバが決まります。インスタンスの永続ブートディスク イメージのオペレーティング システムに適したドライバを特定する必要があります。詳細については、GPU ドライバのインストールをご覧ください。

Google Cloud Platform ConsoleAPI を使用して、インスタンスに対して GPU の追加または削除を行うことができます。

Console

インスタンスを停止し、インスタンスの構成を編集することで、GPU をインスタンスに追加したり、インスタンスから削除したりできます。

  1. インスタンス上のすべての重要なアプリケーションが停止していることを確認します。GPU を追加する前にインスタンスを停止する必要があります。

  2. [VM インスタンス] ページに移動し、インスタンスのリストを確認します。

    [VM インスタンス] ページに移動

  3. インスタンスのリストで、GPU を追加するインスタンスの名前をクリックします。インスタンスの詳細ページが開きます。

  4. インスタンスの詳細ページの上部にある [停止] をクリックしてインスタンスを停止します。

  5. インスタンスの実行が停止したら、[編集] をクリックしてインスタンスのプロパティを変更します。

  6. インスタンスのマシンタイプが共有コア マシンタイプである場合は、1 つ以上の vCPU を搭載されたマシンタイプに変更する必要があります。共有コア マシンタイプのインスタンスにアクセラレータを追加することはできません。

  7. [マシンの構成] セクションで [CPU プラットフォームと GPU] をクリックして、マシンタイプの詳細オプションと使用可能な GPU を確認します。

  8. [GPU] をクリックすると、使用可能な GPU のリストが表示されます。

  9. インスタンスに追加する GPU の数と GPU モデルを選択します。または、GPU の数を [なし] に設定して、インスタンスから既存の GPU を削除することもできます。

  10. GPU をインスタンスに追加した場合は、ホストのメンテナンス設定を [終了] に設定します。インスタンスから GPU を削除した場合は、必要に応じてホスト メンテナンス設定を [VM インスタンスを移行] に戻すことができます。

  11. インスタンスの詳細ページの下部で、[保存] をクリックして変更を適用します。

  12. インスタンス設定が保存されたら、インスタンスの詳細ページの上部にある [開始] をクリックして、インスタンスを再度開始します。

API

API を使用して、インスタンスを停止しインスタンスの構成を変更することで、GPU をインスタンスに追加したりインスタンスから削除したりできます。

  1. インスタンス上のすべての重要なアプリケーションが停止していることを確認し、インスタンスを停止する POST コマンドを作成して、GPU が使用可能なホストシステムにインスタンスが移動できるようにします。

    POST https://www.googleapis.com/compute/v1/projects/compute/zones/[ZONE]/instances/[INSTANCE_NAME]/stop
    

    ここで

    • [INSTANCE_NAME] は、GPU を追加するインスタンスの名前です。
    • [ZONE] は、インスタンスが存在する場所のゾーンです。
  2. インスタンスに追加する GPU タイプを指定します。GET リクエストを発行し、特定のゾーンのプロジェクトで使用可能な GPU タイプをリストします。

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

    ここで

    • [PROJECT_ID] はプロジェクト ID です。
    • [ZONE] は、使用可能な GPU タイプをリストするゾーンです。
  3. インスタンスのマシンタイプが共有コア マシンタイプである場合は、1 つ以上の vCPU を搭載されたマシンタイプに変更する必要があります。共有コア マシンタイプのインスタンスにアクセラレータを追加することはできません。

  4. インスタンスが停止したら、1 つ以上の GPU をインスタンスに追加またはインスタンスから削除する POST リクエストを作成します。

    POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]/setMachineResources
    
    {
     "guestAccelerators": [
      {
        "acceleratorCount": [ACCELERATOR_COUNT],
        "acceleratorType": "https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/acceleratorTypes/[ACCELERATOR_TYPE]"
      }
     ]
    }
    

    ここで

    • [INSTANCE_NAME] はインスタンスの名前です。
    • [PROJECT_ID] はプロジェクト ID です。
    • [ZONE] は、このインスタンスのゾーンです。
    • [ACCELERATOR_COUNT] は、インスタンスで必要とする GPU の数です。インスタンスのマシンタイプに応じた GPU 制限の一覧については、Compute Engine の GPU をご覧ください。
    • [ACCELERATOR_TYPE] は使用する GPU モデルです。使用可能な GPU モデルのリストについては、Compute Engine の GPU をご覧ください。
  5. インスタンスのスケジューリング オプションを設定する POST コマンドを作成します。インスタンスに GPU を追加する場合は、"onHostMaintenance": "TERMINATE" を指定する必要があります。必要に応じて、インスタンスから GPU を削除する場合は、"onHostMaintenance": "MIGRATE" を指定します。

    POST https://www.googleapis.com/compute/v1/projects/compute/zones/[ZONE]/instances/[INSTANCE_NAME]/setScheduling
    
    {
     "onHostMaintenance": "[MAINTENANCE_TYPE]",
     "automaticRestart": true
    }
    

    ここで:

    • [INSTANCE_NAME] は、GPU を追加するインスタンスの名前です。
    • [ZONE] は、インスタンスが存在する場所のゾーンです。
    • [MAINTENANCE_TYPE] は、ホスト メンテナンスが必要なときにインスタンスに実行させるアクションです。インスタンスに GPU を追加する場合は、TERMINATE を指定します。あるいは、インスタンスからすべての GPU を削除し、インスタンスがホスト メンテナンス イベントで移行を再開するようにする場合は、"onHostMaintenance": "MIGRATE" を指定します。
  6. インスタンスを起動します。

    POST https://www.googleapis.com/compute/v1/projects/compute/zones/[ZONE]/instances/[INSTANCE_NAME]/start
    

    ここで

    • [INSTANCE_NAME] は、GPU を追加するインスタンスの名前です。
    • [ZONE] は、インスタンスが存在する場所のゾーンです。

次に、システムがデバイスを使用できるように、インスタンスに GPU ドライバをインストールします。

インスタンス テンプレートを使用して GPU インスタンスのグループを作成する

インスタンス テンプレートを使用して、各インスタンスに GPU が追加されたマネージド インスタンス グループを作成できます。マネージド インスタンス グループは、テンプレートを使用して同一インスタンスを複数作成します。グループ内のインスタンスの数は、ワークロードに合わせて増減できます。

インスタンス テンプレートの作成手順については、インスタンス テンプレートの作成をご覧ください。

Console を使用してインスタンス テンプレートを作成する場合、マシンタイプをカスタマイズして、インスタンス テンプレートに追加する GPU のタイプと数を選択します。

gcloud コマンドライン ツールを使用する場合は、--accelerators および --maintenance-policy TERMINATE フラグを含めます。さらに必要に応じて --metadata startup-script フラグを含めて、インスタンスの起動中に GPU ドライバをインストールする起動スクリプトを指定します。GPU インスタンスで動作するサンプル スクリプトについては、GPU ドライバのインストールをご覧ください。

次の例では、2 つの vCPU、Ubuntu 16.04 を使用する 250GB のブートディスク、NVIDIA® Tesla® K80 GPU、および起動スクリプトからなるインスタンス テンプレートを作成します。この起動スクリプトは、推奨のドライバ バージョンを使用して CUDA ツールキットをインストールします。

gcloud beta compute instance-templates create gpu-template \
    --machine-type n1-standard-2 \
    --boot-disk-size 250GB \
    --accelerator type=nvidia-tesla-k80,count=1 \
    --image-family ubuntu-1604-lts --image-project ubuntu-os-cloud \
    --maintenance-policy TERMINATE --restart-on-failure \
    --metadata startup-script='#!/bin/bash
    echo "Checking for CUDA and installing."
    # Check for CUDA and try to install.
    if ! dpkg-query -W cuda-10-0; then
      curl -O http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_10.0.130-1_amd64.deb
      dpkg -i ./cuda-repo-ubuntu1604_10.0.130-1_amd64.deb
      apt-get update
      apt-get install cuda-10-0 -y
    fi'

テンプレートを作成したら、そのテンプレートを使用してインスタンス グループを作成します。グループにインスタンスを追加するたびに、インスタンス テンプレートの設定を使用してそのインスタンスが開始されます。

リージョン マネージド インスタンス グループを作成する場合は必ず、必要な GPU モデルを明示的にサポートするゾーンを選択してください。GPU モデルと使用可能なゾーンの一覧については、Compute Engine の GPU をご覧ください。次の例では、nvidia-tesla-k80 モデルをサポートする 2 つのゾーンにわたってリージョン マネージド インスタンス グループを作成します。

gcloud beta compute instance-groups managed create example-rmig \
    --template gpu-template --base-instance-name example-instances \
    --size 30 --zones us-east1-c,us-east1-d

注: 特定のゾーンを選択する場合、ゾーン選択機能は現時点ではベータ版であるため、gcloud beta コンポーネントを使用します。

インスタンスのグループの管理とスケーリングの詳細については、マネージド インスタンス グループの作成をご覧ください。

GPU ドライバのインストール

1 つ以上の GPU を使用するインスタンスを作成したら、アプリケーションがデバイスにアクセスできるようにするため、システムにデバイス ドライバが必要となります。このガイドでは、公開イメージを使用するインスタンスに NVIDIA の独自ドライバをインストールする方法を紹介します。

次のオプションのいずれかを使用して GPU ドライバをインストールできます。

スクリプトを使用して GPU ドライバをインストールする

CUDA のバージョンごとに、最低限必要な GPU ドライバのバージョンがあります。ご使用の CUDA に必要なドライバのバージョンを確認するには、CUDA ツールキットと互換ドライバのバージョンを参照してください。

Google Compute Engine で動作する NVIDIA GPU には、次のバージョンのドライバを使用する必要があります。

  • Linux インスタンス:

    • NVIDIA 410.79 以降のドライバ
  • Windows Server インスタンス:

    • NVIDIA 426.00 以降のドライバ

ほとんどのドライバのインストールでは、NVIDIA CUDA ツールキットをインストールすることにより、これらのドライバを入手できます。

一部のイメージでは、スクリプトを使用してドライバのインストール プロセスを簡素化できます。インスタンス上でこれらのスクリプトを起動スクリプトとして指定することも、スクリプトをインスタンスにコピーして、デバイスから sudo 権限を持つユーザーとして実行することもできます。

選択した起動ディスク イメージでスクリプトが機能するように、スクリプトを作成する必要があります。インスタンスに対応するカスタム起動ディスク イメージをインポートした場合、そのカスタム イメージで正しく機能するように、起動スクリプトのカスタマイズが必要になる場合があります。

Windows Server インスタンスや、ドライバのインストール プロセスを自動化できない SLES 12 インスタンスでは、ドライバを手動でインストールします。

次に示す各サンプルは、NVIDIA® GPU の CUDA と関連ドライバを公開イメージにインストールする起動スクリプトです。使用するソフトウェアに特定のバージョンの CUDA が必要な場合は、必要なバージョンの CUDA をダウンロードするようにスクリプトを変更します。

CUDA のサポートや、CUDA インストールを変更する手順については、CUDA ツールキットのドキュメントをご覧ください。

起動スクリプトが完了したかどうかを確認するには、ログシリアル コンソールを確認します。

CentOS

これらのサンプル スクリプトは既存の CUDA インストールの有無を確認し、CUDA 10 フルパッケージとそれに関連する独自のドライバをインストールします。

CentOS 7 - CUDA 10:

#!/bin/bash
# Install kernel headers and development packages
echo "Installing kernel headers and development packages."
yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r) -y
echo "Checking for CUDA and installing."
# Check for CUDA and try to install.
if ! rpm -q cuda-10-0; then
  curl -O http://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-repo-rhel7-10.0.130-1.x86_64.rpm
  rpm -i --force ./cuda-repo-rhel7-10.0.130-1.x86_64.rpm
  yum clean all
  rm -rf /var/cache/yum
  # Install Extra Packages for Enterprise Linux (EPEL) for dependencies
  yum install epel-release -y
  yum update -y
  yum install cuda-10-0 -y
fi
# Verify that CUDA installed; retry if not.
if ! rpm -q cuda-10-0; then
  yum install cuda-10-0 -y
fi

CentOS 7 のイメージからインストールすると、スクリプトがドライバと CUDA パッケージのインストールを完了した後でインスタンスの再起動が必要になることがあります。スクリプトが完了し、nvidia-smi コマンドが次のエラーを返した場合には、インスタンスを再起動してください。

NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA
driver. Make sure that the latest NVIDIA driver is installed and
running.

CentOS 6 - CUDA 10:

#!/bin/bash
# Install kernel headers and development packages
echo "Installing kernel headers and development packages."
yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r) -y
echo "Checking for CUDA and installing."
# Check for CUDA and try to install.
if ! rpm -q cuda-10-0; then
  curl -O http://developer.download.nvidia.com/compute/cuda/repos/rhel6/x86_64/cuda-repo-rhel6-10.0.130-1.x86_64.rpm
  rpm -i --force ./cuda-repo-rhel6-10.0.130-1.x86_64.rpm
  yum clean all
  # Install Extra Packages for Enterprise Linux (EPEL) for dependencies
  yum install epel-release -y
  yum update -y
  yum install cuda-10-0 -y
fi
# Verify that CUDA installed; retry if not.
if ! rpm -q cuda-10-0; then
  yum install cuda-10-0 -y
fi

CentOS 6 のイメージからインストールすると、スクリプトがドライバと CUDA パッケージのインストールを完了した後でインスタンスの再起動が必要になることがあります。スクリプトが完了し、nvidia-smi コマンドが次のエラーを返した場合には、インスタンスを再起動してください。

NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA
driver. Make sure that the latest NVIDIA driver is installed and
running.

RHEL

これらのサンプル スクリプトは既存の CUDA インストールの有無を確認し、CUDA 10 フルパッケージとそれに関連する独自のドライバをインストールします。

RHEL 7 - CUDA 10:

#!/bin/bash
# Install kernel headers and development packages
echo "Installing kernel headers and development packages."
yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r) -y
echo "Checking for CUDA and installing."
# Check for CUDA and try to install.
if ! rpm -q cuda-10-0; then
  curl -O http://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-repo-rhel7-10.0.130-1.x86_64.rpm
  rpm -i --force ./cuda-repo-rhel7-10.0.130-1.x86_64.rpm
  yum clean all
  rm -rf /var/cache/yum
  # Install Extra Packages for Enterprise Linux (EPEL) for dependencies
  yum install epel-release -y
  yum update -y
  yum install cuda-10-0 -y
fi
# Verify that CUDA installed; retry if not.
if ! rpm -q cuda-10-0; then
  yum install cuda-10-0 -y
fi

RHEL 7 のイメージからインストールすると、スクリプトがドライバと CUDA パッケージのインストールを完了した後でインスタンスの再起動が必要になることがあります。スクリプトが完了し、nvidia-smi コマンドが次のエラーを返した場合には、インスタンスを再起動してください。

NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA
driver. Make sure that the latest NVIDIA driver is installed and
running.

RHEL 6 - CUDA 10:

#!/bin/bash
# Install kernel headers and development packages
echo "Installing kernel headers and development packages."
yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r) -y
echo "Checking for CUDA and installing."
# Check for CUDA and try to install.
if ! rpm -q cuda-10-0; then
  curl -O http://developer.download.nvidia.com/compute/cuda/repos/rhel6/x86_64/cuda-repo-rhel6-10.0.130-1.x86_64.rpm
  rpm -i --force ./cuda-repo-rhel6-10.0.130-1.x86_64.rpm
  yum clean all
  # Install Extra Packages for Enterprise Linux (EPEL) for dependencies
  yum install epel-release -y
  yum update -y
  yum install cuda-10-0 -y
fi
# Verify that CUDA installed; retry if not.
if ! rpm -q cuda-10-0; then
  yum install cuda-10-0 -y
fi

RHEL 6 のイメージからインストールすると、スクリプトがドライバと CUDA パッケージのインストールを完了した後でインスタンスの再起動が必要になることがあります。スクリプトが完了し、nvidia-smi コマンドが次のエラーを返した場合には、インスタンスを再起動してください。

NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA
driver. Make sure that the latest NVIDIA driver is installed and
running.

スクリプトが終了したかどうかを確認するには、シリアル コンソールを確認します。

SLES

SLES 15 - CUDA 10:

このサンプル スクリプトは既存の CUDA インストールの有無を確認し、CUDA 10 フルパッケージとそれに関連する独自のドライバをインストールします。

#!/bin/bash
echo "Checking for CUDA and installing."
# Check for CUDA and try to install.
if ! rpm -q cuda-10-0; then
  curl -O http://developer.download.nvidia.com/compute/cuda/repos/sles15/x86_64/cuda-repo-sles15-10.0.130-1.x86_64.rpm
  rpm -i --force ./cuda-repo-sles15-10.0.130-1.x86_64.rpm
  zypper --gpg-auto-import-keys refresh
  zypper install -ny cuda-10-0
fi
# Verify that CUDA installed; retry if not.
if ! rpm -q cuda-10-0; then
  zypper install -ny cuda-10-0
fi

SLES 12 Service Pack 3 - CUDA 9.1:

このサンプル スクリプトは既存の CUDA インストールの有無を確認し、CUDA 9.1 フルパッケージとそれに関連する独自のドライバをインストールします。

#!/bin/bash
echo "Checking for CUDA and installing."
# Check for CUDA and try to install.
if ! rpm -q cuda-9-1; then
  curl -O http://developer.download.nvidia.com/compute/cuda/repos/sles123/x86_64/cuda-repo-sles123-9.1.85-1.x86_64.rpm
  rpm -i --force ./cuda-repo-sles123-9.1.85-1.x86_64.rpm
  zypper --gpg-auto-import-keys refresh
  zypper install -ny cuda-9-1
fi
# Verify that CUDA installed; retry if not.
if ! rpm -q cuda-9-1; then
  zypper install -ny cuda-9-1
fi

SLES 12:

他の SLES 12 インスタンスでは、ドライバを手動でインストールします。

Ubuntu

Ubuntu 18.04 - Cuda 10:

このサンプル スクリプトは既存の CUDA インストールの有無を確認し、CUDA 10 フルパッケージとそれに関連する独自のドライバをインストールします。

 #!/bin/bash
 echo "Checking for CUDA and installing."
 # Check for CUDA and try to install.
 if ! dpkg-query -W cuda-10-0; then
   curl -O http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-repo-ubuntu1804_10.0.130-1_amd64.deb
   dpkg -i ./cuda-repo-ubuntu1804_10.0.130-1_amd64.deb
   apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
   apt-get update
   apt-get install cuda-10-0 -y
 fi

Ubuntu 17.04、17.10 - CUDA 9:

このサンプル スクリプトは既存の CUDA インストールの有無を確認し、CUDA 9 フルパッケージとそれに関連する独自のドライバをインストールします。

#!/bin/bash
echo "Checking for CUDA and installing."
# Check for CUDA and try to install.
if ! dpkg-query -W cuda-9-0; then
  # The 17.04 installer works with 17.10.
  curl -O http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1704_9.0.176-1_amd64.deb
  dpkg -i ./cuda-repo-ubuntu1704_9.0.176-1_amd64.deb
  apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
  apt-get update
  apt-get install cuda-9-0 -y
fi

Ubuntu 16.04 LTS - CUDA 10:

このサンプル スクリプトは既存の CUDA インストールの有無を確認し、CUDA 10 フルパッケージとそれに関連する独自のドライバをインストールします。

#!/bin/bash
echo "Checking for CUDA and installing."
# Check for CUDA and try to install.
if ! dpkg-query -W cuda-10-0; then
  # The 16.04 installer works with 16.10.
  curl -O http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_10.0.130-1_amd64.deb
  dpkg -i ./cuda-repo-ubuntu1604_10.0.130-1_amd64.deb
  apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
  apt-get update
  apt-get install cuda-10-0 -y
fi

Windows Server

Windows Server インスタンスでは、ドライバを手動でインストールします。

スクリプトの実行が終了したら、GPU ドライバがインストールされたことを確認できます。

GPU ドライバを手動でインストールする

GPU のドライバのインストールにスクリプトを使用できない場合は、ユーザー自身がドライバを手動でインストールできます。アプリケーションに対して最も効率的に機能するインストーラとドライバのバージョンを選択するのは、ユーザーの責任となります。特定のドライバが必要な場合や、インストール スクリプトのいずれも機能しないカスタム イメージや公開イメージにドライバをインストールする必要がある場合は、このインストール方法を使用します。

このプロセスを使用すると、ほとんどの公開イメージのインスタンスにドライバを手動でインストールできます。カスタム イメージの場合は、固有環境で機能するようにプロセスの変更が必要になることがあります。

CentOS

  1. ドライバをインストールするインスタンスに接続します。

  2. カーネルヘッダと開発パッケージをインストールします。

    yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r) -y
    
  3. ドライバ リポジトリを選択し、それをインスタンスに追加します。たとえば、curl を使用して CUDA ツールキットをダウンロードし、rpm コマンドを使用してシステムにリポジトリを追加します。

    • CentOS 7

      curl -O http://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-repo-rhel7-10.0.130-1.x86_64.rpm
      
      sudo rpm -i cuda-repo-rhel7-10.0.130-1.x86_64.rpm
      
    • CentOS 6

      curl -O http://developer.download.nvidia.com/compute/cuda/repos/rhel6/x86_64/cuda-repo-rhel6-10.0.130-1.x86_64.rpm
      
      sudo rpm -i cuda-repo-rhel6-10.0.130-1.x86_64.rpm
      
  4. epel-release リポジトリをインストールします。このリポジトリには DKMS パッケージが含まれています。これは CentOS に NVIDIA ドライバをインストールするために必要です。

    sudo yum install epel-release
    
  5. Yum キャッシュを消去します。

    sudo yum clean all
    
  6. NVIDIA ドライバが含まれる CUDA 10 をインストールします。

    sudo yum install cuda-10-0
    
  7. CentOS のイメージからインストールすると、ドライバと CUDA パッケージのインストールを完了した後でインスタンスの再起動が必要になることがあります。スクリプトが完了し、nvidia-smi コマンドが次のエラーを返した場合には、インスタンスを再起動してください。

    NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA
    driver. Make sure that the latest NVIDIA driver is installed and
    running.
    

RHEL

  1. ドライバをインストールするインスタンスに接続します。

  2. カーネルヘッダと開発パッケージをインストールします。

    yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r) -y
    
  3. ドライバ リポジトリを選択し、それをインスタンスに追加します。たとえば、curl を使用して CUDA ツールキットをダウンロードし、rpm コマンドを使用してシステムにリポジトリを追加します。

    • RHEL 7

      curl -O http://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-repo-rhel7-10.0.130-1.x86_64.rpm
      
      sudo rpm -i cuda-repo-rhel7-10.0.130-1.x86_64.rpm
      
    • RHEL 6

      curl -O http://developer.download.nvidia.com/compute/cuda/repos/rhel6/x86_64/cuda-repo-rhel6-10.0.130-1.x86_64.rpm
      
      sudo rpm -i cuda-repo-rhel6-10.0.130-1.x86_64.rpm
      
  4. epel-release リポジトリをインストールします。このリポジトリには、NVIDIA ドライバのインストールに必要な DKMS パッケージが含まれています。RHEL では、このリポジトリの .rpmfedoraproject.org からダウンロードしてシステムに追加します。

    • RHEL 7

      curl -O https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
      
      sudo rpm -i epel-release-latest-7.noarch.rpm
      
    • RHEL 6

      curl -O https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
      
      sudo rpm -i epel-release-latest-6.noarch.rpm
      
  5. Yum キャッシュを消去します。

    sudo yum clean all
    
  6. NVIDIA ドライバが含まれる CUDA 10 をインストールします。

    sudo yum install cuda-10-0
    
  7. RHEL のイメージからインストールすると、ドライバと CUDA パッケージのインストールを完了した後でインスタンスの再起動が必要になることがあります。スクリプトが完了し、nvidia-smi コマンドが次のエラーを返した場合には、インスタンスを再起動してください。

    NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA
    driver. Make sure that the latest NVIDIA driver is installed and
    running.
    

SLES

  1. ドライバをインストールするインスタンスに接続します。

  2. ドライバ リポジトリを選択し、それをインスタンスに追加します。たとえば、curl を使用して CUDA ツールキットをダウンロードし、rpm コマンドを使用してシステムにリポジトリを追加します。

    • SLES 15

      curl -O https://developer.download.nvidia.com/compute/cuda/repos/sles15/x86_64/cuda-repo-sles15-10.0.130-1.x86_64.rpm
      
      sudo rpm -i cuda-repo-sles15-10.0.130-1.x86_64.rpm
      
    • SLES 12 Service Pack 3

      curl -O https://developer.download.nvidia.com/compute/cuda/repos/sles123/x86_64/cuda-repo-sles123-9.1.85-1.x86_64.rpm
      
      sudo rpm -i cuda-repo-sles123-9.1.85-1.x86_64.rpm
      
    • SLES 12 Service Pack 2

      curl -O https://developer.download.nvidia.com/compute/cuda/repos/sles122/x86_64/cuda-repo-sles122-9.0.176-1.x86_64.rpm
      
      sudo rpm -i cuda-repo-sles122-9.0.176-1.x86_64.rpm
      
  3. Zypper を更新します。

    sudo zypper refresh
    
  4. NVIDIA が含まれる CUDA をインストールします。

    zypper install cuda
    

Ubuntu

  1. ドライバをインストールするインスタンスに接続します。

  2. ドライバ リポジトリを選択し、それをインスタンスに追加します。たとえば、curl を使用して CUDA ツールキットをダウンロードし、dpkg コマンドを使用してシステムにリポジトリを追加します。次に、apt-key コマンドを使用してダウンロードを認証します。

    • Ubuntu 18.04

      curl -O http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-repo-ubuntu1804_10.0.130-1_amd64.deb
      
      sudo dpkg -i cuda-repo-ubuntu1804_10.0.130-1_amd64.deb
      sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1704/x86_64/7fa2af80.pub
      
    • Ubuntu 17.04、17.10

      curl -O http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1704/x86_64/cuda-repo-ubuntu1704_9.0.176-1_amd64.deb
      
      sudo dpkg -i cuda-repo-ubuntu1704_9.0.176-1_amd64.deb
      sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1704/x86_64/7fa2af80.pub
      
    • Ubuntu 16.04、16.10 LTS

      curl -O http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_10.0.130-1_amd64.deb
      
      sudo dpkg -i cuda-repo-ubuntu1604_10.0.130-1_amd64.deb
      sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
      
  3. パッケージ リストを更新します。

    sudo apt-get update
    
  4. NVIDIA ドライバが含まれる CUDA をインストールします。

    • Ubuntu 16.04、16.10、18.04

      sudo apt-get install cuda-10-0
      
    • Ubuntu 17.04、17.10

      sudo apt-get install cuda-9-0
      

Windows Server

  1. ドライバをインストールするインスタンスに接続します。

  2. R426 ブランチ: NVIDIA 426.00 以上のドライバを含む .exe インストーラ ファイルをダウンロードして、インスタンスに保存します。ほとんどの Windows Server インスタンスでは、次のオプションのいずれかを使用できます。

    たとえば、Windows Server 2019 では、管理者として PowerShell ターミナルを開き、wget コマンドを使用して、必要なドライバのインストーラをダウンロードできます。

    PS C:\> wget https://developer.download.nvidia.com/compute/cuda/10.1/Prod/network_installers/cuda_10.1.243_win10_network.exe -O cuda_10.1.243_win10_network.exe
  3. .exe インストーラを実行します。たとえば、管理者として PowerShell ターミナルを開き、次のコマンドを実行します。

    PS C:\> .\\cuda_10.1.243_win10_network.exe
    

インストーラの実行が終了したら、GPU ドライバがインストールされたことを確認します。

GPU ドライバのインストールの確認

ドライバのインストールが終了したら、ドライバのインストールと初期化が正しく行われたことを確認します。

Linux

Linux インスタンスに接続し、nvidia-smi コマンドを使用して、ドライバが正常に稼働していることを確認します。

nvidia-smi

Wed Jan  2 19:51:51 2019
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.79       Driver Version: 410.79       CUDA Version: 10.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla P4            Off  | 00000000:00:04.0 Off |                    0 |
| N/A   42C    P8     7W /  75W |     62MiB /  7611MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

Windows Server

Windows Server インスタンスに接続し、nvidia-smi.exe ツールを使用して、ドライバが正常に稼働していることを確認します。

PS C:\> & 'C:\Program Files\NVIDIA Corporation\NVSMI\nvidia-smi.exe'

Mon Aug 26 18:09:03 2019
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 426.00      Driver Version: 426.00       CUDA Version: 10.1      |
|-------------------------------+----------------------+----------------------+
| GPU  Name            TCC/WDDM | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla P4            TCC  | 00000000:00:04.0 Off |                    0 |
| N/A   27C    P8     7W /  75W |      0MiB /  7611MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

ドライバが機能せず、ドライバのインストールにスクリプトを使用していた場合は、起動スクリプトのログを確認し、スクリプトが完了していることと、インストール プロセスでエラーが発生していないことを確認します。

仮想ワークステーション用の GRID® ドライバのインストール

Compute Engine で使用できる NVIDIA ドライバの一覧については、NVIDIA ドライバの Cloud Storage バケットの内容をご覧ください。

Linux

  1. 次のコマンドを使用して GRID ドライバをダウンロードします。

    curl -O https://storage.googleapis.com/nvidia-drivers-us-public/GRID/GRID7.1/NVIDIA-Linux-x86_64-410.92-grid.run
    
  2. 次のコマンドを使用してインストーラを起動します。

    sudo bash NVIDIA-Linux-x86_64-410.92-grid.run
    
  3. インストール時に次のオプションを選択します。

    • 32 ビットバイナリのインストールを求められたら、[Yes] を選択します。
    • x.org ファイルの変更を求められたら、[No] を選択します。

Windows Server

  1. Windows Server のバージョンに応じて、次の NVIDIA GRID ドライバのいずれか 1 つをダウンロードします。

  2. インストーラを実行して、高速インストールを選択します。

  3. インストールが完了したら VM を再起動します。再起動すると、セッションが切断されます。

  4. RDP または PCoIP クライアントを使用してインスタンスに再接続します。

GRID ドライバがインストールされていることを確認する

Linux

次のコマンドを実行します。

nvidia-smi

コマンドの出力は次のようになります。

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.92                Driver Version: 410.92                     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla P100-PCIE...  On   | 00000000:00:04.0 Off |                    0 |
| N/A   34C    P0    26W / 250W |      0MiB / 16276MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

Windows Server

  1. RDP または PCoIP クライアントを使用して Windows インスタンスに接続します。

  2. デスクトップを右クリックし、[NVIDIA コントロール パネル] を選択します。

  3. [NVIDIA コントロール パネル] の [ヘルプ] メニューから、[システム情報] を選択します。この情報には、VM が使用している GPU とドライバのバージョンが表示されます。

GPU パフォーマンスのモニタリングと最適化

GPU パフォーマンスのモニタリング

リソースの利用効率を高めるために、インスタンスの GPU 使用率を追跡できます。GPU の使用率がわかったら、マネージド インスタンス グループの設定などのタスクを実行して、それをニーズに基づくリソースの自動スケーリングに使用できます。

Stackdriver を使用して GPU 指標を確認するには、次の手順を実行します。

  1. 各 VM インスタンスで、GPU 指標レポート スクリプトを設定します。このスクリプトは、次のタスクを実行します。

    • GPU 指標レポート エージェントをインストールします。このエージェントは、インスタンスで間隔を置いて実行され、収集した GPU データを Stackdriver に送信します。
    • Stackdriver に custom/gpu_utilization 指標フィールドを作成します。このフィールドには、Stackdriver で分析可能な GPU 固有のデータが保存されます。
  2. Stackdriver でログを表示します。

GPU 指標レポート スクリプトの設定

  1. 各 VM インスタンスで、次の要件を満たしていることを確認します。

  2. 各 VM インスタンスに GPU 指標エージェントをインストールします。指標エージェントのインストール手順は次のとおりです。

    1. GPU 指標レポート スクリプトをダウンロードします。

      git clone https://github.com/GoogleCloudPlatform/tensorflow-inference-tensorrt5-t4-gpu.git
      
    2. metrics_reporting フォルダに切り替えます。

      cd tensorflow-inference-tensorrt5-t4-gpu/metrics_reporting
      
    3. 指標エージェントのインストール環境を設定します。

      pip install -r ./requirenments.txt
      
    4. 指標レポート スクリプトをルート ディレクトリに移動します。

      sudo cp report_gpu_metrics.py /root/
      
    5. GPU 指標エージェントを有効にします。

      cat <<-EOH > /lib/systemd/system/gpu_utilization_agent.service
      [Unit]
      Description=GPU Utilization Metric Agent
      [Service]
      Type=simple
      PIDFile=/run/gpu_agent.pid
      ExecStart=/bin/bash --login -c '/usr/bin/python /root/report_gpu_metrics.py'
      User=root
      Group=root
      WorkingDirectory=/
      Restart=always
      [Install]
      WantedBy=multi-user.target
      EOH
      
    6. システム デーモンを再読み込みします。

      systemctl daemon-reload
      
    7. GPU モニタリング サービスを有効にします。

      systemctl --no-reload --now enable /lib/systemd/system/gpu_utilization_agent.service
      

Stackdriver で指標を確認する

  1. Stackdriver Metrics Explorer ページに移動します。

  2. gpu_utilization を検索します。

    Stackdriver 開始時のスクリーンショット

  3. GPU 使用率は次の出力のようになります。

    Stackdriver 実行時のスクリーンショット

  4. (省略可)マネージド インスタンス グループを使用して自動スケーリングを設定します。使用を開始するには、チュートリアル TensorFlow 推論ワークロードのマルチゾーン クラスタの設定のセクションをご覧ください。

GPU パフォーマンスの最適化

自動ブーストを無効にすることで、NVIDIA® Tesla® K80 GPU が搭載されたインスタンスのパフォーマンスを最適化できます。自動ブーストを無効にするには、次のコマンドを実行します。

sudo nvidia-smi --auto-boost-default=DISABLED

All done.

ホスト メンテナンス イベントの処理

GPU インスタンスのライブ マイグレーションはできません。GPU インスタンスはホスト メンテナンス イベントの際に終了する必要がありますが、自動的に再起動できます。これらのメンテナンス イベントは、通常、月に 1 回実行しますが、必要に応じて頻繁に実行することもできます。

メンテナンス イベントの発生時にワークロードの中断を最小限に抑えるために、インスタンスのメンテナンス スケジュールを監視し、システムの再起動でワークロードを移行する準備を整えることができます。

ホスト メンテナンス イベントについて事前に通知を受け取るようにするには、/computeMetadata/v1/instance/maintenance-event メタデータ値をモニタリングします。メタデータ サーバーへのリクエストから NONE が返された場合、インスタンスは終了するようにスケジュールされていません。たとえば、インスタンス内から次のコマンドを実行します。

curl http://metadata.google.internal/computeMetadata/v1/instance/maintenance-event -H "Metadata-Flavor: Google"

NONE

メタデータ サーバーから TERMINATE_ON_HOST_MAINTENANCE が返された場合、インスタンスの終了スケジュールが設定されています。Compute Engine は GPU インスタンスに 1 時間の終了通知を送信します。一方、通常のインスタンスは 60 秒の通知のみ受け取ります。 メンテナンス イベントを通じて移行するようにアプリケーションを構成します。たとえば、次のいずれかの方法を使用できます。

  • 進行中の作業を Google Cloud Storage バケットに一時的に移動するようにアプリを構成し、インスタンスの再起動後にそのデータを取り出します。

  • セカンダリ永続ディスクにデータを書き込みます。インスタンスが自動再起動した時点で、永続ディスクを再接続してアプリケーションを再開できます。

ポーリングなしでこのメタデータ値の変更についての通知を受け取ることもできます。ポーリングなしでホスト メンテナンス イベントの高度な通知を受け取る方法の例については、ライブ マイグレーションの通知取得をお読みください。

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Compute Engine ドキュメント