AWS EC2 に Julia 開発環境を構築し MXNet.jl でGPU処理したい

Pocket

Julia Advent Calendar 2017の4日目の記事です。

最近は田中TOMという名前で、データサイエンスコンペティションサイトのKaggleの問題に挑戦するYouTube動画を投稿してます。

田中TOM - YouTube

普段 Julia 言語を使って解析をしていて、AWSでAmazonが公式にサポートしているMXNetをGPU使って処理してみたかったのでチャレンジ。

実は、既に MXNet.jl をAWSで動かして記事にしてました。

AWS の Deep Learning AMI を使って EC2 インスタンス上で 最新のJuliaを動かせるように

けど、この記事を書いた後に使っていた Deep Learning AMI が大幅に変更された。

AWS Deep Learning Conda と Base AMI の利用開始について | Amazon Web Services ブログ

そして、Julia 0.6.1だとインストールが失敗するためPkg.build('MXNet') してビルドして使っていた MXNet.jl も v0.3.0 がリリースされてインストールできるようになったぽい。

なので環境構築を最初からやり直して、AWS上で動かせるようにして、サンプルコードを使ってCPU処理とGPU処理でどれだけ速さが違うのかも確かめてみる。

利用する EC2 環境

  • インスタンスタイプ:  p2.xlarge(GPUを利用するため)
  • AMI: Deep Learning AMI with Conda (Ubuntu) – ami-f0725c95

サーバーへsshログイン

最後の -L オプションを使うことで、サーバーの8888ポートをローカルとしてつかえるので jupyter notebook を使う場合に便利。

$ ssh -i your-key.pem [email protected] -L 8888:localhost:8888

Juliaのインストール

Ubuntuだと最新のJulia 0.6.1 がインストールできないのでビルドする。最初から必要なライブラリ系はだいたい揃ってるみたい。並列処理で make するけど、それでも結構時間かかる。

$ sudo su -
# apt-get update
# apt-get install libpango1.0-0 -y
# add-apt-repository ppa:staticfloat/julia-deps -y
# apt-get update
# cd /usr/local/src
# git clone https://github.com/JuliaLang/julia.git
# cd julia
# git checkout v0.6.1
# echo "JULIA_CPU_TARGET=core2" > Make.user
# make -j 4 julia-deps
# make -j 4
# make install
# ln -s /usr/local/src/julia/julia /usr/local/bin/julia

MXNet.jlのインストール

juliaコマンドで起動してパッケージをインストール。以前はMXNetがインストール失敗してたけど、バージョンアップでインストールできるようになった。

$ julia
> Pkg.add("IJulia")
> Pkg.add("MXNet")

Jupyter notebook でCPUとGPUを比較

jupyter notebook を実行して、MXNet.jl のサンプルコードでMNISTのデータを処理する。先にCPUでやってみて、後半GPU。変更部分は context=mx.gpu(0) の部分。

CPUとGPUの比較結果

CPUだと1epochの処理に100秒かかっているのが、GPUだとなんと1秒に。パネェ。

今回作ったAMI

オハイオで公開しています。

AMI名: deep learning julia mxnet 2017-12-02
AMI ID: ami-0a270e6f

Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です