先の記事の経緯ではじめたFloydHub。
FloydHub はとっても簡単だ。
- FloydHub サイトで、アカウントを作成
- FloydHub サイトで、新規プロジェクト構築
- ローカルPCのPython環境で、以下のコマンドを実行
pip install floyd-cli
cd hogehoge
floyd login
- ローカルPC上でブラウザがあがり、トークンが表示されるのでコピー
- ローカルPCのPython環境で、トークンをペーストしてEnter
- ローカルPCのPython環境で、以下のコマンドを実行
floyd init プロジェクト名
- ローカルPCのPython環境で、以下のコマンドを実行
floyd run --mode jupyter --env tensorflow-1.3
- ローカルPC上でブラウザがあがり、Jupyter notebookが起動
ローカルPC環境のPythonが自分のPC以外のDocker環境上からfloydした場合でも、コンソールにURLが表示されるので、コピペしてアクセスすれば使える。
最後の floyd run コマンドに --gpu をつければGPU環境が使える(Freeは2時間まで)。
DataSetsというやつでよく使うコーパスを保存しておいて、最後の floyd run コマンドに --data アカウント名/datasets/データセット名/数字:/store をつけると、/store にマウントされる仕組みだ。floyd run 実行時、カレントディレクトリ内のファイルをアップロードするのだけど、毎回大量データをアップするのは時間の無駄だ。そういうときに--dataを使えばいい。
jupyter notebook 環境でさすがにTerminalは使えないだろうと思っていたら、きっちり使えるようになっていた..
で、調子に乗って tornado ベースのWebアプリを立ち上げてみようとしたけど..
上がるには上がったけど..URLは..どこ?!
いろいろやってみたがダメだった..
floyd logs プロジェクト名 でログが見えるが、先頭のほうでDockerコンテナらしき記述があった。
--portを指定していないはずなので使えんわなあ..
どうも--mode server にすれば、Flaskのみポート5000番限定で使えるようになるらしい..
..ようは推測アプリをFlask のREST APIで組むなら、使ってもいいよということらしい。
起動をapp.pyにしてポートを5000で固定実装すれば..とおもったが、pipできない..
通常のコマンドなら floyd_requirements.txtにパッケージ名を箇条書すれば良いんだけど..
ぐぬぬ..
とはいえ、機械学習限定のPaaSかあ...
もうちょっと、つかってみよ..
p.s.
重要なことをわすれていた。
FloydHub で Jupyter notebookとして使った場合、ブラウザを閉じるだけではなく、かならずプロジェクトをストップしておくこと。FloydHubの管理コンソールでもいいし、コマンドラインなら floyd stop アカウント名/projects/プロジェクト名/番号 を実行すること。
そうしてないとFreeでもらった時間をゴリゴリ削ってしまう。
しかも課金していようものなら..月単位らしいからそれほどシビアに管理しなくてもいいのかもしれないけど、ついうっかり動かしたまんまで、長期出張やら休暇なんかににでちゃったら..
裏でカキンカキンされちゃう..
p.s.2
今朝ジョブがTimeoutで落ちていた。
ログを見ても最後までやっている状態ではないらしい.....
でドキュメントを検索してきたら、
すぐにこんなのが見つかった。
Why did my job timeout after 1 hour?
You are likely in the Free Trial Plan. Jobs run in the trial plan have a maximum runtime of 1 hour. It will automatically timeout after that.
You can upgrade to the Paid Plan to overcome these limits.
なぜ私のジョブは1時間後にタイムアウトしたのですか?
あなたは無料トライアルプランの可能性が高いです。 トライアルプランで実行されるジョブの実行時間は最大1時間です。 その後、自動的にタイムアウトになります。
これらの制限を克服するために有料プランにアップグレードすることができます。
1時間でぶち切られるなら、なかなか難しいぞ..