簡単にまとめると
CUDA 11.3 のインストール
cuDNN 8.2 系のインストール
pip install tensorflow==2.5.0
tf.test.is_gpu_available()
で確認
私の環境
OS Ubuntu 20.04LTS
Device RTX3060
クリーンインストール直後を想定してます。
これまでの問題
CUDA 11.0 cuDNN 8.0.4 Tensorflow 2.4.0 で tf.keras を使ってCNNしたいが、なぜか Dense は動くのに Conv2D が動かない。魔法のコード(記事最下段)を入力してなんとなく動くようになっても ptxas? のエラーコードが邪魔だし遅い。
今回このあたりの解決を確認済み。
前準備
アップデート
sudo apt update
sudo apt upgrade
nouveau の無効化。このへんを参照。
blacklist nouveau
options nouveau modeset=0
sudo update-initramfs -u
再起動して lsmod | grep -i nouveau
して nouveau 無効化を確認。何も出てこなかったらOK。
一応いれとく
sudo apt install build-essential
CUDA Driver & CUDA 11.3 のインストール
以下ページをめちゃくちゃ参考にしています。なんならここをみてやったほうがいいかも。ただ、インストールするバージョンだけ違うので注意。
NVIDIA グラフィックスドライバ,NVIDIA CUDA ツールキット 11.0,NVIDIA cuDNN 8.0.5 のインストール(Ubuntu 上) 金子邦彦研究室
リポジトリの登録
sudo wget -O /etc/apt/preferences.d/cuda-repository-pin-600 https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/7fa2af80.pub
sudo add-apt-repository "deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /"
CUDAのインストール。ドライバも一緒に入ります。
sudo apt -y install cuda-11-3
インストールが終わったら、以下でパスを通す。
export CUDA_PATH=/usr/local/cuda-11.3
echo 'export CUDA_PATH=/usr/local/cuda-11.3' >> ${HOME}/.bashrc
export LD_LIBRARY_PATH=/usr/local/cuda-11.3/lib64:${LD_LIBRARY_PATH}
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-11.3/lib64:${LD_LIBRARY_PATH}' >> ${HOME}/.bashrc
export PATH=/usr/local/cuda-11.3/bin:${PATH}
echo 'export PATH=/usr/local/cuda-11.3/bin:${PATH}' >> ${HOME}/.bashrc
再起動。ドライバの動作確認
nvidia-smi
Fri Jul 30 15:11:59 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 GeForce ... On | 00000000:01:00.0 Off | N/A |
| 0% 49C P8 16W / 170W | 732MiB / 12053MiB | 7% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| 0 N/A N/A 966 G /usr/lib/xorg/Xorg 100MiB |
| 0 N/A N/A 1503 G /usr/lib/xorg/Xorg 302MiB |
| 0 N/A N/A 1672 G /usr/bin/gnome-shell 54MiB |
| 0 N/A N/A 2191 G ...AAAAAAAAA= --shared-files 93MiB |
| 0 N/A N/A 2444 G /usr/lib/firefox/firefox 166MiB |
| 0 N/A N/A 2757 G /usr/lib/firefox/firefox 2MiB |
+-----------------------------------------------------------------------------+
右上の CUDA Version: 11.4
は関係ないので無視。
nvcc の確認もしましょう。
nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2021 NVIDIA Corporation
Built on Mon_May__3_19:15:13_PDT_2021
Cuda compilation tools, release 11.3, V11.3.109
Build cuda_11.3.r11.3/compiler.29920130_0
cuDNNのインストール
リポジトリの登録。
cd /tmp
wget https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu2004/x86_64/nvidia-machine-learning-repo-ubuntu2004_1.0.0-1_amd64.deb
sudo dpkg -i nvidia-machine-learning-repo-ubuntu2004_1.0.0-1_amd64.deb
sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/7fa2af80.pub
sudo apt update
入れれるパッケージ名を確認
apt-cache search cudnn
確認したパッケージをインストール
sudo apt -y install libcudnn8 libcudnn8-dev
TensorFlow 2.5.0 の動作には cuDNN 8.2系が必要みたいで、現時点(2021/7/30)時点では上のコマンドで8.2.2が入るため問題ないですが、将来的に必ずしもこのコマンドで所望のバージョンが得られるかはわかりません。
インストールされたパッケージリストの取得
dpkg -l | grep cuda
Anaconda のインストール
Pythonの仮想環境として Anaconda を使います。なんでもいいというか、むしろ pyenv のほうが望ましいかもしれませんが、Anacondaに慣れてしまった&問題なく動いているためこれでいきます。
ホームページからLinuxインストーラをダウンロードし、ダウンロードしたディレクトリでシェルを実行します。
bash Anacondaうんたらかんたら.sh
ぜったいに sudo でしないこと。
あとはぽちぽち指示通りにインストールするだけでOK。ターミナルを再起動すると頭に (base)
とついて、Anacondaが動いてることを確認できます。
環境を作成してTensorflowのインストール
仮想環境の作成
conda create -n tensorflow python=3.8
できたら conda activate tensorflow
して tensorflow 環境に入る。
conda activate tensorflow
Anaconda では conda コマンドを使用してあれこれパッケージを入れるのが普通ですが、私はこれを仮想環境としてしか使っていないので、普通に pip で入れます。一応それぞれちゃんと Anaconda のものが動いていることを確認。
which pip
which python
anaconda3 の文字があればOK。
そしたら、pip でインストール
pip install numpy pillow matplotlib opencv-contrib-python
pip install tensorflow==2.5.0 tensorflow_datasets tensorflow-hub
できたら、python
コマンドでPython REPLを起動して、
import tensorflow as tf
tf.test.is_gpu_available()
でGPUが使えるか確認。True
がでたらOK。
## 備考
- CUDA 11.1以上でないとRTX30series はサポートされないらしい。
- 公式HPに記載の Tensorflow 2.4.0 は CUDA 11.0は動くけど CUDA 11.1 は動かないらしい。
- 今回の方法でやれば、RTX30series を CUDA 11.0、cuDNN 8.0.4、Tensorflow 2.4.0 で無理やり動かしたときに必要な
from tensorflow.compat.v1 import ConfigProto
from tensorflow.compat.v1 import InteractiveSession
config = ConfigProto()
config.gpu_options.allow_growth = True
session = InteractiveSession(config=config)
は不要。