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


1 つ以上の GPU を使用するインスタンスを作成したら、アプリケーションがデバイスにアクセスできるようにするため、システムに NVIDIA デバイス ドライバが必要となります。仮想マシン(VM)インスタンスに十分な空きディスク容量があることを確認します(新しい VM を作成する場合は、ブートディスクに 30 GB 以上を選択してください)。

このドキュメントでは、公開イメージまたはカスタム イメージを使用して作成された VM に NVIDIA の独自ドライバをインストールする方法について説明します。

仮想ワークステーション用の GRID ドライバをインストールするには、仮想ワークステーション用の GRID ドライバのインストールをご覧ください。

始める前に

NVIDIA ドライバ、CUDA ツールキット、CUDA ランタイム バージョン

環境内で必要になるドライバやランタイムのコンポーネントのバージョンが異なる可能性があります。次のコンポーネントがこれに該当します。

  • NVIDIA ドライバ
  • CUDA ツールキット
  • CUDA ランタイム

これらのコンポーネントをインストールする際に、ニーズに合わせて環境を構成できます。たとえば、以前のバージョンの CUDA ツールキットで適切に機能するバージョンの Tensorflow をお持ちで、使用する GPU が新しいバージョンの NVIDIA ドライバを必要とする場合、以前のバージョンの CUDA ツールキットを新しいバージョンの NVIDIA ドライバとともにインストールできます。

ただし、NVIDIA ドライバと CUDA ツールキットのバージョンに互換性があることを確認する必要があります。CUDA ツールキットと NVIDIA ドライバの互換性については、CUDA の互換性に関する NVIDIA ドキュメントをご覧ください。

必要な NVIDIA ドライバのバージョン

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

  • A100 GPU の場合:
    • Linux : 450.80.02 以降
    • Windows: 452.77 以降
  • 他のすべての GPU タイプの場合:
    • Linux : NVIDIA 410.79 以降のドライバ
    • Windows : 426.00 以降のドライバ

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

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

NVIDIA ツールキットをインストールする手順は次のとおりです。

  1. 必要な最小ドライバをサポートする CUDA ツールキットを選択します。

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

  3. VM に CUDA ツールキットをダウンロードしてインストールします。次の表に、推奨される各ツールキットのインストール ガイドを示します。ツールキットをインストールする前に、インストール ガイドにあるインストール前の手順を完了しておいてください。

    GPU のタイプ 推奨される CUDA ツールキットの最小バージョン インストール手順
    • NVIDIA A100
    • NVIDIA T4
    • NVIDIA V100
    • NVIDIA P100
    • NVIDIA P4
    • NVIDIA K80

インストール スクリプト

次のスクリプトを使用して、インストール プロセスを自動化できます。これらのスクリプトを確認するには、GitHub リポジトリをご覧ください。

Linux

サポートされているオペレーティング システム

Linux インストール スクリプトは、次のオペレーティング システムでテストされています。

  • CentOS 7、8
  • Debian 10 および 11
  • Red Hat Enterprise Linux(RHEL)7、8
  • SUSE Linux Enterprise Server(SUSE)15
  • Ubuntu 18、20

このスクリプトを使用した他のシステムへの GPU ドライバのインストールは失敗する可能性があります。

  1. オペレーティング システムに Python 3 がインストールされていることを確認します。

  2. インストール スクリプトをダウンロードします。

    https://raw.githubusercontent.com/GoogleCloudPlatform/compute-gpu-installation/main/linux/install_gpu_driver.py --output install_gpu_driver.py
  3. インストール スクリプトを実行します。

    sudo python3 install_gpu_driver.py

    スクリプトの実行には時間がかかります。VM が再起動する可能性があります。VM が再起動した場合は、スクリプトを再度実行してインストールを続行します。

  4. インストールを確認します。GPU ドライバのインストールの確認をご覧ください。

Windows

このインストール スクリプトは、セキュアブートが有効になっている VM で使用できます。

管理者として PowerShell ターミナルを開き、次の手順を行います。

  1. スクリプトをダウンロードします。

    Invoke-WebRequest https://github.com/GoogleCloudPlatform/compute-gpu-installation/raw/main/windows/install_gpu_driver.ps1 -OutFile C:\install_gpu_driver.ps1
  2. スクリプトを実行します。

    C:\install_gpu_driver.ps1

    スクリプトの実行には時間がかかります。インストール プロセス中はコマンド プロンプトは表示されません。スクリプトが終了すると、ドライバがインストールされます。

    このスクリプトは、VM のデフォルトの場所にドライバをインストールします(C:\Program Files\NVIDIA Corporation)。

  3. インストールを確認します。GPU ドライバのインストールの確認をご覧ください。

