(古い記事)EC2のGPUインスタンスにChainerを5行で入れて4行で動かす
PFI/PFN社でオープンソース公開したディープラーニングフレームワークChainer、すで使って頂いている方、ありがとうございます。
さてそんなChainerですが、MacBookでも簡単に使い始めることはできますが、真価を発揮させるにはGPU環境が欲しいところです。また一方、GPUを積んだデスクトップPCでも(特にPyCUDAの)インストールでつまづく方がいるのも事実です。
開発側の人間としては、できれば手軽に試してもらえる環境を提供したい。そこでは、やはりAWSのEC2でGPUインスタンス使うのが一番いいと思います*1。
Chainer on EC2は何名かブログ等で記事を公開されていますが、今のところ最も簡単な方法はRyosuke TajimaさんのAWSでサクッとChainerを使ってみるです。
が、やはりここでもPyCUDAをソースからのビルドしてもらうことになっています。原因は、sudo実行において多くの環境では$PATHが上書きされるため、CUDAのインストールディレクトリにPATHが通らずPyCUDAのビルドが失敗することにあります。
これは、最近公式ドキュメントのTipsにも加えられたように、ユーザーのホームディレクトリ以下にインストールするオプションをpipにつけるか、$PATHをsudo環境に明示的に渡すことで回避できます。
そこでこの記事では、最短でEC2にChainer環境を用意する様子をお見せしたいと思います。
まず、Tajimaさんと同様にこちらの記事を参考に、NVIDIAが公開しているCUDA環境入りGPUインスタンス(Amazon Linuxベース)をAWS Marketplaceから探して立ち上げます。
インスタンスが起動したらec2-userとしてログインして、まずCUDAインストールディレクトリに関する設定を.bash_profileに追記して反映します(ここまでで3行)。
$ echo 'export PATH=/opt/nvidia/cuda/bin:$PATH' >> .bash_profile $ echo 'export LD_LIBRARY_PATH=/opt/nvidia/cuda/lib64:$LD_LIBRARY_PATH' >> .bash_profile $ source .bash_profile
次にchainerを--userオプション付きでインストールします(4行目)。numpyのインストールに少し時間がかかるので数分待ちます。
$ pip install --user chainer
(中略)
これで、chainer本体とnumpy、sixなどはインストールできました。CPUモードであればもう実行できますが、それは置いといて、いよいよ難関のGPU対応に移ります。
上記のように、--user付きで試してみます(5行目)。
$ pip install --user --upgrade chainer-cuda-deps
(中略:nvcc no in pathというエラーは出ていません)
(中略:ここでも少し時間がかかります)
おお!(わざとらしい)PyCUDA含めてインストールに成功したようです。
では本当に動くのかどうか、MNISTサンプルを実行してみましょう(3行消費)。Githubから最新リリースのSource code (tar.gz)をダウンロードします。以下では執筆時点(2015/08/09)の最新版・Chainer v1.1.2を利用していますが、バージョン番号は読み替えてください。
$ wget https://github.com/pfnet/chainer/archive/v1.1.2.tar.gz $ tar zxvf v1.1.2.tar.gz $ cd chainer-1.1.2/examples/mnist/
(中略)
ではGPU実行オプションを付けて動かします(ラスト1行)。
$ python train_mnist.py --gpu 0
(中略:MNISTデータセットの変換に少し時間がかかります)
無事にMNISTサンプルの実行が完了し、精度も出ているようです(約98.5%)
まとめると、EC2のNVIDIA製AMIをGPUインスタンスで使えば、以下の5行+4行を実行することで、ChainerのGPU利用が可能な環境がどなたでも手に入ります。時間にすると、インスタンス立ち上げから10-15分程度でここまでたどり着けると思います。
$ echo 'export PATH=/opt/nvidia/cuda/bin:$PATH' >> .bash_profile $ echo 'export LD_LIBRARY_PATH=/opt/nvidia/cuda/lib64:$LD_LIBRARY_PATH' >> .bash_profile $ source .bash_profile $ pip install --user chainer $ pip install --user --upgrade chainer-cuda-deps --- $ wget https://github.com/pfnet/chainer/archive/v1.1.2.tar.gz $ tar zxvf v1.1.2.tar.gz $ cd chainer-1.1.2/examples/mnist/ $ python train_mnist.py --gpu 0
これを皮切りにして、ぜひご自分の研究や仕事や趣味でChainerをご活用下さい。
それでは、Have a happy Chainer life!
※ 念のため、上記NVIDIA製AMIは無料ですが、EC2インスタンスの利用には別途料金がかかります。自己責任でお願いします。
*1:「公式のAMI公開すればいいのでは」という声もありそうですが、2週間ごとにバージョンアップする現状ではメンテが難しいという事情もあります