深層学習によるコンピュータ・ビジョンが仕事になったので,そのための環境として Theano をインストールした. Windows でつかっているひともいるが,Ubuntu をつかうのが絶対に有利だ. というわけで,そのインストール法をここに書いておく. ただし,失敗談もいろいろふくまれているので,ちょっと,とおまわりだ.
Ubuntu インストール
Theano, Torch7, Caffe などの深層学習用環境はいずれも Linux および MAC OS X 環境においてサ ポートされているが,Windows は公式にはサポートされていない. したがって,Macintosh が使用できる場合をのぞいては Linux をインストールする必要がある.
Linux の配布 (distribution) およびその版として,2015 年 5 月現在は Ubuntu 14.04 LTS が適切だとかんがえられる. その理由はつぎのとおりだ.
- Linux の配布として Ubuntu がもっとも有力であり,深層学習用の環境としてももっともひろく使用されているようだ. そのため,問題が生じたときにも Web などで情報をえやすいだろう.
- Ubuntu の最新版 (2016 年 7 月現在) は 16.10.1 LTS だが,私がインストールした時点では 14.04 LTS が 5 年間 (2019 年まで) サポートされるので,アプリケーションのための環境としてはそれが適切だった.
Ubuntu インストール時に注意するべき点は,グラフィクス用のドライバだ. 既定では Nouveau Kernel Driver がインストールされるが,あたらしい NVIDIA のグラフィクス・カードを搭載しているときはそれがインストールされていることが 障害になりうるので,インストールしないほうがよい (とされている -- 後述). Nouveau は NVIDIA のためのサード・パーティによるドライバだ が,最新のカードには対応していない.
Ubuntu の環境設定
ファイアウォール内からネットワーク・アクセスするためにプロキシを設定する必要がある. Ubuntu 全体のプロキシ設定はデスクトップから network または proxy を 検索してみつかる “Network” というアプリケーションをひらいて設定すれば よい. “Network proxy” のメニューをひらき,Method: Automatic, Configuration URL: http://PROXY.COM/proxy.pac を設定する. これで Firefox などはファイアウォール外につながるようになる.
しかし,ファイアウォール外からアプリケーションをインストールするには apt-get のためのプロキシ環境をべつに設定する必要がある. /etc/apt/apt.conf につぎの設定をいれる.
Acquire::http::proxy "http://USERID:PASSWORD@PROXY.COM:8080/"; Acquire::https::proxy "https://USERID:PASSWORD@PROXY.COM:8080/"; Acquire::ftp::proxy "ftp://USERID:PASSWORD@PROXY.COM:8080/"; Acquire::socks::proxy "socks://USERID:PASSWORD@PROXY.COM:1080/"; (有効?)
ここで PROXY.COM は上記と同様,USERID および PASSWORD は Firefox などの使用時に入力するのとおなじだ.
Theano などは Python を必要とするが,Ubuntu の配布には Python 2.7 がふくまれているので,これを使用すればよい. Python 3 にはまだほとんど対応していない.
NVIDIA ドライバおよび CUDA のインストール
GPU を使用するには NVIDIA GeForce GTX TITAN X などのグラフィクス・カードをインストールす る必要がある. 消費電力が 250W くらいあるので,強力な電源をもつマシンを用意する必要があ る. 深層学習のための環境としては CUDA 6.5 以降のドライバに対応したグラフィクス・カードを 搭載するべきだ. ふるいグラフィクス・カードでは最新の環境をうまく構築することができない.
NVIDIA から CUDA 7 と cuDNN のファイルをダウンロードするが,そのためには 開発者として NVIDIA に登録する必要がある.
ドライバと CUDA のインストール方法は “NVIDIA CUDA Getting Started Guide” にしたがえばよ い. TITAX X など 2015 年 5 月現在の最新環境を必要とするときは,346 版 (346.59 など) を使 用すればよい. なお,以下の説明はかならずしも上記のガイドの記述とはあっていない.
CUDA に関しては CUDA 7 などのドライバ (6.5 にしか対応していないグラフィクス・ カードのとき は 6.5) をダウンロードしてインストールする. これによってグラフィクス・ドライバがまずインストールされる. たとえば cuda_7.0.28_linux.run をつぎのようにしてインストールする.
sudo sh cuda_7.0.28_linux.run
このとき Nouveau Kernel Driver などのグラフィクス・ドライバがインストールされていると,ま ずそれをアンインストールする必要がある (Xubuntu 14.04 にNVIDIAの最新ドライバをインストールする方法 (Xubuntuをテキストモードで起動させる方法) などを参照). アンインストールの際にまちがえると GUI 環境をこわしかねないので,あらかじめグラフィクス・ドライバをインストールしないようにするのがよい. CUDA のインストールによってドライバもインストールされるが,それではドライバの版がふるすぎるときは,そのまえに (あとで?!) ドライバだけをインストールす る. (すでにドライバがインストールされている状態でこのコマンドを実行するときは,すでにインストールされたドライバを “sudo apt-get purge NVIDIA*” などのコマンドによって削除する必要 があるかもしれない.) (参考: How do I disable the “Nouveau Kernel Driver”?).
sudo sh NVIDIA-Linux-x86_64-346.59.run
(ここでは 64 bit 版を使用することを仮定している.) このインストールの際に “dkms への登録をするか” というようなことをきかれるが, それを実行すると 14.04 のもとの環境では失敗するの で,“no” とこたえればよい.
上記の CUDA のインストール (ドライバのインストール) の際にはテキスト・モードで Ubuntu を 起動する (グラフィクス・ドライバを起動しないようにする) 必要がある. 「Xubuntu 14.04に NVIDIAの最新ドライバーをインストールする方法」にあるように GRUB の設定変更でできる (そのか わりに GUI のサービスを停止させることもできる (sudo service lightdm stop など) が,うまくいかない場合もあることが報告されている). (/etc/default/grub にあるつぎの 2 行を変更して “sudo update-grub” を実行したのちにリブートする.
GRUB_CMDLINE_LINUX_DEFAULT="text"
(通常は “text” のかわりに “quiet splash” が書かれている.)
GRUB_TERMINAL=console
(通常は先頭に “#” がついているので,それをはずす. 設定をまちがえてグラフィクスが中途半端に起動してしまったときは, [ctl]+[alt]+[F1] で CLI 画面にきりかえて対処すればよい.)
CUDA を Theano から使用できるようにするには,実行ファイルとライブラリのパスを登録する必要がある. 実行ファイルのパスはたとえば .bashrc につぎのように設定する.
export PATH=$PATH:/use/local/cuda/bin
ライブラリに関してはつぎの設定を一度だけおこなえばよい.
ldconfig /usr/local/cuda/lib64
上記の手順が完了しても Theano を GPU 環境で使用するときなどにつぎのようなメッセージがでる場合がある.
ERROR (theano.sandbox.cuda): nvcc compiler not found on $PATH. Check your nvcc installation and try again
このときはつぎのコマンドを実行するとうまくいくかもしれない.
ldconfig /usr/local/cuda/lib64
NVIDIA cuDNN のインストール
cuDNN は NVIDIA において開発された GPU を使用した深層学習のための API だ. GPU の効果的な使用のためにはぜひ使用するべきだ. (参考: NVIDIA® cuDNN – GPU Accelerated Deep Learning, GPU Accelerated Deep Learning with cuDNN)
2015 年 5 月現在の最新版は cnDNN v2 (2015/3 リリース) だ. この版を使用するためには CUDA 6.5 がインストールされている必要がある. インストールはファイルをダウンロードして解凍し,適当なディレクトリにおくだけだ. (著者は /opt/cuDNN におくことにした.)
参考: sandbox.cuda.dnn – cuDNN
Python ライブラリのインストール
コンピュータ・ビジョン等で使用する Python のさまざまなライブラリをインストールする (複数行 にわけているのは単に 1 行に表示・印刷できなくなるのをさけるためだ). インストールするのは NumPy (科学技術計算ライブラリ), SciPy (数学・科学計算ライブラリ), MatPlotLib (描画ラ イブラリ) などだ. ただし,OpenCV だけは別項とする.
sudo apt-get install python-numpy python-scipy python-dev python-pip python-nose libopenblas-dev git sudo apt-get install python-matplotlib
ただし,MatPlotLib は Theano そのものには必要ない.
Theano のインストールと設定
最初に書いたように,深層学習のための環境として有名なもののひとつが Theano だ. Theano は Python のいくつかのライブラリに依存しているが,それらは前項でインストールされているは ずだ.
pip を使用して Theano をインストールするが,このときふたたびプロキシの指定が必要だ.
sudo pip --proxy=http://USERID:PASSWORD@PROXY.COM:8080/ install Theano
参考: Easy Installation of an Optimized Theano on Current Ubuntu, Installing Theano, Python package: Theano 0.7.0
OpenCV のインストールと設定
コンピュータ・ビジョンの古典的な方法を適用するときなどは OpenCV を使用するのがよい. たとえば,Lucas-Kanade のオプティカル・フロー計算法を適用するには OpenCV を使用することができる.
2016 年 7 月現在の最新版は OpenCV 3.1.0 だが,この版をインストールするにはやや困難があるとかんがえられる. OpenCV 3.0.0 のほうがインストールするのが容易だ. ソース・プログラムからのインストールの方法はつぎの Web ページを参照すると current directory (インストール・ディレクトリ) に cv2.so というファイルがつくられるので,これを /usr/local/lib/python2.7/dist-packages にコピーすれば,Python から "import cv2" によって使用できるようになる.
なお,もともと Ubuntu 14.04 に用意されているパッケージは 2.4.8 だ. (つぎのコマンドによって,使用している Ubuntu に用意されたパッケージの版を確認することができる.
apt list opencv* apt list libopencv* apt list python-opencv
日本語の OpenCV 2.2 のマニュアルにはオプティカル・フローの計算等で GPU を使用する API (ビ デオ解析 API) が記述されているが,英語版の対応するマニュアルにはない. 英語版では 2.4.9 以降 (3.0.0 も) にそれらが記述されている. Ubuntu にあらかじめ用意された版の cv2.so が利用できるときは,上記のようにソース・プログラムからインストールするかわりに,それを /usr/local/lib/python2.7/dist-packages など,python が参照可能な場所におけばよい (あらかじめそうなっていれば,なにもする必要はない).
Links
- NVIDIA CUDA Getting Started Guide: http://docs.nvidia.com/cuda/cuda-getting-started-guide-for-linux/ Xubuntu 14.04にNVIDIAの最新ドライバーをインストールする方法 (Xubuntuをテキストモードで起動させる方法) http://www.nemotos.net/?p=986
- How do I disable the “Nouveau Kernel Driver”? http://askubuntu.com/questions/112302/how-do-i-disable-the-nouveau-kernel-driver
- NVIDIA® cuDNN – GPU Accelerated Deep Learning: https://developer.nvidia.com/cuDNN
- GPU Accelerated Deep Learning with cuDNN: http://on-demand.gputechconf.com/gtc/2014/webinar/gtc-express-sharan-chetlur-cudnn-webinar.pdf
- sandbox.cuda.dnn – cuDNN: http://deeplearning.net/software/theano/library/sandbox/cuda/dnn.html
- Easy Installation of an Optimized Theano on Current Ubuntu: http://www.deeplearning.net/software/theano/install_ubuntu.html
- Installing Theano: http://deeplearning.net/software/theano/install.html
- Python package: Theano 0.7.0: https://pypi.python.org/pypi/Theano