セキュアブートを使用する VM に GPU ドライバをインストールする

セキュアブートを有効にした VMS では、システムが信頼する鍵ですべてのカーネル モジュールを署名する必要があります。

OS サポート

  • セキュアブートを使用する Windows オペレーティング システムに NVIDIA ドライバをインストールするには、一般的な VM への GPU ドライバのインストール セクションをご覧ください。
  • Linux オペレーティング システムの場合、Ubuntu 18.04 と 20.04 オペレーティング システムのみがサポートされます。さらに多くのオペレーティング システムに対応中です。

Ubuntu 18.04 と 20.04

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

  2. リポジトリを更新します。

    sudo apt-get update
    
  3. 最新の NVIDIA カーネル モジュール パッケージまたは必要なバージョンを検索します。このパッケージには、Ubuntu キーによって署名された NVIDIA カーネル モジュールが含まれています。最新のパッケージを表示するには、次のコマンドを実行します。

    NVIDIA_DRIVER_VERSION=$(sudo apt-cache search 'linux-modules-nvidia-[0-9]+-gcp$' | awk '{print $1}' | sort | tail -n 1 | head -n 1 | awk -F"-" '{print $4}')
    

    たとえば、以前のバージョンを 2 に指定すると、次の以前のバージョンが取得されます。

    NVIDIA_DRIVER_VERSION=$(sudo apt-cache search 'linux-modules-nvidia-[0-9]+-gcp$' | awk '{print $1}' | sort | tail -n 2 | head -n 1 | awk -F"-" '{print $4}')
    

    選択したドライバのバージョンを確認するには、echo $NVIDIA_DRIVER_VERSION を実行します。出力は、455 のようなバージョン文字列です。

  4. カーネル モジュール パッケージと、対応する NVIDIA ドライバをインストールします。

    sudo apt install linux-modules-nvidia-${NVIDIA_DRIVER_VERSION}-gcp nvidia-driver-${NVIDIA_DRIVER_VERSION}
    

    このコマンドでパッケージが見つからないとコマンドが失敗した場合、最新の nvidia ドライバがリポジトリに存在しない可能性があります。前の手順に戻り、以前のドライバ バージョンを確認します。

  5. NVIDIA ドライバがインストールされていることを確認します。場合によっては VM を再起動する必要があります。

  6. NVIDIA パッケージ リポジトリを使用するように APT を構成します。

    1. APT が適切な依存関係を選択できるように、次のようにリポジトリを固定します。

      sudo tee /etc/apt/preferences.d/cuda-repository-pin-600 > /dev/null <<EOL
      Package: nsight-compute
      Pin: origin *ubuntu.com*
      Pin-Priority: -1
      Package: nsight-systems Pin: origin *ubuntu.com* Pin-Priority: -1
      Package: nvidia-modprobe Pin: release l=NVIDIA CUDA Pin-Priority: 600
      Package: nvidia-settings Pin: release l=NVIDIA CUDA Pin-Priority: 600
      Package: * Pin: release l=NVIDIA CUDA Pin-Priority: 100 EOL

    2. software-properties-common をインストールします。これは、Ubuntu の最小イメージを使用している場合に必要です。

      sudo apt install software-properties-common
      

    3. NVIDIA リポジトリを追加します。

      • Ubuntu 18.04

        sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
        sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/ /"
        
      • Ubuntu 20.04

        sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/7fa2af80.pub
        sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /"
        
  7. 互換性のある CUDA ドライバのバージョンを確認します。

    次のスクリプトは、先ほどインストールした NVIDIA ドライバとの互換性がある最新の CUDA ドライバのバージョンを決定します。

    CUDA_DRIVER_VERSION=$(apt-cache madison cuda-drivers | awk '{print $3}' | sort -r | while read line; do
       if dpkg --compare-versions $(dpkg-query -f='${Version}\n' -W nvidia-driver-${NVIDIA_DRIVER_VERSION}) ge $line ; then
           echo "$line"
           break
       fi
    done)
    

    CUDA ドライバのバージョンを確認するには、echo $CUDA_DRIVER_VERSION を実行します。出力は、455.32.00-1 のようなバージョン文字列です。

  8. 前の手順で特定したバージョンで CUDA ドライバをインストールします。

    sudo apt install cuda-drivers-${NVIDIA_DRIVER_VERSION}=${CUDA_DRIVER_VERSION} cuda-drivers=${CUDA_DRIVER_VERSION}
    

  9. 省略可: dkms のパッケージを保持します。

    セキュアブートを有効にしたら、すべてのカーネル モジュールを読み込むために署名する必要があります。dkms によってビルドされたカーネル モジュールは、デフォルトでは適切に署名されていないため、VM で動作しません。これは省略可能な手順ですが、今後、他の dkms パッケージが誤ってインストールされるのを防ぐのに役立ちます。

    dkms パッケージを保持するには、次のコマンドを実行します。

    sudo apt-get remove dkms && sudo apt-mark hold dkms
    
  10. CUDA ツールキットとランタイムをインストールします。

    適切な CUDA バージョンを選択します。次のスクリプトは、先ほどインストールした CUDA ドライバと互換性のある最新の CUDA バージョンを決定します。

    CUDA_VERSION=$(apt-cache showpkg cuda-drivers | grep -o 'cuda-runtime-[0-9][0-9]-[0-9],cuda-drivers [0-9\.]*' | while read line; do
       if dpkg --compare-versions ${CUDA_DRIVER_VERSION} ge $(echo $line | grep -Eo '[[:digit:]]+\.[[:digit:]]+') ; then
           echo $(echo $line | grep -Eo '[[:digit:]]+-[[:digit:]]')
           break
       fi
    done)
    

    CUDA のバージョンを確認するには、echo $CUDA_VERSION を実行します。出力は、11-1 のようなバージョン文字列です。

    CUDA パッケージをインストールします。

    sudo apt install cuda-${CUDA_VERSION}
    

  11. CUDA のインストールを確認します。

    sudo nvidia-smi
    /usr/local/cuda/bin/nvcc --version
    
    最初のコマンドで GPU 情報を出力します。2 番目のコマンドは、インストールされている CUDA コンパイラのバージョンを出力します。

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

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

