はじめに
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マシンを用意しなくても手軽に使用できるので大変便利です!