LoginSignup
6

More than 1 year has passed since last update.

RTX30XX 系で Tensorflow を安定動作させる

Last updated at Posted at 2021-07-30

簡単にまとめると

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 の無効化。このへんを参照。

/etc/modprobe.d/blacklist-nouveau.conf
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)

は不要。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6