LoginSignup
74
69

More than 5 years have passed since last update.

Ubuntu 16.04 をインストールして NVIDIAドライバ (410.48)と CUDA10.0 と cuDNN7.4.1 を入れて Tensorflow-gpu を動かすメモ

Last updated at Posted at 2019-04-11

環境 & 入れたもの

  • 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グラフィックスドライバを無効化しないと,うまくいかないらしい。

nouveauを使ってるか確認
$ lsmod | grep -i nouveau

もし入っていたら,なんか返ってくる。
そすたら,/etc/modprobe.d/blacklist-nouveau.confを作成して,以下を打ち込む。このへんはここを参考にした。

/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
/etc/modprobe.d/nouveau-kms.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 から対応のバージョンを選択。

こんな感じで。
image.png

ちなみにインストールタイプの違いはこちらのサイト➡http://gihyo.jp/admin/serial/01/ubuntu-recipe/0456
今回は,このサイトに倣ってnetworkにした。

で,ダウンロードしたディレクトリに移動し,公式のダウンロードサイトのの通りインストールしていく。
sudo apt-get install cudaだけではなく,末尾にcuda-toolkit-10-0を打つこと!
でないと最新のNVIDIAドライバが勝手にインストールされ,グラボとの対応が悪いとログインループになる!

CUDAのインストール
$ 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が入っているか確認できる(^^)/

CUDAの確認
nvcc -V

6.2 cuDNN

公式サイトhttps://developer.nvidia.com/cudnn にログインして(会員登録が必要),同意するにチェックを入れると最新バージョンが出てくる。
7.4をダウンロードしたいので,アーカイブをクリックする。
image.png

ずらっとアーカイブがでてくる。
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

3つをダウンロードする。コードサンプルとかいらないのかも。
image.png

ダウンロードしたディレクトリに移動して以下のコマンドを実行。
Installation Guideに詳しく書いてある!ちなみにこの順番で実行しないとうまくいかない。

cuDNNのインストール
$ 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!
以下のように,==でバージョンを指定してインストールする。

Tensorflow-gpuのインストール
$ pip install tensorflow-gpu==1.13.1

エラーでなければOK。

8. 確認

8.1 tensorflowをインポートする

環境をアクティベートして,pythonを開いて(pythonとコマンドを打つだけ),

tensorflowをインポートする
$ 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を先にインストールしてもうまくいくのかも。試す前にうまくいったので,いつかログインループが起きたらやってみる!

おしまい。

74
69
0

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
74
69