TensorFlow-GPU 環境構築 2018年3月

1 Star2 Stars3 Stars4 Stars5 Stars (まだ評価されていません)
Loading...

はじめに

機械学習系の環境を定期的に一から作りなおすことにしている
そこで得たノウハウを記録に残しておきたい

クリーンインストールした Linux でやっていく
ローカルマシンとして利用する想定

Linux Mint 18.3 Cinnamon 64-bit

Ubuntu 16.04 でもたぶん同じ方法でいけるはず
ただしデスクトップ環境としては、 Mint のほうがより安定していると感じた

MacでUbuntu 16.04ブータブルUSBの作成
http://blog-sk.com/mac/ubuntu_bootusb/

  • i5-2500K
  • GTX980

CUDA 関係

NVIDIA CUDA Installation Guide for Linux
http://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html

インストールには

  • deb (apt-get)
  • run

の2種類あるが、いろいろと楽な deb を使う

準備

TensorFlow はビルド済みのを導入するので、CUDA 系のバージョンをあらかじめ確認しておかなければいけない
トラブルの大半はバージョン関係の問題なので、ここが地味に大事
https://www.tensorflow.org/install/install_sources

tf-cuda-version.png

tensorflow-1.6/1.5 の両方に対応している CUDA 9, cuDNN 7 にする

CUDA Toolkit のページから Legacy Releases
https://developer.nvidia.com/cuda-toolkit-archive

cudainstall.png

ダウンロードして3行目までを実行

$ sudo dpkg -i cuda-repo-ubuntu1604_9.0.176-1_amd64.deb
$ sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
$ sudo apt-get update

Driver (nvidia-390) をインストール

このタイミングでインストールしておかないと依存関係が解決されなかった(なぜだかよくわからないが)
再起動が必要

driver.png

CUDA 9.0 をインストール

ちゃんとバージョンを指定する
指定しておかないと、最新版 9.1 が入ってややこしいことになる(とは言っても PATH の指定でどうとでもなるが)

$ sudo apt-get install cuda-9-0

CUDA インストール後

PATH 追加のとき、直接ファイルを編集せずに echo を使うなら、 $ をエスケープしないといけない
PATH 追加先は .profile(私の場合)

  • ubuntu 系
  • ローカルで使用
  • .bash_login, .bash_profile がないことを確認

$ echo "export PATH=/usr/local/cuda-9.0/bin\${PATH:+:\${PATH}}" >> ~/.profile
$ source ~/.profile
$ sudo /usr/bin/nvidia-persistenced --verbose
$ sudo apt-get install g++ freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libglu1-mesa libglu1-mesa-dev

cuDNN 7.0 をインストール

アカウント作成とログインが必要
https://developer.nvidia.com/rdp/cudnn-download

  • cuDNN v7.0.5 Runtime Library for Ubuntu16.04 (Deb)
  • cuDNN v7.0.5 Developer Library for Ubuntu16.04 (Deb)
  • cuDNN v7.0.5 Code Samples and User Guide for Ubuntu16.04 (Deb)

$ sudo dpkg -i *.deb

Python 一式 (Anaconda) インストール

  • NumPy や Jupyter などをいちいちインストールするのが面倒
  • 必要なら新たに仮想環境をつくれる
  • トラブったらインストールフォルダごと消し去ればOK

Anaconda3 ダウンロード
https://www.anaconda.com/download/

最近だと PATH は追加しないで、 conda activate/deactivate を使うのが標準的
下の設定だと、 zsh を立ち上げたら自動的にデフォルトの仮想環境 (base) に入る

$ sh ./Anaconda3-5.1.0-Linux-x86_64.sh
$ echo ". /home/<username>/anaconda3/etc/profile.d/conda.sh" >> ~/.bashrc
$ echo ". /home/<username>/anaconda3/etc/profile.d/conda.sh" >> ~/.zshrc
$ echo "conda activate" >> ~/.zshrc

TensorFlow 1.6 インストール

Installing Tensorflow on Ubuntu
https://www.tensorflow.org/install/install_linux

面倒なのでデフォルトの仮想環境にインストールする

$ sudo apt-get install cuda-command-line-tools
$ echo "export LD_LIBRARY_PATH=\${LD_LIBRARY_PATH}\${LD_LIBRARY_PATH:+:}/usr/local/cuda/extras/CUPTI/lib64" >> ~/.profile
$ conda activate
(base)$ pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.6.0-cp36-cp36m-linux_x86_64.whl

動作チェック

Using GPUs | TensorFlow Programmer’s Guide
https://www.tensorflow.org/programmers_guide/using_gpu

$ conda activate
(base)$ jupyter notebook

  1. Jupyter notebook を起動
  2. New → Python 3 から新しくノートブックを作成
  3. 下の内容をセルに入力し、 Shift+Enter で実行

Jupyter_notebook

import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
with tf.Session(config=tf.ConfigProto(log_device_placement=True)) as sess:
print(sess.run(hello))

tf-test2.png

import 時の Warning は気にしなくてよさそう
Jupyter を起動したターミナルを確認し、 GPU が認識されていて、エラーが出ていなければ OK

ログ

2018-03-04 11:16:58.334216: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:898] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2018-03-04 11:16:58.334554: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1212] Found device 0 with properties: 
name: GeForce GTX 980 major: 5 minor: 2 memoryClockRate(GHz): 1.291
pciBusID: 0000:01:00.0
totalMemory: 3.95GiB freeMemory: 3.45GiB
2018-03-04 11:16:58.334583: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1312] Adding visible gpu devices: 0
2018-03-04 11:16:58.557392: I tensorflow/core/common_runtime/gpu/gpu_device.cc:993] Creating TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 3178 MB memory) -> physical GPU (device: 0, name: GeForce GTX 980, pci bus id: 0000:01:00.0, compute capability: 5.2)
Device mapping:
/job:localhost/replica:0/task:0/device:GPU:0 -> device: 0, name: GeForce GTX 980, pci bus id: 0000:01:00.0, compute capability: 5.2
2018-03-04 11:16:58.585013: I tensorflow/core/common_runtime/direct_session.cc:297] Device mapping:
/job:localhost/replica:0/task:0/device:GPU:0 -> device: 0, name: GeForce GTX 980, pci bus id: 0000:01:00.0, compute capability: 5.2
Const: (Const): /job:localhost/replica:0/task:0/device:CPU:0
2018-03-04 11:16:58.595781: I tensorflow/core/common_runtime/placer.cc:875] Const: (Const)/job:localhost/replica:0/task:0/device:CPU:0


1 Star2 Stars3 Stars4 Stars5 Stars (まだ評価されていません)
Loading...
      この投稿は審査処理中  | 元のサイトへ