MXNet、Anaconda などで簡単にインストールできないのが地味にハードルが高い。コンパイルに必要なライブラリもまあまあ複雑。手元の環境を汚したくないとなるとやはり Docker。
チュートリアルの進め方
1. Docker コンテナの起動
(本家の Docker イメージ はちょっと古い & Jupyter が入っていなかったので作りました。自分でイメージをビルドしたい方はこちらを参考にどうぞ)
docker run --rm -it -p 80:8888 pottava/mxnet:0.9 sh
2. コンテナ内で Jupyter を起動
以下、コンテナの中でこのチュートリアルを進めるのに必要なライブラリの追加、Jupyter の起動などをしていきます。
# チュートリアルを取得
apt-get update
apt-get install -y git
git clone https://github.com/dmlc/mxnet-notebooks.git
# チュートリアルに必要なパッケージの追加
pip install matplotlib
# Jupyter を起動
cd mxnet-notebooks/
jupyter notebook --no-browser --port=8888 --ip=0.0.0.0
[I 06:12:34.720 NotebookApp] Writing notebook server cookie secret to /root/.local/share/jupyter/runtime/notebook_cookie_secret
[I 06:12:34.735 NotebookApp] Serving notebooks from local directory: /root/notebook/mxnet-notebooks
[I 06:12:34.736 NotebookApp] 0 active kernels
[I 06:12:34.736 NotebookApp] The Jupyter Notebook is running at: http://0.0.0.0:8888/?token=627f63e7852e6a9cb99efa8f1be495948da80ade36c190c1
[I 06:12:34.736 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 06:12:34.737 NotebookApp]
Copy/paste this URL into your browser when you connect for the first time,
to login with a token:
http://0.0.0.0:8888/?token=xxxxx
3. ブラウザでアクセス
2 の結果の最終行を見ると、Jupyter はコンテナ内では http://0.0.0.0:8888/?token=xxxxx
として起動しているようなので、Docker ホスト上での URL に脳内変換して接続します。(例えば Docker for Mac ならホストは localhost
)
にアクセス。
4. 目的の .ipynb を開く
例として、2 つのチュートリアルに取り組んでみます。
4.1. MNIST の手書き推論
python、tutorials とフォルダを選択していき mnist.ipynb
を選びます。上から順に、チュートリアルを読みつつ実行していきましょう。
利用している Docker イメージは GPU ドライバに対応していない版なので、最後のステップでは mx.gpu(0)
を mx.cpu()
に書き換えて実行する必要があります。
CPU、さすがに時間かかりますね・・
4.2. CNN によるテキスト分類
python、moved-from-mxnet の下にある cnn-text-classification.ipynb
を選びます。(ちなみにこの moved-from-mxnet フォルダ以下のチュートリアル、彼らの移動のさせ方が悪かったようで、一部このままでは動きません。残念)
こちらもステップ [7] で gpu をコメントアウト、cpu をアンコメントしないとエラーになるので注意です。
最後まで完走できましたか?