Caffe(本家サイト版)をインストールして試してみる
(2015/12一部改訂)
Caffeはインストールが面倒ということで有名です.面倒だけならまだしも、すでに環境構築済みのマシンにインストールしようとすると,ソフトの依存関係に問題があるのかインストールに失敗することがあります.下手したら延々インストールに時間を費やした挙句,結局インストールできなかったということになります.そこで可能であれば,OSをクリーンインストールして直後にCaffeをインストールすることをおすすめします.これならインストールは素直に進みます.以下は、その作業の記録です.
前提条件
Ubuntu 14.04.2 (日本語Remix14.04インストール後,アップデート)※クリーンインストール
GPU使用(下記ではTITAN)
(GPU+cuDNN+OpenBLASという組み合わせでのCaffeインストール手順)
1.Caffeのインストール
下記のサイトおよび本家サイトを参考にしました.
Caffeインストール - RupyWiki
Caffe | Installation
現在使用されているビデオドライバは,
右上のギアのアイコンから、[システム設定]-[ソフトウェアとアップデート]
を選択し,「追加のドライバー」のタブをクリックすることで確認できます.
デフォルトでは,Nouveau ディスプレイドライバが使用されています.
ドライバのインストールのポイントとして以下の2点が言われています.
・デフォルトで稼働している nouveau ドライバを無効にする.
・ドライバインストールはCUIモードで行なう.
なお細かい話ですが,
CUIモードでは日本語が表示されません.◆に文字化けして表示されます.
「ダウンロード」などの日本語フォルダ名は文字化けして判別できなくなります.
そこで対策の一つしては,あらかじめホームディレクトリの日本語フォルダ名を英語
に変更しておく方法があります.
手順は下記参照.
Ubuntuでホームディレクトリの中身を英語にする - Qiita
もしくは,フォルダ名を日本語のままにしておきたい場合は,ダウンロードしたドライバを
一段上のホームディレクトリに移動しておけばよいです.(以下説明はこれを前提とします)
1)TITANのドライバをNVIDIAドライバダウンロードから入手します.
TITAN(無印,Black,Z)であれば,以下のように選択.
(各自所有のグラボに合わせる)
[検索]をクリックする.下記はTITANの例.
ダウンロードする.
2)nouveau ドライバの無効化,ドライバのインストール
(参考サイト)
How to Install NVIDIA 346.35 Stable Driver in Ubuntu 14.04 | UbuntuHandbook
Remove nouveau and install nvidia Driver in Ubuntu 15.04 | allaboutlinux.eu
nvidiaのdriverをインストール(ubuntu) - mikemoke blog
Ubuntu に最新の NVIDIA Driver をインストールする。 - ZONDEEL BLOG
上記のサイトを参考にしながら,実際に設定した内容を以下に記します.
2-1. Ctrl+Alt+T で端末を開きます.
2-2. 以下のコマンドで既存のドライバを削除します.
(OSクリーンインストールの場合,削除0個と出ます)
sudo apt-get remove nvidia*
sudo apt-get autoremove
2-3. nouveauドライバの無効化ファイル編集のため,エディタを起動します.
sudo gedit /etc/modprobe.d/blacklist-nouveau.conf
そして開いたファイルに下記の内容を貼り付け,保存します.
blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off
2-4. 以下のコマンドを入力して,nouveauを無効化します.
echo options nouveau modeset=0 | sudo tee -a /etc/modprobe.d/nouveau-kms.conf
sudo update-initramfs -u
2-5. マシンを再起動します.
2-6. 再起動後Ubuntuにログインし,
Ctrl + Alt + F1
を押し,CUIを起動します.
2-7. CUI画面から,ユーザIDとパスワードを入力してログインします.
2-8. GUIサービスデーモンを停止します.
sudo service lightdm stop
2-9. インストーラの実行権限を変更します.
sudo chmod 755 NVIDIA-Linux-x86_64-352.63.run
2-10. インストーラを実行します.
sudo ./NVIDIA-Linux-x86_64-352.63.run
2-11. ライセンス同意確認が表示されますので,内容を確認し同意したら,[Accept]を選択します.
2-12. 私の環境ではプレインストールスクリプトが失敗したと表示されました.
そのまま[Continue installaton]を選択して次に進みます.
2-13. UEFIのセキュリティーブートのためにNVIDA Kernel moduleを署名するか
尋ねてきます.ここは[Install without signing]を選択しました.
2-14. 32bit互換ライブラリのインストール先を見つけることができませんと警告が出ます.
そのまま[OK]を押します.(2015/12追記 最新バージョンでは32bitライブラリを導入するか聞いてくるようです。いずれにせよ導入しません)
2-15. libvdpau ライブラリについての紹介が表示されます.[OK]を押します.
2-16. NVIDIA XドライバをXconfigurationに反映させるか尋ねてきます.
[Yes]を選択しました.
2-17. Xconfigurationの更新とNVIDIAドライバのインストールが成功したと表示されます.
[OK]を押します.
2-18. 以上でドライバのインストールは終了です.
機械を再起動します.
起動後,ドライバを確認すると,以下の画面となります.
(ドライバがNouveau から,手動インストールされたドライバになる)
ドライバインストール後は,
Ubuntu起動時にNVIDIAのロゴが一瞬表示されるようになります.
(2)CUDAのインストール
(参考サイト)
Getting Started Linux :: CUDA Toolkit Documentation
Ubuntu14.04 ServerでCUDA 6.5.14の環境を整える
1)CUDA7をCUDA 7 Downloadsから入手します.
[Linux x86]のタブを選択します.
RUNFILEでのインストールを行いますのでRUNを選択します.
ダウンロードした cuda_7.0.28_linux.run は
コンソールでインストールを行いますので,
ダウンロードフォルダから一段上のホームディレクトリへ移動しておきます.
2)RUNFILEでインストールのため,
テキストモード(ランレベル3)でマシンを再起動します.
ググったところ方法はいくつかありますが,
ここでは起動時のGRUBメニューから起動オプションを追加して起動する方法で説明します.
2-1. マシンを再起動します.
GRUBメニューが表示されたら,Ubuntuが選択された状態で「e」キーを押します.
2-2. ”linux"行に起動オプションを追加します.
"splash"の次に,” text 3 "(テキストモード,ランレベル3)と追記します.
下記は追記した後の写真です.
(この変更は一過性のもので,今回ブートのみ有効です.
次回ブート時は,追記内容は消去されます)
追記後,[F10]キーを押して,再ブートします.
2-3. 念のため,ログイン後,
”runlevel"コマンドでランレベルが3となっているか確認しました.
2-4. CUDAのインストーラは,NVIDIAビデオドライバが含まれていますが.
(1)で既に最新バージョンをインストールしていますので不要です.
そこでCUDAtoolkitとサンプルを個別にインストールするために,
それ専用のインストーラを生成します.
最初に,インストーラの実行権限を変更します.
sudo chmod 755 cuda_7.0.28_linux.run
2-5. インストーラを生成するため-extractオプションを付けて実行します.
sudo ./cuda_7.0.28_linux.run -extract=$HOME/nvidia_install
オプションで指定したフォルダにドライバとツールキットとサンプルのインストーラが生成されます.
2-7. 生成先フォルダに移動します.
cd nvidia_install
2-8. Cudaのインストーラを実行します.
sudo ./cuda-linux64-rel-7.0.28-19326674.run
2-9. EULAが表示されます.スペースキーで進んでください.
最後にオプションを聞いてきます.下記のとおり入力しました.
・ソフトウェア使用許諾(EULA): accept
・インストールパス:[Enter] (デフォルト)
・デスクトップメニューショートカットの作成:[Enter] (デフォルト)
・シンボリックリンクの作成:[Enter] (デフォルト)
「Installation Complete」と表示されたら,インストール終了です.
2-10. 引き続きサンプルのインストーラを実行します.
先のツールキットのインストールと似たような手順です.
sudo ./cuda-samples-linux-7.0.28-19326674.run
インストーラのオプションは次のとおり入力しました.
・ソフトウェア使用許諾(EULA): accept
・インストールパス:[Enter] (デフォルト)
2-11. 次に "Enter CUDA install path [default is /usr/local/cuda-7.0]"
と表示されるので,確認して[Enter]を押します.
「Installation Complete」と表示されたら,インストール終了です.
ここでUbnuntuを再起動しました.
また,インストールフォルダは作業完了後にでも削除してください.
3) Pathの設定
3-1. エディタで .profile にパスを追記します.
gedit .profile
3-2. 下記を末尾に追加し,保存しました.
export PATH=$PATH:/usr/local/cuda-7.0/bin
export LD_LIBRARY_PATH=/usr/local/cuda-7.0/lib64:$LD_LIBRARY_PATH
export CUDA_ROOT=/usr/local/cuda-7.0/bin
3-3. パスを反映させます.
source ~/.profile
4)g++のインストール
CUDAのサンプルをmakeしようとしたところ,
g++が入っていないと言われましたので,インストールしました.
(サンプルのmakeはCUDAのインストール確認のため行いました.これは
Caffeインストールにあたっての必須事項ではないため,詳細は割愛します)
sudo apt-get install g++
(3)cuDNNのインストール
(参考サイト)
cuDNNインストール - RupyWiki
cuDNNを使用した方が処理速度が速くなるとのことでインストールしました.
なおダウンロードにはアカウント登録が必要です.
(これは個人的に前おこなったので説明は割愛させていただきます...)
1)NVIDIA cuDNN – GPU Accelerated Deep Learning
から,cuDNN v2 Library for Linuxをダウンロードしました.
そのほか,Users Guide や Code Sampleもダウンロードしておきました.
2)Downloadsフォルダに解凍します.
そのあと,/usr/local フォルダに移動します.
sudo cp -r cudnn-6.5-linux-x64-v2 /usr/local/
3)エディタで .profile にパスを追記します.
gedit .profile
4)下記を末尾に追加し,保存しました.
export LD_LIBRARY_PATH=/usr/local/cudnn-6.5-linux-x64-v2:$LD_LIBRARY_PATH
5)インクルードファイルやライブラリファイルを必要な場所にコピーします.
cd /usr/local/cudnn-6.5-linux-x64-v2
sudo cp cudnn.h /usr/local/cuda-7.0/include
sudo cp libcudnn* /usr/local/cuda-7.0/lib64
(4) BLASのインストール
OpenBLAS,ATLAS,IntelMKLから選択できますが,
パフォーマンスが良いOpenBLASをインストールしました.
IntelMKLは商用なので避けました.
(参考)
Easy Installation of an Optimized Theano on Current Ubuntu — Theano 0.7 documentation
1)gitが入っていないので,インストールします.
sudo apt-get install git
2)コンパイルにFORTRANが必要なので,インストールします.
sudo apt-get install gfortran
3)gitでOpenBLASを入手します.
git clone https://github.com/xianyi/OpenBLAS
4) ダウンロード後,makeします.
cd OpenBLAS
make FC=gfortran
下記が表示されます.
5)つづけて,下記を入力します.
sudo make PREFIX=/usr/local install
下記が表示されたら終了です.
(4)その他の依存関係ソフトのインストール.
(1)のサイトを参考.
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler
(5)Caffe本体のインストール
1)gitでCaffeを入手します.
git clone https://github.com/BVLC/caffe.git
2)python関係のライブラリ(numpy,cpython等requirements.txts参照)をインストール
しますが,まずpipがインストールされていないのでそれからインストール.
sudo apt-get install python-pip
3)caffe/pythonディレクトリに移動し(1行目),pip実行(2行目).
cd caffe/python
for req in $(cat requirements.txt); do sudo pip install $req; done
4)Caffeフォルダへ移動し,Makefile.configファイルをひな形からコピーし,
コピーしたファイルをエディタで開きます.
cd ..
cp Makefile.config.example Makefile.config
gedit Makefile.config
5)エディタで開いたファイルに以下の通り変更を加えます.
(左側数字:は行番号ですので無視してください)
5-1. CuDNN使用のためコメント(#)をはずします
5: USE_CUDNN := 1
5-2. OpenBLASを指定.
そしてOpenBLASのインクルードファイルとライブラリフォルダを指定.
46: BLAS := open
50: BLAS_INCLUDE := /usr/local/include
51: BLAS_LIB := /usr/local/lib
5-3. 以上の修正が終了したらファイルを保存してエディタを閉じ,
make実行.
make all
make test
ちなみに自分の環境で処理時間はmake allで7〜8分,make testで4分程度だった.
(わざわざマルチコアではコンパイルしませんでした)
5-4. 以下を入力し,
make runtest
下記のように[PASSED]と表示されることを確認.
(5)PyCaffeの設定
1)python-numpyをインストール
sudo apt-get install python-numpy
2)pyCaffeをmake.
make pycaffe
3)パス追加のため,ホームディレクトリに移動後、エディタ起動
gedit .profile
4)末尾に,以下を追加
export PYTHONPATH=$HOME/caffe/python:$PYTHONPATH
5)パスを反映させます.
source ~/.profile
以上で作業は終了です.
次のチュートリアルが動くことを確認して,とりあえずインストール終了としました.
2.Caffeを試してみる
ネット上ではいろいろチュートリアルがあります.
今回,下記で試しました.
・葉月ちゃんでも出来るDeep learning
http://files.sig2d.org/sig2d14.pdf
これは日本語で書かれており,Caffeでの処理の概要を掴むのに良いです.
なお本文を試していて見落としがちなのは,
>学習用および判別用の両方のネットワーク定義を変更するのを忘れないこと.
と書いてあるところです.
つまり cifar10_quick_train_test.prototxt の num_output の変更と共に,
cifar10_quick.prototxt の num_output も同じ数に変更します.
3.CNNについて
Deep learningの本として,下記の本が有名ですが、説明がわかりやすく,おすすめします.
また上の本のCNNの章をスライドで説明されたのが以下です.
これはスライドのアニメーション的な動きが,直感的な理解を助けてくれます.
4.謝辞
インストールにあたってはほぼ他のサイトを参考にしました.感謝いたします.
(自分用備忘)
Linuxインストール時,内蔵グラフィックにモニタを接続して導入すると,後で内蔵グラフィックと外付グラボの切り替えが問題なくできる(外付グラボに接続してインストールすると,内蔵グラフィックにモニタを接続しても,うまく表示しなかった)
手順(順序とタイミングに注意して行う)
1.UEFIで,内蔵グラフィック(IDG)を選択しておく.
(1)起動時画面で,[DEL]キー押下し,UEFI起動.
(2)左ペインの[SETTING]をクリック
[Advanced]-[Integrated Graphics Configuration]を選択
Initiate Graphic Adapterを,[IDG]に変更
左ペインの[SETTING]をクリックTOPメニューに戻り,Save & Exitを選択
Save Changes and Rebootを選択し,再起動.
2.内蔵GPUのポートにモニタを接続
3.Linux導入
4.導入終了後、再起動時,UEFIを立ち上げ,PEGに変更する.
(1)起動時画面で,[DEL]キー押下し,UEFI起動.
(2)左ペインの[SETTING]をクリック
[Advanced]-[Integrated Graphics Configuration]を選択
Initiate Graphic Adapterを,[IDG]に変更
左ペインの[SETTING]をクリックしTOPメニューに戻り,Save & Exitを選択
Save Changes and Rebootを選択し,再起動.
5.再起動時,すばやく外付グラボのポートにモニタを接続する.
6.外付グラボのドライバをインストール(上記参照)
NVIDIAのドライバインストールについて
下記のような簡便な手順でドライバはインストールできるが、これではどうもディープラーニングフレームワーク側での処理がうまくなされない。TensorFlowでは、GPUでの処理がうまくできない(GPUのメモリ確保してない、処理低速、結局CPUで稼働?)。また、Caffeのインストール(make)にも失敗する。
(1)NVIDIAビデオドライバのインストール(2015/12改訂)
Nouveauの無効化など関係なく,簡単にインストールできたので改訂.
(このインストール方法じゃ、GPUで処理がきちんとされなかった。よって削除)
右上のギアのアイコンから、[システム設定]-[ソフトウェアとアップデート]
を選択し,「追加のドライバー」のタブをクリック.
デフォルトでは,X.Org Xerver -Nouveau… ディスプレイドライバが選択されているが,
NVIDIA binary driver…nvidia-352...(プロプライエタリ,検証済み)を選択する.
[変更の適用]をクリック.
右下にオレンジのプログレスバーが表示されるので,しばらく待つ.
適用後,再起動した.これでOK.
352というのは,Titanのドライバのバージョン番号.この番号はNVIDIAドライバダウンロードから自分のグラボを検索すると判る.今回グラボを取り付けた状態でLinuxを導入したため,最初からグラボを認識して,上のように親切に出てきてくれたものと考えられる.
※※以下の方法でもインストールできる.これも4行で済むので簡単.
以下のサイトからの情報.
(※リンク先削除)
sudo add-apt-repository ppa:xorg-edgers/ppa
sudo apt-get update
apt-cache search 'nvidia-[0-9]+$'
sudo apt-get install nvidia-352
352以外もインストール可.(バージョンは3行目実行後,画面に表示される)