目次

  1. Nvidia Driver関連を安全に導入するための3つのコツ
  2. 導入前の準備
  3. Nvidia-Driverのインストール
  4. Cudaのインストール
  5. CuDNNのインストール
  6. 想定されるエラー集

1. Nvidia Driverを安全に導入するための3つのコツ

- Nvidia-Driverをインストール後に、必ず再起動をすること

- cudaをインストールする際には,cudaのバージョンを指定してインストールすることsudo apt-get -y install cuda-**-*

- TensorflowまたはKerasを使用される方はTensorflow GPUの公式ドキュメントを参照し、cuDNNとcuda, Tensorflow-gpuのバージョンを合わせること。

注意 tensorflowは日本語のチュートリアルだと、Linux + GPUでtensorflow 2.2がないですが、英語版にすると見つけられます^^

2. 導入前の準備

まず、はじめにnvidia, cuda関連のライブラリがインストールされているかを確認します。

$ dpkg -l | grep nvidia
$ dpkg -l | grep cuda

そして、それらをまず削除し、依存関係のないクリーンな状態にします。

(bash)
$ sudo apt remove --purge "nvidia-*" -y && sudo apt autoremove
$ sudo apt remove --purge "cuda-*" -y && sudo apt autoremove
$ sudo apt remove --purge "libcudnn*" -y && sudo apt autoremove
$ sudo apt remove --purge "libnvidia-*" -y && sudo apt autoremove
(fish)
$ sudo apt remove --purge "nvidia-*" -y ; sudo apt autoremove
$ sudo apt remove --purge "cuda-*" -y ; sudo apt autoremove
$ sudo apt remove --purge "libcudnn*" -y ; sudo apt autoremove
$ sudo apt remove --purge "libnvidia-*" -y ; sudo apt autoremove

3. Nvidia-Driverのインストール

現在お使いのUbuntu OSに最適なNvidia-Driverを以下のコマンドで見つけます。

$ sudo ubuntu-drivers devices
$ sudo apt install nvidia-driver-***

上記のコマンドで推奨されていたのは440(2020年9月15日時点)でしたが, 同時期に同じVersionのUbuntu OSでGoogle Colab で450が採用されていたため、450を採用しました。

(以下のrebootがコツの1つ目です。)

$ reboot
$ nvidia-smi

注意 : nvidia-smiにおける Driver VersionCUDA Versionは全く当てになりません。信用できるのは、nvidia-smiのバージョンのみです。


4. Cudaのインスール

- バージョンをチェックします

ここからcudaのバイナリファイルをインストールします。

- 注意1 : Linux, X86_64, Ubuntu, 18.04, deb(network)を選択
- 注意2 : 指示の最終行のsudo apt-get install cudaは誤りです。
- 注意3 : 最新のTensorflowでさえcuda10.2はまだサポートしていないため、10.1をインストールすることを推薦します (参照元

OS、64bitか32bitか、LinuxだとDistribution、DistributionのVersion, インストール方法を下の写真のように選択するとにこんな感じになります。

screen_for_install_cuda

最後の行は要注意です。DefaultのTutorialが間違っています。(何度もここで苦しめられました。)
もし間違って以下のコマンドを打ってしまったら、2の作業からやり直しになるだけなので心配しなくて大丈夫です。

間違い

sudo apt-get -y install cuda

正解

sudo apt-get -y install cuda-**-*
ex) 
sudo apt-get -y install cuda-10-1
sudo apt-get -y install cuda-9-2

このコマンドsudo apt-get -y install cudaは自動的に最新のcudaをダウンロードするように設定されているので要注意です。

5. CuDNNのインストール

ここからCuDNNをダウンロード可能です ダウンロード前に必ずNvidia開発者アカウントへの登録が必須です。

