Chainerのインストールについて
⼤大野健太 oono@preferred.jp
2015/7/6
⽇日本神経回路路学会主催セミナー
「Deep Learningを使ってみよう!」
更更新履履歴
• 2015/7/6:公開
誤字・脱字報告、ご感想などありましたらご連
絡いただけると幸いです。可能な範囲で対応し
ます。
この資料料について
• 本資料料は2015年年9⽉月1⽇日開催予定の⽇日本神経回路路学会主催セミナー「Deep Learningを使ってみ
よう!」の事前準備のためのものです(http://www.jnns.org/DeepSeminar2/home.html)
内容
• Chainerのインストールについて
• 付録:インストールに関する知識識
以下では
$ ls
など、$が先頭についているものはコ
マンド実⾏行行を表します
バージョンに関する注意
• インストール環境
• 基本的にOS:Ubuntu14.04 + CUDA7.0の環境を想定しています
• Chainer
• 7⽉月7⽇日リリースのv1.1.0を仮定します
免責事項
• インストール⼿手順に関する免責事項
• 本資料料で提⽰示した⼿手順により利利⽤用者に不不利利益が⽣生じても責任は負いません
• 環境の違いなどの原因で、ここで提⽰示した⽅方法でインストールできない可能性があります
• インストールの失敗などにより、構築環境が破壊される可能性があります
インストール全般に関するアドバイス
• 公式の⼿手順を⼀一読し、全体像を把握してから作業にとりかかると良良いです
• 発⽣生したエラーメッセージをインターネットで検索索するのは有効な原因追跡⽅方法です
• 質問サイトで対処⽅方法が議論論されている場合があります
• ただ、バージョン違いや根本原因が相違等の理理由で、回答⼿手順で解決しない場合も多いです
• できるだけクリーンな環境を⽤用意すると余計なエラーに悩まされなくなります
• 公式の⼿手順を読みましょう
Chainerのインストール
インストール(CPU版)
• pip(pythonのパッケージ管理理ツール)でインストールできます
• 環境によってはパッケージをアップデートが必要
コマンド例例
$ pip install -U six (optional)
$ pip install chainer
six:Python2とPython3の差異異を吸収し、
同⼀一のコードが2/3両⽅方で動くようにす
るモジュール。2 * 3 = 6でsix
インストール(GPU版)
• 以下の⼿手順からなります
• CUDAのインストール(Caffeの項⽬目での「CUDAのインストール」を参照)
• ChainerでGPUを利利⽤用する際に必要な依存ライブラリのインストール
• chainer-cuda-depsというモジュールでまとまっているのでこれをpipすれば良良い
• Chainerのインストール(CPU版と同様)
コマンド例例
$ pip install chainer-cuda-deps
$ pip install -U six (optional)
$ pip install chainer
exampleの実⾏行行
exampleはレポジトリにあります(pipでインストールできるモジュールには含まれていません)
CPU実⾏行行
$ pip install scikit-learn scipy #  exampleの依存モジュールのインストール
$ git clone https://github.com/pfnet/chainer.git
$ python chainer/examples/mnist/train_mnist.py
GPU実⾏行行 <device id>は利利⽤用するGPUのID(nvidia-smiで確認可能、⼤大抵は0)
$ python chainer/examples/mnist/train_mnist.py -g <device id>
付録:関連⽤用語
環境変数関係
• LIBRARY_PATH / LD_LIBRARY_PATH:ライブラリの検索索パス
• LIBRARY_PATH:gccが(静的or共有)ライブラリをリンクする際の検索索パス
• LD_LIBRARY_PATH:実⾏行行時の共有ライブラリ(.so)の検索索パス
• LD_LIBRARY_PATHとLIBRARY_PATHの違い
• http://stackoverflow.com/questions/4250624/ld-library-path-vs-library-path
• ⼤大雑把な指針
• コンパイル時にライブラリが⾒見見つからないエラー → LIBRARY_PATHが怪しい
• 実⾏行行時にライブラリが⾒見見つからないエラー → LD_LIBRARY_PATHが怪しい
共有ライブラリ関係
• ldd/ldconfig:共有ライブラリの依存関係を管理理するコマンド群
• ldd : プログラムが依存している共有ライブラリを表⽰示
• ldd /usr/bin/lsをしてみると何をやっているかわかる
• ldconfig : 共有ライブラリの依存関係を解決する
• 引数なし実⾏行行で/etc/ld.so.confで指定されたディレクトリ、 /lib、/usr/libから必要な共
有ライブラリを検索索し、結果を/etc/ld.so.cacheにキャッシュする
• キャッシュしているので、リストが更更新されたらキャッシュを再⽣生成が必要
• 共有ライブラリ関係をいじってうまく動かなかったらとりあえず実⾏行行してみるとよい
• ライブラリに関する参考資料料
• http://www.linuxmaster.jp/linux_skill/2011/03/22linux.html
エラー対処例例
• プログラム実⾏行行時にプログラム(A)が共有ライブラリ(B)を⾒見見つけられないというエラー
A: error while loading shared libraries: libBB.so.X: cannot open shared object file: No such file
or directory
0. lddコマンドでプログラムAが依存している共有ライブラリを調べ、確かに共有ライブラリBが⾒見見
つかっていないことを確認する
1. /etc/ld.so.cacheが更更新されていない可能性があるのでldconfigコマンドで更更新する
2. 共有ライブラリBが存在するディレクトリ(C)を調べる
以下のどちらかで対処(2-1は全ユーザーに影響を及ぼすので、まずは2-2を試すべき)
3-1. LD_LIBRARY_PATHにディレクトリへのパスCを追加する
3-2. /etc/ld.so.confにディレクトリへのパスCを追加し、ldconfigコマンドで検索索パスを更更新する
Python関連⽤用語
• モジュール:特定の機能を実装したPythonのライブラリ
• Pythonのプログラム内で、importして⾃自分のプログラムで利利⽤用する
• pip:Pythonのパッケージ管理理ツール or そのツールで提供されているコマンド名
• モジュールがPyPI(Perlで⾔言うCPANのようなもの)に登録されていれば pip install <
モジュール名>でインストールできる
• pip⾃自体もモジュールなので、pip install -U pip とできる(-Uはアップデートオプ
ション)
• PYTHONPATH:Pythonでimportするモジュールの検索索パスを指定する環境変数
• http://docs.python.jp/2/tutorial/modules.html#tut-searchpath
GPU関連⽤用語
• CUDA:NVIDIAが提供の、GPU向けのライブラリやコンパイラの総称
• NVCC:CUDAのC++コンパイラ
• cuBLAS, cuDNN:CUDAのライブラリ(⾏行行列列演算, 深層学習)
• Host/Device
• GPUプログラミングの⽂文脈ではHost = CPU, Device = GPU

Chainerインストール