LoginSignup
2
10

More than 5 years have passed since last update.

MXNet を試せる環境をwindows10 に構築する

Last updated at Posted at 2017-08-11

MXNet をWindowsのPythonで使いたい

Deep Learning で学習をしていると、何かと時間がかかるのが気になるということで、
現在のところ高速に動くのはMXNetかCNTKということで、MXNet のインストールを試みた。
本家のドキュメントは若干古かったりして、あれ?と思うところがあったので、
自分が構築した手順を備忘録として書いてみました。

ダウンロード

windows の prebuild 版の最新版は以下のサイトからDLできる

まずは、vc12, vc14 のどちらかの関連ライブラリパッケージをダウンロードする

  • vc12 base package
  • vc14 base package

python3.5 が vc14 でビルドされているので、それに合わせて vc14 base package (約73MB)を選択する。

次に本体の prebuild版 をダウンロードする。cuda の準備ができていると思うので、gpu版(約18MB)をダウンロードする。 
7z 形式の圧縮なので、http://forest.watch.impress.co.jp/library/software/7zip/
とかで解凍ツールをダウンロードしておく。

  • 2017XXXX_mxnet_x64_vc14_cpu.7z
  • 2017XXXX_mxnet_x64_vc14_gpu.7z

展開

ドキュメントでは c:\mxnet に展開すると書いている。
自分は適当に以下のようなフォルダを作成して展開した。

c:\work\mxnet

vc14 base package の 7z を展開。

  • 3rdparty/
  • include/
  • lib/
  • python/
  • LICENSE
  • README.txt
  • setuenv.cmd

が含まれていた。3rdparty/cudnn/Readme.txt を見ると、自分で cudnn をDLして配置しろと書いてある。今回は cudnn 5.1 を設定する。
ちなみに 3rdparty/cudart/ を見ると、 cudart64_80.dll とあるので、CUDA8.0 64bit + cudnn 5.1 の組み合わせになる(ダウンロードされるバージョンによってアップデートされる)

  • cudnn-8.0-windows10-x64-v5.1.zip

をDLして 3rdparty/cudnn の以下に展開したファイルをコピーした。

次に、2017XXXX_mxnet_x64_vc14_gpu のファイルを展開したものを
prebuildbase_win10_x64_vc14 にコピーする。ここまでの状態で

c:\work\mxnet\prebuildbase_win10_x64_vc14\

  • 3rdparty/
  • build/
  • include/
  • lib/
  • nnvm/
  • python/
  • LICENSE
  • README.txt
  • setupenv.cmd

となっている。

Python 環境の設定

ドキュメントには setupenv.cmd を実行して、python/setup.py でインストールするとなっているが、まずは mxnet 用の仮想環境での利用を想定する。

windows の場合の仮想環境は、anaconda が便利。全部入りのものをダウンロードしてみ良いが、最低限の状態からインストールをする場合には、miniconda が良い。opencv のパッケージの関係で、使用するpythonは 3.5 とした。

conda による仮想環境設定

仮想環境名は -n で指定して、ここでは mxnet にした(任意で構わない)。
その後に、python=3.5 でバージョンを3.5 指定。numpy, scipy, cython は必要なのでインストール時に設定。ipython はテストで使いやすいので、ついでにインストール。

conda create -n mxnet python=3.5 numpy scipy cython ipython

ダウンロードされて、インストール先は c:\Anaconda3\envs\mxnet などになる。

無事に設定されると、この仮想環境を利用するコマンドプロンプトから

activate mxnet

で仮想環境を利用する状態になる。

MXNET のPATH 設定

setupenv.cmd を見ると、3rdparty のフォルダへのパス設定がPATH に加えられる。しかし、既に PATH の文字列が 1024 を越えている場合には失敗する。

ここでは、以下のフォルダの 絶対パスを環境変数 PATH に加える必要がある。

  • 3rdparty\openblas\bin
  • 3rdparty\gnuwin
  • 3rdparty\vc
  • 3rdparty\opencv
  • 3rdparty\cudart
  • 3rdparty\cudnn\bin
  • lib\

要は、これらのPATH を設定するスクリプトを作成した。 c:\work\mxnet\mxnetenv.bat というファイルとして

set MXNET_HOME=c:\work\mxnet\prebuildbase_win10_x64\vc14
set MXNET_DEPEND=%MXNET_HOME%\3rdparty
set MXNET_PATH=%MXNET_DEPEND%\openblas\bin;%MXNET_DEPEND%\gnuwin;%MXNET_DEPEND%\vc;%MXNET_DEPEND%\opencv;%MXNET_DEPEND%\cudart;%MXNET_DEPEND%\cudnn\bin;%MXNET_HOME%\lib
set PATH=%MXNET_PATH%;%PATH%

を作成。MXNET_HOMEは各自のパスに設定しなおす
mxnet を使う場合には、この mxnetenv.bat を起動してからおく。

python パッケージとしてインストール

ここまでの段階で python パッケージとしてインストールする準備ができた。c:\work\mxnet に展開したものとして書いているが、適宜読み替えて下さい。

activate mxnet
cd c:\work\mxnet
mxnetenv.bat
cd %MXNET_HOME%\python
python setup.py install

意味は、

  • 先程設定した仮想環境 python 3.5 の mxnet に切り替え
  • インストールしたフォルダに移動
  • 環境変数PATHにmxnet の3rdparty の依存ライブラリパスを追加
  • python フォルダに移動
  • setup.py を使って 仮想環境の site-package にインストール

すると、他の足りてないライブラリなどをダウンロードしながら設定が開始されてインストールが完了します。

テスト

ここで、インストールできているかどうか確認します。
仮想環境の状態で、pythonを起動

import mxnet as mx
a = mx.nd.ones((2,3))
print((a*2).asnumpy())

エラーがなければ以下のようになる(ここでは、ipythonを使った)

(mxnet) c:\work\mxnet> ipython
In [1]: import mxnet as mx
In [2]: a = mx.nd.ones((2, 3));
In [3]: print ((a*2).asnumpy());
[[ 2.  2.  2.]
 [ 2.  2.  2.]]

検証環境の追加

このままだと、何をするにも不便なのでOpenCV3 と jupyter をインストールしました。

conda install -c menpo opencv3
conda install jupyer matplotlib

(OpenCV3 のパッケージは標準ではない。現時点では python3.6 用は配布されていないので、3.5 を使うことになった理由がここにある)

jupyter-notebook

で、jupyter を立ち上げて、「New」-「Python3」で新しいファイルを作成して、先程のテストコマンドが通るかどうかをテスト。

あと、MXNetのtutorial では、グラフを描画するサンプルもあるので、
事前にgraphviz をインストールしたほうが良いです。

さいごに

これで、最新版の mxnet を使えるようになっていると思いますが、mnist などのテストは次の機会ということで・・・

2
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
10