MXNet セットアップ
概要
Apache MXNet は高速でスケーラブルな機械学習フレームワーク。Gluon という高レベル API が付属しており AWS が正式にサポートしている。
プラットフォーム設定
Windows 10 (Bash on Ubuntu on Windows)
MXNet 0.9.3a はプラットフォームのネイティブライブラリに強く依存しているため Scala であっても環境依存性は高い。とりわけ Windows では共有ライブラリが用意されていない現状から Bash on Ubuntu on Windows を使用する。
libc6-2.23 などいくつかのライブラリが Ubuntu 16.04 に依存しているため Bash on Windows に Ubuntu 14.04 を使用している環境では 16.04 へアップグレードする必要がある (参考)。Ubuntu のバージョンは lsb_release
コマンドで調べることができる。
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.5 LTS
Release: 14.04
Codename: trusty
Bash on Windows で Ubuntu 16.04 が利用できるのは Fall Creators Update を適用した Windows 10 からである。ここでは Creators Update の適用方法は省略する。
Creators Update の適用が済んだら Windows のコマンドプロンプトで lxrun /uninstall
を実行して既存の Ubuntu 14.04 をアンインストールする。
この操作によって Ubuntu 上の home は維持されるが apt-get で導入したアプリケーションやライブラリなどは初期状態に戻るため 16.04 インストール後に再度インストールする必要がある (/full オプションを使用すると home の下も削除される)。
C:\...> lxrun /uninstall
これにより Windows 上の Ubuntu がアンインストールされます。
Ubuntu 環境および次の項目を除くすべての変更内容と新しいアプリケーションが削除されます。
C:\Users\torao\AppData\Local\lxss\home
C:\Users\torao\AppData\Local\lxss
oot
続行するには、"y" を入力してください: y
アンインストールしています...
Creators Update が適用されている Windows 10 で lxrun /install
を実行すると Ubuntu 16.04 が導入される。
C:\...> lxrun /install
-- ベータ機能 --
これにより Windows に Ubuntu がインストールされます。Ubuntu は Canonical によって配布される製品であり、
次のサイトに示される条件に基づいてライセンスされています。
https://aka.ms/uowterms
続行するには、"y" を入力してください: y
Windows ストアからダウンロードしています... 100%
ファイル システムを展開しています。この処理には数分かかります...
Ubuntu のロケールを Windows のロケール (ja-JP) と一致するように設定しますか?
既定のロケールは en_US です。
続行するには、"y" を入力してください: y
既定の UNIX ユーザーを復元しています: torao
新しい UNIX パスワードを入力してください:
新しい UNIX パスワードを再入力してください:
passwd: password updated successfully
インストールが正常に終了しました
>bash
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.2 LTS
Release: 16.04
Codename: xenial
以降は Ubuntu 16.04 での手順と同じである。
Ubuntu 16.04
Ubuntu 16.04 環境では apt-get
でリポジトリとライブラリを最新版にアップデートする。以下は MXNet の導入で追加したライブラリを載せているが、実行時に UnsatisfiedLinkError
が発生するのであれば随時 apt-get でインストールして行けば良い。
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install -y libatlas-base-dev libopencv-dev
Scala で動作させるためには当然ながら Java と Scala (あるいは sbt) を追加する必要がある。
サンプルの実行
MXNet 0.9 が前提としているのは Scala 2.11 である。build.sbt
の libraryDependencies
に以下の 2 ライブラリを追加すれば MXNet を利用することができる (GPU が利用可能な環境では -cpu
を -gpu
に書き換えれば良い)。
scalaVersion := "2.11.12"
libraryDependencies ++= Seq(
"ml.dmlc.mxnet" % "libmxnet-scala-linux-x86_64-cpu" % "0.9.3a",
"ml.dmlc.mxnet" % "mxnet-full_2.11-linux-x86_64-cpu" % "0.9.3a"
)
サンプルコードは Github の scala-package/examples/ から探せば良い。