はじめに
Ubuntu14.04の時にOSのインストールに失敗していたのか、その後の環境構築がおかしかったのか、いろいろ不具合が生じていたため、今回、Ubuntu16.04をクリーンインストールし一からTensorFlowの環境を作りなおしました。
Ubuntuのインストールから順を追って手順をまとめておきます。
これは主に自分のメモ用ですが、同じ状態の人がいれば参考にしてください。
Ubuntu16.04のインストール
イメージファイルのダウンロード
ubuntuの日本チームが開発している日本語のイメージファイルをダウンロードします。
Homepage | Ubuntu Japanese Team
ブート用のUSB作成
下記はWindowで作成していますが、UnetbootinはLinuxもMacOSもそれぞれ準備されているので、自分のOSにあったものをダウンロードしましょう。その後の手順は同じです。
USBメモリは2GB以上のものを利用してください。場合によってはUSBとの相性が悪く、うまくブート用のUSBが作成できない場合があります。
ハードディスクへのubuntuのインストール
ハードディスクへインストールする方は、既存のOSのことを考え十分に注意を払って実行してください。買ったばかりのWindowsPCにインストールして、全部消してしまうことの無いように。そもそもTensorFlowはWindowsでも動くので、ubuntuにしなければいけないわけでもありません。
私は古いPCをUbuntuマシンにしているため、既存のOSの共存させることなく利用しています。
BIOSの場合
UEFIの場合
私がハマった注意点
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にあったドライバーを確認してください。
メモを取るだけで結構です。ダウンロードは必要ありません。
現状(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を無効化した状態で行わなければなりません。
システムを無効化すると、画面が暗転します。しかし、画面に写っていないだけでコンピュータは動作しているので安心してください。
以下はスマホなどの機器でページを参照しながら進んでください。
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を使う準備が整いました。
ただし私はサンプルコードのコンパイルはできませんでした(けど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を利用する宣言が入れば完了です。