数年ぶりに、とても印象的なサービスに出会った。
FloydHubは、ディープラーニングに特化したPaaSである。一言で説明すると、Heroku for Deep Learningである。TensorFlowやPyTorchで書いたプログラムを、簡単に強力なサーバー上で実行できるクラウドサービスだ。
処理能力という壁。GPU搭載マシンが欲しい。
自分で機械学習アプリケーションを書き始めて数ヶ月、iMacでの開発/デバッグに限界を感じる機会が増えてきた。ネットワークの層が増え、データセットが大きくなってくると、一回の学習に数時間〜数日かかるようなケースが出てきてしまった。
ニューラルネットワークはGPUを使った演算と相性が良い。CPUのみで処理する場合と、CUDA対応GPUを使って処理する場合では、数倍から数十倍も実行速度が違ってくることがある。ローカルのMacでは1日かかる処理が、機械学習用のマシンだと2-3時間で終わってしまう、という程度の違いがあり、この差はDeep Learningを楽しむ上で大きな障害となってくる。
プログラムやデータセットをいじって、変更の結果がどうなったかわかるまで1日以上かかる、という状況では、実験も勉強も捗らない。
しかし、自前で用意するのもレンタルサーバーを借りるのも結構お金と手間がかかる
数十万円規模の予算があれば、自分で強力なGPUを搭載した機械学習用マシンを用意するのも良いかもしれないが、個人でそれができる人は限られているだろう。(そして、残念ながら自分もそこには含まれていない)
AWSのP2インスタンスやさくらの高火力コンピューティングといった、機械学習に特化したレンタルサーバーもあるが、そこそこ高額な上、自分で環境を構築する必要もあり、やはり個人で気軽に使うにはハードルが高い。
アカウント登録から30分後には自分のプログラムの学習をGPUインスタンスで動作できた
そんな中でFloydHubの存在を知ったので、早速試してみた。感動した。試そうと思って調べ始めて、30分後には自分のKerasで書いたプログラムとデータセットを使った学習を、GPU搭載の高速なサーバー上で実行することができた。
公式のチュートリアルが充実しているので、具体的な手順の説明は省略するが、
- FloydHubのアカウントを作成する
- cliで学習用のソースコードをアップロードする(一部学習結果の出力先ディレクトリ名を変更した以外、ローカルで使っていたものから変更なし)
- cliで学習用のデータセットをアップロードする
- アップロードしたプログラムを実行する
- 実行結果(学習済みモデル)をダウンロードする
これだけの手順で、特に何も設定することなく、スムーズに動かすことができた。まさにHeroku for Deep Learning、場合によっては本家HerokuにRailsアプリをデプロイするよりも簡単だったかもしれない。結果のダウンロード用に、学習のスナップショットファイルの保存先を書き換えた以外、何も変更しなくてもそのままプログラムを実行できたことに、非常に感動した。
そして、処理速度が速い。手元のiMacで300秒かかっていた処理が、FloydHub上では25秒で完了した。これは、限られた時間の中で色々なアイデアを形にして試行錯誤していく上で非常に嬉しい。
$14/月から使える。個人デベロッパーは試す価値がある。
FloydHubはHeroku同様に、基本的に月額課金のプランが用意されている。今自分が利用しているのは$14/月のプランで、これは月にCPU20時間、GPU10時間分の処理リソースを使うことができる。従量課金のAWSと違って「インスタンスを落とし忘れて高額請求がくる」という恐怖がないのも嬉しい。
ダッシュボードも、ドキュメントも非常にわかりやすく、とにかく素敵なサービスだ。機械学習をやっている個人デベロッパーの方はぜひ使ってみてください。
FloydHub