オッサンはDesktopが好き

自作PCや機械学習、自転車のことを脈絡無く書きます

nvidia-390がインストール出来なくなったので,nvidia-410でDeep Learning開発環境を再構成してみる

Ubuntuがログインループになりました(泣)
GPU関係の更新で,互換が取れなくなった様です.
Deep Learning関係のライブラリもかなり更新されているようなので,この機(?)に更新することにしました.

症状

きっかけは,「ソフトウェアの更新」のうっかりクリックでした.
大きな更新は掛けなかったつもりなのですが,,,やはり安易に更新するものではないですね.

nvidiaのドライバを消すとログインできたので,これを入れなおすだけで済むかと思ったのですが,悲劇はここからでした.
なんと,nvidia-390をインストール出来ない,,,
一時的なのか恒常的なのか,リポジトリから除外されたのです.

Deep Learningの開発構築には,nvidiaドライバ,CUDA,tensorflowのver.互換を整えることが必須です.
nvidiaドライバの更新は,CUDAとtensorflowを含めた環境を作りなおす事を意味します.
ライブラリが変わると今まで書いたソースが動かなくなる可能性がありますし,何より面倒です.
極力,更新は避けたかったのですが,,,仕方がないですね.

ちなみに,この記事を書いている今現ではnvidia-390がレポジトリから確認できます.
何だったのかな,,,

f:id:changlikesdesktop:20190814053025p:plain:w400

ver.

今まで使っていた↓↓↓から

↓↓↓に更新します.

ちなみに,何度か入れなおしてやっとこの組み合わせに落ち着きました.
実質,一日仕事でした.

いざ更新

古いnvidiaドライバとCUDAを削除

sudo apt-get --purge remove nvidia*  
sudo apt-get --purge remove cuda*
sudo apt autoremove

上記で残っている場合があるので,HDD上からファイルを削除します.

sudo rm /usr/local/cuda
sudo rm -r /usr/local/cuda-*

nvidiaドライバのインストール

sudo add-apt-repository ppa:graphics-drivers/ppa  
sudo apt update  
sudo apt-get install nvidia-410  
reboot

再起動後に無事にインストールされたか確認します.
(インストールに失敗していたら,ログインループになったり画面の解像度がおかしくなると思います)

nvidia-smi

f:id:changlikesdesktop:20190819133939p:plain:w400

tensorflowのインストール

現在インストールされているtensorflowの確認

pip3 list

f:id:changlikesdesktop:20190819134533p:plain

tensorflowのアンインストール

pip3 uninstall tensorflow-gpu
pip3 uninstall tensorflow-tensorboard

tensorflowの新規インストール

 pip3 install tensorflow-gpu==1.13.1

ver.互換はここ*1で確認しました.
何故かver.1.13.0が入らなかったので,1.13.1を入れました.

CUDAのインストール

ここ*2から,CUDA 10.0をダウンロードします.

f:id:changlikesdesktop:20190819135323p:plain:w600

ファイルの在るディレクトリに移動して,解凍・インストールします.

sudo dpkg -i cuda-repo-ubuntu1604_10.0.130-1_amd64.deb  
sudo apt-get update  
sudo apt-get install cuda-toolkit-10-0
reboot

cudnnのインストール

nvidiaのDeveloperサイトから↓↓↓の3つをダウンロードします. * libcudnn7_7.4.2.24-1+cuda10.0_amd64.deb * libcudnn7-dev_7.4.2.24-1+cuda10.0_amd64.deb * libcudnn7-doc_7.4.2.24-1+cuda10.0_amd64.deb

ファイルの在るディレクトリから解凍・インストールします.

sudo dpkg -i libcudnn7_7.4.2.24-1+cuda10.0_amd64.deb
sudo dpkg -i libcudnn7-dev_7.4.2.24-1+cuda10.0_amd64.deb
sudo dpkg -i libcudnn7-doc_7.4.2.24-1+cuda10.0_amd64.deb

動作確認1

.bashrcに↓↓の2行を追記して,端末からコマンドを実行します.

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

正しくインストールできていれば,"/usr/local/cuda-10.0","/usr/local/cuda-10.0/lib64"と,それぞれ表示されます.

動作確認2

nvcc -V

正しくインストール出来ていれば,"Cuda compilation tools,"release 10.1, V10.1.***"と表示されます.

動作確認3

CUDAのサンプルを適当なディレクトリにコピーしてビルドし,実行してみます.

cp -r /usr/local/cuda-10.0/samples ~/CUDA
cd ~/CUDA/samples
make
./bin/x86_64/linux/release/volumeRender

こんな絵が表示されます.

f:id:changlikesdesktop:20190819154855p:plain:w400

動作確認4

tensorflowがGPUを認識してくれるか確認します.
これが一番重要です.

python3  
from tensorflow.python.client import device_lib  
device_lib.list_local_devices()  

正しく設定されていれば,使用中のグラボの型式が表示されます.

過去のソースが動くか未だ確かめられていません.
気にし始めると切りがないので,振り返らずに前に進もうと思います.