#概要
TF2.4を入れていたUbuntu18.05のAnacondaの具合が悪い。
fit()中のエラーが解消できなくなり、OSをUbunto20.04にして再セットアップした。
- 実施時期: 2021年5月
- OS: Ubuntu20.04LTS (Linux ryzen 5.8.0-50-generic #56~20.04.1-Ubuntu)
- CPU: Ryzen 5600X
- GPU: GeForce RTX3070
- Python: 標準のPython3
##経緯
Anacondaの問題だったので今回はAnacondaは使わない。
前回UpしたとおりcondaでTF2.4.1が入るようになったけど、同時に入るCUDAが依然として10.1のままだったり、怪しい部分があるから。
RTX 30X0 + TF2.4.1 on Ubuntu20.04について、Stack Overflowにスレを立てたけど大した情報が集まらなかった。
https://stackoverflow.com/questions/67364950/cuda-and-cudnn-version-conflict-against-tensorflow2-4-1
##前準備
CUDA対応NVIDIAボードが刺さっていることを確認する。
$ lspci | grep -i nvidia
07:00.0 VGA compatible controller: NVIDIA Corporation Device 2484 (rev a1)
07:00.1 Audio device: NVIDIA Corporation Device 228b (rev a1)
##Nvidia Driverのインストール
CUDAをインストールするとき自動的にドライバは一緒に入るが、バーションがr450になるかもしれず、RTX 3070はr457以降が対応しているので、あえて明示的に最新版のr460を入れる。
$ sudo ubuntu-drivers devices
== /sys/devices/pci0000:00/0000:00:03.1/0000:07:00.0 ==
modalias : pci:v000010DEd00002484sv00001462sd00003909bc03sc00i00
vendor : NVIDIA Corporation
driver : nvidia-driver-460 - distro non-free recommended
driver : xserver-xorg-video-nouveau - distro free builtin
$ sudo apt install --no-install-recommends nvidia-driver-460
##cuda, cuDNNのサポート表を確認
TFオフィシャルの手順はUbuntu16, 18のみでUbuntu 20向けには書かれていない。
Ubuntu, NVIDIA driver, cuda, cuDNNの各バージョンは厳密に合わせておく必要があるので下表で確認する。
TF2.4.1の要求から本PCの構成で選択したのは下記の組み合わせ
Driver: r460
cuda: CUDA Toolkit 11.0 Update 1 Downloads
cuDNN: cudnn-11.0-linux-x64-v8.0.4.30.tgz
##cudaのインストール
下記のrunfile[local]を行う。deb[local]でうまく行かなかったため。
$ wget https://developer.download.nvidia.com/compute/cuda/11.0.3/local_installers/cuda_11.0.3_450.51.06_linux.run
$ sudo sh cuda_11.0.3_450.51.06_linux.run # ①
$ sudo sh ./cuda_11.0.3_450.51.06_linux.run --toolkit --silent –override # ②
①を実行したときに、警告‘Existing package manager installation of the driver found.’ が表示され、継続せずに手動で削除して再度実行するように言われた。どのDriverのことなのか書かれていなかったが多分先に入れたr460のことだと思う。
r460はそのままにしたいので、①は再実行せず下記をおこなった。
$ sudo sh ./cuda_11.0.3_450.51.06_linux.run --toolkit --silent –override # ②
実行後、/usr/local/cuda-11.0/bin フォルダができていることを確認してbashrcに以下を追加する。
export PATH=/usr/local/cuda-11.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRAR
##cuDNNのインストール
予め下記の cudnn-11.0-linux-x64-v8.0.4.30.tgz ファイルをダウントードしておく。
Download cuDNN v8.0.4 (September 28th, 2020), for CUDA 11.0
cuDNN Library for Linux [x86_64]
cd Downloads
tar -xzvf cudnn-11.0-linux-x64-v8.0.4.30.tgz
sudo cp cuda/include/cudnn*.h /usr/local/cuda/include
sudo cp -P cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
sudo apt update
##Tensorflow2.4.1のインストール
まず、仮想環境などを作成するためTFオフィシャルのとおりに実行する。
なお、Documents/ML/tf-test1に仮想環境test1を作成しそこにTFを入れる。
sudo apt install python3-dev python3-pip python3-venv
cd Documents/ML/tf-test1
python3 -m venv test1
source test1/bin/activate
pip install --upgrade pip
pip list
pip install --upgrade tensorflow
pip install pandas
pip install matplotlib
pip install seaborn
pip install plotly
pip install jupyterlab
pip install scipy
pip install scikit-learn
pip install gpyopt
pip install trax==1.3.7
Pythonを起動し下記でTFがGPUを認識していることを確認する。
import tensorflow as tf
print(tf.__version__)
print(tf.config.list_physical_devices('GPU'))
print(tf.test.gpu_device_name())