Docker で jupyter notebook から Caffe を試した

前提

Caffe を試したくなったが環境構築に苦労したのでメモ。

なので CPU モードしか試していない。

最初はふつうにビルドしようとしたのだが、依存関係が多すぎたり、python 2 なのか 3 なのか OpenCV も 3 なのかなんなのか、conda がいいのか悪いのか、などなど色々と困って、Makefile.config を何度書き換えても失敗し、しんどくなったので、Docker を試してみた。自分は Docker も機械学習も全くの素人でこれが初めての試み。

手順

まず Docker for Mac をふつうにダウンロードしてきてGUIでインストール。起動。

次に、jupyter と Caffe などの色々なパッケージが入った Docker 用イメージファイルを公開してくれている人がいた ( https://github.com/floydhub/dl-docker ) ので、

$ git clone https://github.com/floydhub/dl-docker

としてダウンロード。

しかしこのあとマニュアルにあるとおりのコマンドで jupyter を起動すると kernel が起動しなかった。対処法は、フォーラムにあるものを微妙に改変して、

$ docker run -it -p 8888:8888 -p 6006:6006 floydhub/dl-docker:cpu sh -c 'jupyter notebook --ip=0.0.0.0 --no-browser'

でいけた(フォーラムのコマンドは floydhub/ がない)。

これで docker 内の仮想マシンみたいなものに入るので、その中の /opt/caffe/example (だったかな?)へ辿っていき、そこにあるサンプルの notebook を開いていつものように実行する。というところまでやった。

チュートリアルの0番と1番は、GPUのところをちょこっとCPUに書き換えたら問題なし。具体的には、

caffe.set_device(0)
caffe.set_mode_gpu()

というところが何箇所か出てくるので、これら2行をコメントアウトし、

caffe.set_mode_cpu()

に変える。

しかしチュートリアルの2番は画像をDLした後あたりでクラッシュする…。これはまだ解決していない。

参考

今回使わせてもらった Docker は、

Installing all the deep learning frameworks to coexist and function correctly is an exercise in dependency hell.

とあるので複数の deep learning フレームワーク環境を共存させるのが大変、というモチベーションだったようだ。