1 つ以上の GPU を使用するインスタンスを作成したら、アプリケーションがデバイスにアクセスできるようにするため、システムに NVIDIA デバイス ドライバが必要となります。仮想マシン(VM)インスタンスに十分な空きディスク容量があることを確認します(新しい VM を作成する場合は、ブートディスクに 30 GB 以上を選択してください)。
このドキュメントでは、公開イメージまたはカスタム イメージを使用して作成された VM に NVIDIA の独自ドライバをインストールする方法について説明します。
仮想ワークステーション用の GRID ドライバをインストールするには、仮想ワークステーション用の GRID ドライバのインストールをご覧ください。
始める前に
- このガイドのコマンドラインの例を使用する場合、以下を行ってください。
- gcloud コマンドライン ツールの最新バージョンをインストールするか、最新バージョンに更新します。
- デフォルトのリージョンとゾーンを設定します。
- このガイドの API の例を使用する場合、API アクセスを設定します。
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 ツールキットをインストールする手順は次のとおりです。
必要な最小ドライバをサポートする CUDA ツールキットを選択します。
ドライバをインストールする VM に接続します。
VM に CUDA ツールキットをダウンロードしてインストールします。次の表に、推奨される各ツールキットのインストール ガイドを示します。ツールキットをインストールする前に、インストール ガイドにあるインストール前の手順を完了しておいてください。
GPU のタイプ 推奨される CUDA ツールキットの最小バージョン インストール手順 - NVIDIA A100
- Linux: CUDA ツールキット 11.1
- Windows: CUDA ツールキット 11.2
- Linux: CUDA 11.1 インストール ガイド
- Windows: CUDA 11.2 インストール ガイド
- NVIDIA T4
- NVIDIA V100
- NVIDIA P100
- NVIDIA P4
- NVIDIA K80
- Linux: CUDA ツールキット 10.1 update2
- Windows: CUDA ツールキット 10.1 update2
- Linux: CUDA 10.1 インストール ガイド
- Windows: CUDA 10.1 インストール ガイド
例
以下の手順では、一部のオペレーティング システムに CUDA 11 と関連する NVIDIA® GPU ドライバをインストールする方法を示します。
CentOS / RHEL
ドライバをインストールする VM に接続します。
最新のカーネル パッケージをインストールします。必要に応じて、このコマンドはシステムの再起動も行います。
sudo yum clean all sudo yum install -y kernel | grep -q 'already installed' || sudo reboot
前の手順でシステムが再起動された場合は、VM に再接続します。
カーネルヘッダと開発パッケージをインストールします。
sudo yum install -y kernel-devel-$(uname -r) kernel-headers-$(uname -r)
epel-release
リポジトリをインストールします。このリポジトリには DKMS パッケージが含まれています。これは CentOS に NVIDIA ドライバをインストールするために必要です。CentOS 7/8 と RHEL 7
sudo yum install epel-release
RHEL 8 のみ
sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
yum-utils
をインストールします。sudo yum install yum-utils
CUDA ツールキットのドライバ リポジトリを選択し、それを VM に追加します。
CentOS / RHEL 8
sudo yum-config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel8/x86_64/cuda-rhel8.repo
CentOS / RHEL 7
sudo yum-config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-rhel7.repo
Yum キャッシュを消去します。
sudo yum clean all
CUDA をインストールします。
CentOS / RHEL 8
sudo dnf -y module install nvidia-driver:latest-dkms sudo dnf -y install cuda
CentOS / RHEL 7
sudo yum -y install nvidia-driver-latest-dkms cuda
NVIDIA ドライバをインストールします。このコマンドを実行すると CUDA 11 がインストールされます。
sudo yum -y install cuda-drivers
SLES
ドライバをインストールする VM に接続します。
最新のカーネル パッケージをインストールします。必要に応じて、このコマンドはシステムの再起動も行います。
sudo zypper refresh sudo zypper up -y kernel-default | grep -q 'already installed' || sudo reboot
前の手順でシステムが再起動された場合は、インスタンスに再接続します。
CUDA ツールキットのドライバ リポジトリを選択し、それを VM に追加します。
sudo rpm --import https://developer.download.nvidia.com/compute/cuda/repos/sles15/x86_64/7fa2af80.pub sudo zypper install https://developer.download.nvidia.com/compute/cuda/repos/sles15/x86_64/cuda-11.0.3-1.x86_64.rpm
Zypper を更新します。
sudo zypper refresh
NVIDIA ドライバが含まれる CUDA をインストールします。
sudo zypper install cuda
Ubuntu
ドライバをインストールする VM に接続します。
最新のカーネル パッケージをインストールします。
sudo apt install linux-headers-$(uname -r)
CUDA ツールキットのドライバ リポジトリを選択し、VM にインストールします。Ubuntu のバージョンに応じた手順に沿ってください。
Ubuntu 20.04
Ubuntu 20.04 ドライバ リポジトリをダウンロードします。
curl -O https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
リポジトリを移動します。
sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
キーを取得します。
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/ /"
パッケージ リストを更新します。
sudo apt update
NVIDIA ドライバが含まれる CUDA をインストールします。
sudo apt -y install cuda
Ubuntu 18.04
Ubuntu 18.04 ドライバ リポジトリをダウンロードします。
curl -O https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
リポジトリを移動します。
sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
キーを取得します。
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/ /"
パッケージ リストを更新します。
sudo apt update
NVIDIA ドライバが含まれる CUDA をインストールします。
sudo apt -y install cuda
Ubuntu 16.04
Ubuntu 16.04 ドライバ リポジトリをダウンロードします。
curl -O https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-ubuntu1604.pin
リポジトリを移動します。
sudo mv cuda-ubuntu1604.pin /etc/apt/preferences.d/cuda-repository-pin-600
キーを取得します。
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
リポジトリを追加します。
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/ /"
パッケージ リストを更新します。
sudo apt update
NVIDIA ドライバが含まれる CUDA をインストールします。
sudo apt -y install cuda
Windows Server
ドライバをインストールするインスタンスに接続します。
R452 ブランチ: NVIDIA 452.77 以上のドライバを含む
.exe
インストーラ ファイルをダウンロードして、インスタンスに保存します。ほとんどの Windows Server インスタンスでは、次のオプションのいずれかを使用できます。- NVIDIA ドライバを含む CUDA ツールキットをダウンロード
- NVIDIA ドライバのみダウンロード
たとえば、Windows Server 2019 では、管理者として PowerShell ターミナルを開き、
Invoke-WebRequest
コマンドを使用して、必要なドライバのインストーラをダウンロードできます。Invoke-WebRequest
は PowerShell 3.0 以降で使用できます。Invoke-WebRequest https://developer.download.nvidia.com/compute/cuda/11.2.0/network_installers/cuda_11.2.0_win10_network.exe -O cuda_11.2.0_win10_network.exe
.exe
インストーラを実行します。たとえば、管理者として PowerShell ターミナルを開き、次のコマンドを実行します。PS C:\> .\\cuda_11.2.0_win10_network.exe
セキュアブートを使用する VM に GPU ドライバをインストールする
セキュアブートを有効にした VMS は、すべてのカーネル モジュールを、システムが信頼する鍵で署名する必要があります。現在、NVIDIA ドライバのインストールでは、デフォルトのセキュアブート設定を使用する Ubuntu 18.04 と 20.04 のみがサポートされます。さらに多くのオペレーティング システムに対応中です。
Ubuntu 18.04 and 20.04
ドライバをインストールする VM に接続します。
リポジトリを更新します。
sudo apt-get update
最新の 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
のようなバージョン文字列です。カーネル モジュール パッケージと、対応する NVIDIA ドライバをインストールします。
sudo apt install linux-modules-nvidia-${NVIDIA_DRIVER_VERSION}-gcp nvidia-driver-${NVIDIA_DRIVER_VERSION}
このコマンドでパッケージが見つからないとコマンドが失敗した場合、最新の nvidia ドライバがリポジトリに存在しない可能性があります。前の手順に戻り、以前のドライバ バージョンを確認します。
NVIDIA ドライバがインストールされていることを確認します。場合によっては VM を再起動する必要があります。
NVIDIA パッケージ リポジトリを使用するように APT を構成します。
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 EOLsoftware-properties-common
をインストールします。これは、Ubuntu の最小イメージを使用している場合に必要です。sudo apt install software-properties-common
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/ /"
互換性のある 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
のようなバージョン文字列です。前の手順で特定したバージョンで CUDA ドライバをインストールします。
sudo apt install cuda-drivers-${NVIDIA_DRIVER_VERSION}=${CUDA_DRIVER_VERSION} cuda-drivers=${CUDA_DRIVER_VERSION}
省略可:
dkms
のパッケージを保持します。セキュアブートを有効にしたら、すべてのカーネル モジュールを読み込むために署名する必要があります。
dkms
によってビルドされたカーネル モジュールは、デフォルトでは適切に署名されていないため、VM で動作しません。これは省略可能な手順ですが、今後、他のdkms
パッケージが誤ってインストールされるのを防ぐのに役立ちます。dkms
パッケージを保持するには、次のコマンドを実行します。sudo apt-get remove dkms && sudo apt-mark hold dkms
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}
CUDA のインストールを確認します。
sudo nvidia-smi
/usr/local/cuda/bin/nvcc --version
GPU ドライバのインストールの確認
ドライバのインストール手順が完了したら、ドライバのインストールと初期化が正しく行われたことを確認します。
Linux
Linux インスタンスに接続し、nvidia-smi
コマンドを使用して、ドライバが正常に稼働していることを確認します。
sudo nvidia-smi
出力は次のようになります。
Wed Oct 28 21:34:28 2020 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 455.32.00 Driver Version: 455.32.00 CUDA Version: 11.1 | |-------------------------------+----------------------+----------------------+ | 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 A100-SXM4-40GB Off | 00000000:00:04.0 Off | 0 | | N/A 40C P0 52W / 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 を再起動します。
- VM のカーネル バージョンを確認するには、
Windows Server
Windows Server インスタンスに接続し、管理者として PowerShell ターミナルを開き、次のコマンドを実行してドライバが適切に稼働していることを確認します。
&"C:\Program Files\NVIDIA Corporation\NVSMI\nvidia-smi.exe"
出力は次のようになります。
Thu Feb 4 21:21:39 2021 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 460.89 Driver Version: 460.89 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 P4 TCC | 00000000:00:04.0 Off | 0 | | N/A 31C P8 7W / 75W | 8MiB / 7611MiB | 0% Default | | | | N/A | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=============================================================================| | No running processes found | +-----------------------------------------------------------------------------+
次のステップ
- Compute Engine の GPU について学習する。
- GPU のパフォーマンスをモニタリングするには、GPU パフォーマンスのモニタリングをご覧ください。
- GPU ホスト メンテナンスを処理するには、GPU ホスト メンテナンス イベントの処理をご覧ください。
- GPU のパフォーマンスを最適化するには、GPU パフォーマンスの最適化をご覧ください。