"機械学習","信号解析","ディープラーニング"の勉強

HELLO CYBERNETICS

深層学習、機械学習、強化学習、信号処理、制御工学などをテーマに扱っていきます

ubuntu16.04でのTensorFlow環境構築手順メモ

 

 

f:id:s0sem0y:20170711120026j:plain

 

 

はじめに

Ubuntu14.04の時にOSのインストールに失敗していたのか、その後の環境構築がおかしかったのか、いろいろ不具合が生じていたため、今回、Ubuntu16.04をクリーンインストールし一からTensorFlowの環境を作りなおしました。

 

Ubuntuのインストールから順を追って手順をまとめておきます。

 

これは主に自分のメモ用ですが、同じ状態の人がいれば参考にしてください。

 

Ubuntu16.04のインストール

イメージファイルのダウンロード

ubuntuの日本チームが開発している日本語のイメージファイルをダウンロードします。

Homepage | Ubuntu Japanese Team

 

 

ブート用のUSB作成

下記はWindowで作成していますが、UnetbootinはLinuxもMacOSもそれぞれ準備されているので、自分のOSにあったものをダウンロードしましょう。その後の手順は同じです。

 

kledgeb.blogspot.jp

USBメモリは2GB以上のものを利用してください。場合によってはUSBとの相性が悪く、うまくブート用のUSBが作成できない場合があります。

 

ハードディスクへのubuntuのインストール

ハードディスクへインストールする方は、既存のOSのことを考え十分に注意を払って実行してください。買ったばかりのWindowsPCにインストールして、全部消してしまうことの無いように。そもそもTensorFlowはWindowsでも動くので、ubuntuにしなければいけないわけでもありません。

 

私は古いPCをUbuntuマシンにしているため、既存のOSの共存させることなく利用しています。

 

BIOSの場合

kledgeb.blogspot.jp

 

UEFIの場合

kledgeb.blogspot.jp

 

私がハマった注意点

USBの作成失敗

まずブート用のUSBを作成する際に、ものによっては起動できない場合がありました。全く同じ手順にも関わらず、うまく行くUSBとうまく行かないUSBがあったため、ハードの相性の問題なのかと私は思っていますが、実際のところはよくわかりません。

 

USBは何個か所持していると思われますので、うまく行かない場合は他を試してみると良いかもしれないです。

 

 

インストールする際

インストールする際に、何度やっても「空き容量が無い」といったエラーが生じることがありました。そんなはずはなかったので、何度もUSBを作りなおしてチャレンジしたが同じ様子でした。

 

結果として、PCに音楽のCDが挿入されていたことに気が付き、これを取り出した状態でインストールに挑んだらうまく行きました。

 

CDにインストールしようとなんてしてなかったのですが、不要なものは一切関与できないようにしておいたほうが良いでしょう。

 

 

 

Nvidiaのドライバーをインストール(GPU向け)

TensorFlowでGPUを利用する人は、ubuntuがもともとサポートしていない高価なGPUを利用するため、ドライバーインストールの際に不具合が生じる可能性があります。

 

仮に以下の記事の手順のうまく行くのであればそれで良いのですが、私の場合はダメでした。

 

[Ubuntu] Ubuntu 16.04 に NVIDIA ドライバを導入する – Tech Memo

 

 

また、以下の手順は、「GeForce GTX1060」を利用するために行いましたが、以下の手順を実行した時には、上記のGPUを挿した状態ではありませんでした(PCにもともと搭載されたものを使った)。

 

GTX1060を挿した場合は以下の手順でX-windows systemを切った時点で全く動作しなくなったためです。

 

 

うまく行った手順

Nvidiaドライバーの確認

以下でお持ちのGPUにあったドライバーを確認してください。

メモを取るだけで結構です。ダウンロードは必要ありません。

 

NVIDIAドライバダウンロード

 

現状(2017年7月現在)は、nvidia-375が正式な最新となっています。

 

既存のNvidiaドライバーを削除

 

sudo apt-get purge nvidia* 

 

この部分はubuntuをクリーンインストールした場合には不要です。

もしもドライバーを新たに入れるという場合には、必ず古い方は上記によって削除して、インストールし直すようにしてください。

 

Nvidiaのドライバーは新しいバージョンを上書きしていくスタイルにはなっていません。

 

 

X window systemを止める

※この画面を見ながら実行している人は一度、この記事の項目を読んでからにしてください。

 

sudo service lightdm stop 
sudo service gdm stop

 

このコマンドを実行しない場合には、私は全くインストールがうまく行きませんでした。

 

元来コンピュータはキーボードからの入力を受けて動作するもの(CUI)です。それをマウスのクリックとかを用いて画面上で操作できる(GUI)のは、それを可能にするシステムが入っているからです。興味があれば以下を参照してください。

 

X Window System - Wikipedia

 

これから新しいドライバーを入れようという場合にはX window Systemを無効化した状態で行わなければなりません。

 

システムを無効化すると、画面が暗転します。しかし、画面に写っていないだけでコンピュータは動作しているので安心してください。

 

以下はスマホなどの機器でページを参照しながら進んでください。

 

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

画面が暗転した状態で

 

Crtl + Alt + F1

 

