UdacityのDeep Learning Nanodegree Foundation
のコースでFloydHubという便利なサービスが紹介されていました。ディープラーニングのHerokuだそうです。
GPUが使えるプランも月額14ドルからなので、手軽にGPUでディープラーニングを始めることができます。
TensorFlowとKerasがデフォルトですが、他にもPyTorchやChainerなどメジャーなフレームワークはだいたい使えるようになっています。
2017/10/18 追記
この記事を書いた直後に、KaggleのKernelについての記事が投稿されています。Kaggleのデータセットに限って言えば、Kernelを使う方が簡単そうです。
パワーアップしたKernelでKaggleに飛び込もう - Qiita
FloydHubのいいところ
起動が簡単
floyd-cliというコマンドラインツールが用意されていて、それを使うとコマンドラインから簡単に環境を起動することができます。
例えばGPUの環境でJupyter NotebookからPyTorchを使用したい場合は、
floyd run --gpu --env pytorch-0.2 --mode jupyter
と打ち込むだけでJupyter Notebookのサーバーが起動して、少し待っているとブラウザも自動的に表示されます。
SSHでホストに接続してJupyter Notebookを起動するという作業が必要がないので、すぐに使い始めることができます。
floyd-cli自体のインストールも簡単で、普通にpipでインストールするだけです。
pip install floyd-cli
同じNotebookでCPUとGPUを使い分けることができる
Jupyter Notebookで作業をしている場合、GPUインスタンスを使っていても計算をしていない時間が長くなります。
できればNotebookを編集している時は単価の安いインスタンスを使って、計算を実行するときだけGPUインスタンスを利用できるといいんですが、AWSだとインスタンスごとにデータを持つのでなかなか面倒です。
FloydHubでは同じデータでCPUのみの環境とGPUの環境を簡単に切り替えることができるので、無駄にGPUを使うことがなくなります。
データセットをダウンロードしなくてもいい
ディープラーニングでは巨大なデータセットを扱うことが多いので、そのダウンロードにかなりの時間がかかることがあります。
FloydHubではよく使われるデータセットが用意されていて、起動時にマウントすることができるのでダウンロードや解凍する手間を省くことができます。
例えばKaggleのDogs vs. Catsのデータセットを使いたい場合は、
floyd run --data fastai/datasets/cats-vs-dogs/2:/data --mode jupyter
と打ち込めば、/dataディレクトリにデータセットがマウントされます。
料金が事前に決まっている
AWSは使った分だけ後から請求されるので、インスタンスを停止するのを忘れてしまうと大変なことになります。
ディープラーニングに使うGPUインスタンスは1時間100円ぐらいからなので、例えば1ヶ月立ち上げっぱなしにしていると100円×24時間×30日=72,000円もかかってしまいます。
FloydHubは月額の料金が決まっていてその範囲内だけ使用できるという契約になっているので個人で利用するには安心です。
足りなくなればPowerupsというのを購入すれば後から時間を追加することもできるようになっています。
FloydHubのイマイチなところ
使える環境が決まっている
FloydHubではあらかじめいくつかのDockerイメージが用意されていてその中から選ぶことしかできません。
ハードウェアはGPUあり・なしの2種類だけです。
List of Available Environments - FloydHub Documentation
ただし、floyd_requirements.txtというファイルに必要なパッケージを書いておけば起動時に追加のパッケージをインストールしてくれるので、ほとんどの場合は問題ないと思います。
環境が残らない
起動するたびに新しい環境が作られるので、起動後にインストールしたパッケージなどは残りません。毎回インストールするか、それが面倒ならfloyd_requirements.txtに書いておく必要があります。