Ubuntu 20.04 cuda cuDNN anaconda 機械学習 環境構築　



Ubuntu 20.04 での cuda cuDNN driver インストールしてanaconda上で機械学習環境を作成について解説します。Ubuntuで機械学習環境を作ろうとしたときネットの情報の海にのまれ苦戦したので、自分用にまとめておきます。GPUはrtx3070です。

<font color="Red">7/27 追記　tensorflowのインストールだけでなく、tensorflow-gpuもインストールする必要でしたので追記させていただきます。
(tensorflowとtensorflow-gpuの関係ちゃんと把握してない。。。)
tensorflowのバージョンが２でCNNを使うときに出るエラーの対処についても追記しました。

#全体の流れ
事前準備

① BIOSでsecurity boot を disable にする
② 今までに入っていた cuda driver cuDNN の削除

手順
①cuda cuDNN tensorflowのバージョン対応関係の確認
②nvidia-driverのインストール
③cudaのインストール
④cuDNNのインストール
⑤PATHを通す
⑥anacondaのインストール
⑦tensorflowのインストール
⑧動作確認

#事前準備
まずはterminal上で

```
$ sudo apt update
$ sudo apt upgrade
```

###①BIOSでsecurity boot を disable にする

パソコンを再起動させ、起動時にdeleatキーを連打するとBIOS画面に入れるので、security bootの項目をdisableにします。

###② 今までに入っていた cuda driver cuDNN の削除
すでに色々試して入れてみたけど上手く環境構築できず、一旦削除したいという方は以下でcuda,cuDNN,nvidia driverを削除することができます

```
$ sudo apt-get purge 'nvidia-*'
$ sudo apt-get purge 'cuda-*'
$ sudo apt-get purge "libcudnn8*"
$ sudo apt autoremove
$ sudo apt update
$ sudo apt upgrade
```
削除するcuDNNのバージョンの確認ついては

```
$ dpkg -l | grep "cudnn"
```
で確認することができます。上記ではcuDNNのバージョンが８となっています。この値は適宜変更してくだい。



#手順
###①cuda cuDNN tensorflowのバージョン対応関係の確認
https://www.tensorflow.org/install/source
上のリンクからからインストールするcuda cuDNN tensorflowのバージョンの確認をしてください。
###②nvidia-driverのインストール
まず推奨のドライバのバージョンを以下で確認します。

```
$ ubuntu-drivers devices
```
表示されるドライバの中でrecommendedとなっているのがインストールするドライバのバージョンとなります。

```
$ sudo apt install nvidia-driver-XXX
```

上記でドライバをインストールします。XXXに先程確認した推奨のバージョンを入れます
例）sudo apt install nvidia-driver-470

ここで再起動を一旦します。
再起動後、

```
$ nvidia-smi
```
で問題なく動作してるか確認します。表みたいなのが表示されればOKです。

###③cudaのインストール
公式が公開している手順通りにインストールします。
https://developer.nvidia.com/cuda-toolkit-archive

上記のURLから①で確認したバージョンのインストールページに移動し、Operating System、Architecture、Distribution、VersionInstaller、Typeを選択することでインストールするためのコードが表示されます。typeはdeb(local)かdeb(network)ならどちらでも構わないそうです。

表示されたコードをterminal上で一行ずつ実行します。
ただし、最後の一行
sudo apt-get -y install cuda
は
sudo apt-get -y install cuda-11-0
のようにバージョンを指定して実行します。

###④cuDNNのインストール
　まず公式サイトから所望のバージョンのruntimeとdeveloperの両方のファイルをダウンロードする
　https://developer.nvidia.com/rdp/cudnn-download

　terminal上でダンロード先のディレクトリに移動し、公式で公開せれている手順(2.3.2項(2021/7/2現在))に則りインストールします。
　https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#installlinux-deb


###⑤PATHを通す
homeにある隠しファイル「.bashrc」に以下の記述を加えて保存します。隠しファイルを表示させ、適当なテキストエディターで開き、以下をコピペすればOKです。

export PATH="/usr/local/cuda/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"

加筆する場所はよくわからなかったので最後に付け加えました。
ここでもう一度再起動します。

うまく行っていれば nvcc -V でCUDAのバージョンが確認できます。

```
$ nvcc -V
```

###⑥anacondaのインストール

https://www.anaconda.com/products/individual
上記のURLから対応するOSのものをダウンロード(保存)します。
terminal上でダウンロードしたディレクトリ先に行き

```
$ bash Anaconda3-2020.07-Linux-x86_64.sh
```
を実行すします。ただし「Anaconda3-2020.07-Linux-x86_64.sh」の部分は自分がダウンロードしたanacondaのファイル名に置き換えるようにしてください。
　
実行すると同意確認がされるので、問題なければenterキー若しくはyesで進めます。
インストールが終わったら、再度terminalを立ち上げ、

```
$ anaconda-navigater
```
でanaconda-navigaterが立ち上がるか確認します。
参考：https://www.kkaneko.jp/tools/ubuntu/anaconda.html

###⑦tensorflowのインストール
anaconda-navigater上で適当にbase(root)以外の環境を作り、
その環境のanaconda-terminalで①で確認したバージョンのtensorflowをインストールします。

```
$ pip install tensorflow==X.X
```
例)pip install tensorflow==2.4

<font color="Red">追記　tensorflowと同様にtensorflow-gpuもインストールします。
例)pip install tensorflow-gpu==2.4

###⑧動作確認
jupyterlabやjupyternotebookを立ち上げ、

```
from tensorflow.python.client import device_lib
device_lib.list_local_devices()
```
を実行し、GPUの表記があれば成功です
お疲れ様でした。

###追記
```
#tensorflow2でcnnを使うときエラーが出たら以下を追記するとうまく行く
import tensorflow.compat.v1 as tf
config = tf.compat.v1.ConfigProto()
config.gpu_options.allow_growth = True
tf.compat.v1.keras.backend.set_session(tf.compat.v1.Session(config=config))
```

***
参考サイト
https://qiita.com/Hachimaki/items/a6dfc3dce1663cdda791
https://k-hyoda.hatenablog.com/entry/2020/07/09/223907