- 注意 : これら3つのファイルが必要です。(licudnn7_7**.deb, libcudnn7-dev_**.deb, libcudnn7-doc_**.deb)
$ sudo dpkg -i libcudnn7_**.deb
$ sudo dpkg -i libcudnn7-dev_**.deb
$ sudo dpkg -i libcudnn7-doc_**.deb
これで作業は終了です!
思いのままに機械学習を走らせてください!

6. 想定されるエラー集

- $ nvidia-smiのコマンドが存在しないと言われる

PCを再起動してください。(nvidia-driverをインストール後) $ sudo reboot

- $ sudo apt install --fix-brokenの際にエラーのループが生じる

vidia-driver-440をインストール後に cuda10.2をインストールしようとしたところ、cuda10.2がnvidia-driver-450と依存関係があり、ループが生じた

$ sudo apt install --fix-broken

Reading package lists... Done
Building dependency tree
Reading state information... Done
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies:
 cuda-drivers : Depends: cuda-drivers-450 (= 450.36.06-1) but it is not going to be installed
 libnvidia-decode-450 : Depends: libnvidia-compute-450 (= 450.36.06-0ubuntu1) but it is not going to be installed
 nvidia-compute-utils-450 : Depends: libnvidia-compute-450 but it is not going to be installed
 nvidia-driver-450 : Depends: libnvidia-compute-450 (= 450.36.06-0ubuntu1) but it is not going to be installed
                     Recommends: libnvidia-compute-450:i386 (= 450.36.06-0ubuntu1) but it is not installable
                     Recommends: libnvidia-decode-450:i386 (= 450.36.06-0ubuntu1) but it is not installable
                     Recommends: libnvidia-encode-450:i386 (= 450.36.06-0ubuntu1) but it is not installable
                     Recommends: libnvidia-ifr1-450:i386 (= 450.36.06-0ubuntu1) but it is not installable
                     Recommends: libnvidia-fbc1-450:i386 (= 450.36.06-0ubuntu1) but it is not installable
                     Recommends: libnvidia-gl-450:i386 (= 450.36.06-0ubuntu1) but it is not installable
 nvidia-utils-450 : Depends: libnvidia-compute-450 but it is not going to be installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).

解答 sudo apt-get -o Dpkg::Options::="--force-overwrite" install --fix-broken -y

nvidia-driverのバージョン

- 使用しているPC

> GeForce RTX 2080-Ti 
> > OS : Ubuntu 18.04.4 LTS (Bionic Beaver)
> Nvidia-Driver : 450
> Cuda : 10.1
> CuDNN : 7.6.3.30-1+cuda10.1
> Python : 3.7.5
> PyTorch : 1.5.1+cu1
> Torchvision : 0.6.1+cu1
> Tensorflow : 2.2.0

- Google Colab

> Version of nvidia-driver in pre-installed Google-Colab is 450 on 2020/09/11
> >OS              : Ubuntu 18.04.3 LTS (Bionic Beaver)
> Nvidia-Driver   : 450
> Cuda            : 10.1
> CuDNN           : 7.65.32-1+cuda10.1
> Python : 3.6.9
> PyTorch         : 1.5.1+cu101
> Torchvision     : 0.6.1+cu101
> Tensorflow : 2.2.0

- 上記の確認方法

$ cat /etc/os-release ## Only works on Ubuntu OS
$ dpkg -l | grep nvidia
$ dpkg -l | grep cuda
$ dpkg -l | grep libcudnn
$ print(torch.__version__)
$ print(torchvision.__version__)
$ print(tensorflow.__version__)
$ ! python --version

まとめ

Nvidia-Driverのメモ書きを少し丁寧にまとめました。環境を再現することは研究を再実験する上でのスタートとなるので、 Google Colabでも推奨されているように、Tensorflow, Cuda, CuDNNのバージョンを必ずJupter NotebookやColab Notebookに記載することが後からコードを見た人が再現するために重要だと再認識させられました。 皆様もぜひ参考にしていただければと思います。