でCUIモードに入ることができます。これは普通にターミナルを使うのと同じだと思っていいです(これはX window systemとは無関係に普段から使うことができる。けどターミナルがあるから使わないというわけ。)。

 

ここではユーザー名とパスワードが聞かれます。普段からログインを飛ばしている人は、ユーザーメーやパスワードを忘れている可能性もあるので注意してください。

 

ログインすると、普段使っているターミナルと同じです。

 

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

 

によってインストールを行います。

いろいろ質問をされますが基本的にyesと答えて進みましょう。

私の場合はnvidia-375ですがお使いのGPUにあったものを選んでください(前の項目)。

 

 

インストールされているかの確認

私はインストール終了後、

 

shutdown

 

によって電源を切ったあと、GTX1060を挿しました。すでに挿してある方は、

 

reboot

 

で再起動を行いましょう。

 

そして起動後、

 

nvidia-smi

 

でGPUが認識しているか確認してください。

 

 

うまく行かなかった手順

私の環境ではうまく行きませんでしたが、以下でうまく行く人もいると思います。

 

 

 

 

CUDAとcudnn5.1のインストール

CUDAのインストールは以下の記事に従えば行えます。

ここまで準備すれば、あとはTensorFlowを使う準備が整いました。

 

qiita.com

 

ただし私はサンプルコードのコンパイルはできませんでした(けどTensorFlowは大丈夫です)。

 

nvidia-375を入れている人

nvidia-375をインストールした方は、このバージョン特有のバグが存在しますので、以下のコードで対策を行ってください。

 

sudo mv /usr/lib/nvidia-375/libEGL.so.1 /usr/lib/nvidia-375/libEGL.so.1.orig sudo mv /usr/lib32/nvidia-375/libEGL.so.1 /usr/lib32/nvidia-375/libEGL.so.1.orig sudo ln -s /usr/lib/nvidia-375/libEGL.so.375.66 /usr/lib/nvidia-375/libEGL.so.1 sudo ln -s /usr/lib32/nvidia-375/libEGL.so.375.66 /usr/lib32/nvidia-375/libEGL.so.1

 

 

TensorFlowのインストール

 

Pythonの準備について

データ解析にはAnacondaが便利ですが、必要最小限のものがあればいいので、minicondaでもいいと思いますし、別になくてもいいと思います。(Ubuntuは標準でPython2系も3系も入ってます)

 

なので私は今回はAnacondaを入れるのはやめました。

 

結局入れた(今まで書いたコードのパッケージ網羅するのがめんどくさかった)。

 

入れたい人は以下参照。

Anaconda を利用した Python のインストール (Ubuntu Linux) – Python でデータサイエンス

 

 

 

TensorFlowのインストール

「libcupti-dev」を入れます。

sudo apt-get install libcupti-dev

「これはNVIDIA CUDAプロファイルツールインタフェースです。このライブラリは高度なプロファイリングのサポートを提供します。」だそうです。(TensorFlowより)

 

次にvirtualenvを入れます。これは入れといたほうがいいです(condaがあるならそれでいいですけど)。TensorFlowはバージョンアップするごとに仕様が少し変わるので、違うバージョンを試してみたいということは多々起こります。

 

一行目が2系用、二行目が3系用です。Pythonのバージョンに合わせて実行。

 

sudo apt-get install python-pip python-dev python-virtualenv 
sudo apt-get install python3-pip python3-dev python-virtualenv 

 

インストール後は以下。こちらも一行目が2系、二行目が3系。

 

virtualenv --system-site-packages ~/tensorflow
virtualenv --system-site-packages -p python3 ~/tensorflow

 

「~/tensorflow」のとこは別に自分の好きなディレクトリ名で結構ですが、まあ、これから変更する理由は特に無いと思います。

 

次に環境をアクティベートします。

 

 source ~/tensorflow/bin/activate # bash, sh, ksh, or zsh
 source ~/tensorflow/bin/activate.csh  # csh or tcsh

 

使っているターミナルに合わせて選んでください。ubuntuの入れたばかりならbashです。アクティベートされたらいよいよTensorFlowをインストール。

 

 (tensorflow)$ pip install --upgrade tensorflow      # for Python 2.7
 (tensorflow)$ pip3 install --upgrade tensorflow     # for Python 3.n
 (tensorflow)$ pip install --upgrade tensorflow-gpu  # for Python 2.7 and GPU
 (tensorflow)$ pip3 install --upgrade tensorflow-gpu # for Python 3.n and GPU

 

TensorFlowが利用できるか確認

TensorFlowを利用するときはアクティベートが必要です。

以下のコマンドでできます。

source ~/tensorflow/bin/activate      # bash, sh, ksh, or zsh
source ~/tensorflow/bin/activate.csh  # csh or tcsh

 

逆に終了する場合は

deactivate     

になります。

 

今はTensorFlowの利用を確認したいので、アクティベートされた状態で

 

(tensorflow)$ python3

 

pythonのインタラクティブモードに入ったら

 

>>> import tensorflow as tf
>>> sess = tf.InteractiveSession()

 

してみて、GPUを利用する宣言が入れば完了です。

 

 

 

 

 

 

s0sem0y.hatenablog.com

s0sem0y.hatenablog.com

s0sem0y.hatenablog.com