Linux

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

sudo nvidia-smi

出力は次のようになります。

Mon Oct 11 12:51:37 2021
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.57.02    Driver Version: 470.57.02    CUDA Version: 11.4     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA A100-SXM...  Off  | 00000000:00:04.0 Off |                    0 |
| N/A   41C    P0    50W / 400W |      0MiB / 40536MiB |      0%      Default |
|                               |                      |             Disabled |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

このコマンドが失敗した場合、次の点を確認します。

  • VM に GPU がアタッチされているかどうかを確認する。

    NVIDIA の PCI デバイスがあるかどうかを確認するには、次のコマンドを使用します。

    sudo lspci | grep -i "nvidia"

  • ドライバのカーネル バージョンと VM カーネル バージョンが同じであることを確認する。

    • VM のカーネル バージョンを確認するには、uname -r を実行します。
    • ドライバのカーネル バージョンを確認するには、sudo apt-cache show linux-modules-nvidia-NVIDIA_DRIVER_VERSION-gcp を実行します。

    バージョンが一致しない場合は、新しいカーネル バージョンに VM を再起動します。

Windows Server

Windows Server インスタンスに接続し、管理者として PowerShell ターミナルを開き、次のコマンドを実行してドライバが適切に稼働していることを確認します。

&"C:\Program Files\NVIDIA Corporation\NVSMI\nvidia-smi.exe"

出力は次のようになります。

Mon Oct 11 12:13:10 2021
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 462.31       Driver Version: 462.31       CUDA Version: 11.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name            TCC/WDDM | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  Tesla T4           WDDM  | 00000000:00:04.0 Off |                    0 |
| N/A   50C    P8    18W /  70W |    570MiB / 15360MiB |      2%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A       408    C+G   Insufficient Permissions        N/A      |
|    0   N/A  N/A      3120    C+G   ...w5n1h2txyewy\SearchUI.exe    N/A      |
|    0   N/A  N/A      4056    C+G   Insufficient Permissions        N/A      |
|    0   N/A  N/A      4176    C+G   ...y\ShellExperienceHost.exe    N/A      |
|    0   N/A  N/A      5276    C+G   C:\Windows\explorer.exe         N/A      |
|    0   N/A  N/A      5540    C+G   ...in7x64\steamwebhelper.exe    N/A      |
|    0   N/A  N/A      6296    C+G   ...y\GalaxyClient Helper.exe    N/A      |
+-----------------------------------------------------------------------------+

次のステップ