AWS-EC2のp2インスタンスでchainer-goghの画風変換をGPU実行してみた

  • 2
    Like
  • 0
    Comment

はじめに

DeepLearningの実践入門としてAWS-EC2のp2インスタンスを使用して、chainer-goghの画風変換をGPUで実行してみました。
結論としてp2.xlargeを使用してサンプル通りの画風変換を実行すると、5分程度で処理が完了します。
参考にさせていただいたchainer-goghのGitHub

環境

クライアントPC : macOS Sierra 10.12.4
サーバ : EC2 p2.xlarge (時間課金なので注意してください。)

事前準備

GPUコンピューティングのインスタンスを立ち上げる場合、デフォルトでは作成できないためAWSの担当者に問い合わせを行い、領域を拡張してもらってください。
領域の拡張はEC2ダッシュボードを開いて、左側のメニューにある「制限」から p2.xlarge の規制緩和の依頼ができます。

p2インスタンスの作成

今回はディープラーニングで使用する諸々のツールがインストール済みのAMIを使用します。
※私は"バージニア北部"リージョンを使用しています。
EC2ダッシュボードから「インスタンスの作成」 → 「AWS Marketplace」の順にクリック。
検索窓に「Deep Learning AMI」を入力して検索し、「Deep Learning AMI Amazon Linux Version」のAMIを使用してください。
その後のインスタンスの作成作業は通常のEC2と同じですので、ここでは割愛させていただきます。

環境構築

立ち上げたp2インスタンスにsshで接続して環境構築を実施します。

Pythonのインストール

「Deep Learning AMI Amazon Linux Version」を使用すると最初からPythonの2系と3系がインストールされているので、インストール作業は不要です。
※今回はPython3系を使用します。

Gitのインストール

こちらも最初から入っているので不要です。

Chainerのインストール

下記のコマンドでインストールできます。

sudo pip3 install chainer

Chainer-goghのクローン

必要であれば予めGitHub上で自分のリポジトリにChainer-goghをforkしておいてください。
chainer-goghをサーバにcloneします。

git clone https://github.com/xxxxxxxxx/chainer-gogh.git

モデルのダウンロード

NINモデルをダウンロードしてください。(下記リンク先のDropBoxのURLからダウンロードできます。)
https://gist.github.com/mavenlin/d802a5849de39225bcc6

ダウンロードしたファイルをクライアントマシンからサーバに送信してください。

scp -i xxxxxxx.pem xxxxxxxx/nin_imagenet.caffemodel ec2-user@host:~/chainer-gogh

出力用ディレクトリを作成

cd chainer-gogh; mkdir output

画風変換の実行

コマンドで実行

実行には5分程度かかります。

python3 chainer-gogh.py -m nin -i sample_images/cat.png -s sample_images/style_1.png -o output -g 0

実行結果をダウンロード

ローカルのターミナルでコマンドを実行。
このコマンドではim_04950.pngをDownloadディレクトリ配下にダウンロードします。
このファイルが画風変換した最終結果になります。
100イテレーションずつ途中結果も出力されますので、outputディレクトリを確認してください。

scp -i xxxxxxx.pem ec2-user@xxxxxxxxxx:~/chainer-gogh/output/im_04950.png ~/Download/im_04950.png

後処理

EC2は時間課金になります。
確認が終わったらインスタンスを削除するか停止してください。

まとめ

今回はchainer-goghを使用した画風変換の環境をp2インスタンスで作成し、GPU実行できるところまで確認しました。
AWSを使用することで手元にGPUマシンを用意しなくても手軽に使用できるので大変便利です!