TL; DR
AWSは初期状態でGPUインスタンスを立てられない設定になっていることがあるから気をつけましょう
学校で「ディープラーニングを使って何かを作れ」という課題が出たのでGenerative Adversarial Text-to-Image Synthesisを動かそうと思ったのですが、どうやらこれはGPUがないと動かないコードのようで手元で動きませんでした。
締め切りも近く自分で学習させている暇はないのでAWSを借りることにしました。
AWSはAmazonが運営しているサーバーサービスで、Amazonの全営業利益の半分以上を稼いでいるそうです。
Deep Learning AMIを使う
時間課金されるAWSで環境構築してる暇はないので、既に環境構築されている環境がないかなと思って調べたらBitfusion Boost Ubuntu 14 Torch 7という環境構築済みのイメージがあったので使うことにしました。値段は$0.066/hrなので環境構築にハマる時間を考えたら十分元が取れそうです。
GPUが使えるインスタンスはP2とG2があり、一番安いg2.2xlargeを使うことにしました。値段は変動するそうなのですが、使ったときは$0.65/hrだったので1日くらいならあまり負担になりません。
まずは、クラウドでの Linux 仮想マシンの起動方法 – AWSのチュートリアルに沿って無料枠のサーバーでSSHの仕方などを学びました。
次に、Documentation: Machine Images - Bitfusion.ioに従ってDeep Learning用のインスタンスをセットアップしましたが、ここで問題が起きました。
ドキュメントの画像によると
でLaunch with 1-clickを押せばインスタンスが起動するはずなのに何分待っても起動が確認できませんでした。
起動していなければいいのですが、起動の確認方法を知らないだけで料金が発生しているかもしれないと思うと怖くなり一旦アカウントを削除しました。
翌日、AWS GPUインスタンスを利用して高速な機械学習環境を手に入れよう | Tech-Sketchに従って動かしてみたところ
You have requested more instances (1) than your current instance limit of 0 allows for the specified instance type. Please visit http://aws.amazon.com/contact-us/ec2-request to request an adjustment to this limit.
というエラーが発生しました。どうやら新しいアカウントではGPUインスタンスの数に制限があるようです(DashboardのLimitsから確認できます)
昨日AWSを動かせなかった理由を理解した。初期状態のアカウントではg2.2xlargeを最大0個までしか立ち上げられないという制約がかかっていて、制約を増やせと申請する必要があるのに、1-click launchボタンではエラーメッセージが見えなかったということらしい。 pic.twitter.com/R1dgWKRUJ1
— かわな (@kivantium) 2017年1月18日
LimitsページのRequest limit increaseから「g2.2xlargeの制限を増やしてくれ〜」と申請したところ1日半くらいでメールが届いて使えるようになりました。
やったぜ pic.twitter.com/57jf4nxk7Z
— かわな (@kivantium) 2017年1月20日
この状態でBitfusionのAMIでg2.2xlargeを立てたところTorchの環境は完璧に整備されている上にgitなども揃っていて、必要なデータを転送するだけで目的のコードを動かすことが出来ました。Bitfusionは他にもTensorFlowやChainerなどの環境構築済みのAMIを売っているようなので必要があったら使ってみようと思います。
AWS Marketplace: Bitfusion.io
以上をまとめると、
- Launch with 1-clickボタンはエラーが出なくて怖い
- 環境構築済みAMIは便利、金で時間を買おう
ということになります。
何を作ったかは明日の発表会が終わったら記事にします。
twitter.com