##環境 & 入れたもの
- Ubuntu 16.04 LTS
- GeForce RTX 2080 ti
- Nvidia ドライバ 410.48
- CUDA 10.0
- cuDNN 7.4.1
- tensorflow-gpu 1.13.1
- python 3.6
##1. Ubuntu 16.04をインストール
USBからBootしました。方法はこちら➡https://qiita.com/konzo_/items/6adfd816c54a4d9d6418
その後の有線接続はこちら➡https://qiita.com/konzo_/items/3ce20d3098f6c85c9f69
##2. 環境を最新にする
$ sudo apt-get upgrade
$ sudo apt-get update
$ sudo apt list upgradable
##3. Gitを入れる
$ sudo apt-get install git
##4. anacondaのインストール
ここを参考にpyenvから anaconda3-2018.12 をインストールした➡https://qiita.com/aical/items/126128c3e8916ad1988f
##5. Nvidiaドライバのインストール
Nvidiaドライバは自身のGPUに合わせるのではなく,CUDAのバージョンと合わせる。
こちらから対応のバージョンを確認➡https://qiita.com/konzo_/items/a6f2e8818e5e8fcdb896
今回は410.48を入れる。
###5.1 nouveauグラフィックスドライバの無効化
linuxにデフォルトで入っているnouveauグラフィックスドライバを無効化しないと,うまくいかないらしい。
$ lsmod | grep -i nouveau
もし入っていたら,なんか返ってくる。
そすたら,/etc/modprobe.d/blacklist-nouveau.confを作成して,以下を打ち込む。このへんはここを参考にした。
$ sudo sh -c "cat << ETX > /etc/modprobe.d/blacklist-nouveau.conf
blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off
ETX" && cat /etc/modprobe.d/blacklist-nouveau.conf
$ sudo sh -c "echo 'options nouveau modeset=0' > /etc/modprobe.d/nouveau-kms.conf" && cat /etc/modprobe.d/nouveau-kms.conf
で。反映させて再起動。
$ sudo update-initramfs -u
$ sudo reboot
ちなみにこのサイトのように,X Serverは止めなかった。
###5.2 ビルドツールのインストール
なぜやるのかは分からないが,やってる人が多かったのでやっておいた
$ sudo apt-get install build-essential
###5.3 NVIDIAドライバのダウンロード
NVIDIAのサイトからは最新バージョンしかダウンロードできなかたので,ppaのレポジトリを追加してインストールする。
$ sudo add-apt-repository ppa:graphics-drivers/ppa
$ sudo apt update
$ sudo apt-get install nvidia-410
最新バージョンをダウンロードするときは,ここに書いてあるように,sudo ./NVIDIA-Linux-x86_64–バージョン.run --no-x-check
にするとうまくいくかも!
$ nvidia-smi
表のようなものが出てきたらOK!
##6. CUDAとcuDNNのインストール
###6.1 CUDA
CUDA10.0をインストールする。
かなり参考にしたサイト➡https://qiita.com/min9813/items/90a1ef62b3dc37d0cc33
公式サイト➡https://developer.nvidia.com/cuda-toolkit-archive から対応のバージョンを選択。
ちなみにインストールタイプの違いはこちらのサイト➡http://gihyo.jp/admin/serial/01/ubuntu-recipe/0456
今回は,このサイトに倣ってnetworkにした。
で,ダウンロードしたディレクトリに移動し,公式のダウンロードサイトのの通りインストールしていく。
※sudo apt-get install cuda
だけではなく,末尾にcuda-toolkit-10-0
を打つこと!
でないと最新のNVIDIAドライバが勝手にインストールされ,グラボとの対応が悪いとログインループになる!
$ cd /home/ほにゃららららら
$ sudo dpkg -i cuda-repo-ubuntu1604_10.0.130-1_amd64.deb
$ sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
$ sudo apt-get update
$ sudo apt-get install cuda-toolkit-10-0
ちなみに上から3つめのコマンドはエラーっぽいことが返ってくるが,そのまま無視してインストールした。
環境設定をしておわり。
$ nano ~/.bashrc
末尾に移動して以下の2行を書き込む
export PATH=/usr/local/cuda-10.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
$ sudo reboot
以下のコマンドでCUDAが入っているか確認できる(^^)/
nvcc -V
###6.2 cuDNN
公式サイトhttps://developer.nvidia.com/cudnn にログインして(会員登録が必要),同意するにチェックを入れると最新バージョンが出てくる。
7.4をダウンロードしたいので,アーカイブをクリックする。
ずらっとアーカイブがでてくる。
7.4.2と7.4.1があったが,7.4だったらどっちでも良いだろうと7.4.1をダウンロードした。
CUDA10.0のUbuntu16.04(x86_64)の中の
- Runtime
- Developer Library
- Code Samples and User Guide
ダウンロードしたディレクトリに移動して以下のコマンドを実行。
Installation Guideに詳しく書いてある!ちなみにこの順番で実行しないとうまくいかない。
$ sudo dpkg -i libcudnn7_7.4.1.5-1+cuda10.0_amd64.deb
$ sudo dpkg -i libcudnn7-dev_7.4.1.5-1+cuda10.0_amd64.deb
$ sudo dpkg -i libcudnn7-doc_7.4.1.5-1+cuda10.0_amd64.deb
これでOK
##7. tensorflow-gpu 1.13.1のインストール
CUDAとの対応は1.13.0が良いらしいが,なぜかerrorが出たので1.13.1をインストールした。
tensorflow-gpu 1.13.1はPython2.7か3.3~3.6の仮想環境が必要なので,環境をつくってそこにインストールしていく。
$ conda create -n 環境名 python=3.6
$ source activate 環境名
(環境名)~~~~$
と表示されたらOK!
以下のように,==
でバージョンを指定してインストールする。
$ pip install tensorflow-gpu==1.13.1
エラーでなければOK。
##8. 確認
###8.1 tensorflowをインポートする
環境をアクティベートして,pythonを開いて(pythonとコマンドを打つだけ),
$ import tensorflow
してエラーがでなければ成功!
もし,以下のようなエラーを吐かれてインポートできなければ,それは何らかのバージョンがあっていない証拠。
ImportError: libcudart.so.9.0: cannot open shared object file: No such file or directory
これは,CUDA9.0じゃないとダメだと怒っているエラー。もう一度バージョンの対応を確認する必要あり。
$ dpkg -l | grep nvidia
$ dpkg -l | grep cuda
$ dpkg -l | grep cudnn
$ pip show tensorflow-gpu
###8.2 TensorflowがGPUを認識しているか確認
tensorflowが無事にインポートできたら,tensorflowからGPUを認識しているか確認する。
このサイトがわかりやすい!
$ from tensorflow.python.client import device_lib
$ device_lib.list_local_devices()
GPUの表示があれば認識してる。
ちなみにtensorflowとtensorflow-gpuが両方インストールされていると,競合してしまい,ダメらしい(ここ情報)。なので,もしインストールしていたらpip uninstall
で両方アンインストールする。その後もう一度tensorflow-gpuのみをインストールするとうまくいった!
##おまけ
https://devtalk.nvidia.com/default/topic/1031213/linux/problem-installing-nvidia-390-42-driver-on-ubuntu-16-04/
ここによると,CUDA→ドライバ→cuDNNの順番でCUDAを先にインストールしてもうまくいくのかも。試す前にうまくいったので,いつかログインループが起きたらやってみる!
おしまい。