Translate

2017年9月26日火曜日

FloydHubを使ってKerasのサンプル lstm_text_generation.py を動かしてみる

タイムラインにふらっと入ってきた記事で FloydHubというものを知った。
FloydHub
https://www.floydhub.com/

Heroku風の機械学習環境のPaaSとのこと。

..そもそもHeroku知らないんですけど..というかPythonを使いだしたのも今年からだし..


どうも100時間無料らしいし、
AWSのように事前カード情報登録も要求されないらしい
(今のところ..かもしれないが..)ので
ためしに使ってみることにした。


サンプルコードは

lstm_text_generation.py :ニーチェの著作からテキスト生成
https://github.com/fchollet/keras/blob/master/examples/lstm_text_generation.py

のニーチェデータをダウンロードするところを

青空文庫
http://www.aozora.gr.jp/

の著作権が問題なさそうな日本語テキストを使った。

ここのサイトは数少ない日本語データサイトで、
太宰治の人間失格や宮沢賢治の風の又三郎、
夏目漱石の坊っちゃんなどがコーパスとして使えたりする。


ルビ付きテキストデータは、
先頭とお尻にメタ情報があるのでこれを外す必要がある。
あと《.. 》でルビを降っている部分と
[#..]で入力注がある部分は正規表現でカットして
Shift_JISをUTF-8にして、改行をLFのみにする。

このファイルを読み込んで動くように lstm_text_generation.py
修正しておく。

データ含め全部同じディレクトリへ置いておく。


JupyterコンソールのTerminal から

pip3 install floyd-cli

を実行してfloydコマンドを使えるようにする。


最初に実行する

floyd login

を実行するとローカルのブラウザ上げるぞみたいなメッセージが出てあせった。
キー情報をブラウザ上二表示するからコピペせよといってくるのだ。

Dockerコンテナで動かしているJupyter notebookなので
ブラウザ以前にXなんかも当然入っていない..

が、FloydHubサイトへログインして Setting>CLI Auth Tokenへいくと
取得できるようになっているので大丈夫だった..

次にサイト上でProjects>NewProjectで
適当なプロジェクト名入れて新規プロジェクトを立ち上げる。



再度Terminalで先程用意したデータとPythonファイルのある
ディレクトリへもどり

floyd init <プロジェクト名>

を実行して


floyd run --env tensorflow-1.3 "python <修正したPythonファイル名>"


を実行する。



しばらくアップロードしてそうな情報が出て動き出すが
プロンプトは帰ってくる。

floyd logs <プロジェクト名>

でコンソールを参照できるのだけど
一部だけしか見れないのでサイトの該当プロジェクトのConsoleへいくと
以下のように見ることができる。




40文字をインプットにして次の1文字を予測するLSTMモデル(128セル)なのだけど..
今のところ、完全な日本語になって無いところのほうが多い..

あ、ローカル環境で動かしていたのでiterationを40にしちゃっていたよ..

なんか重くなりそうだったからコールバック関数は一切仕込んでなかったけど
PaaSなら誰にも迷惑かからないから仕掛けていても良かったか..



無料環境はCPUのみなので floyd run --gpu を付けるとエラーになる

..コンソールの更新がひどく遅い...

GPU(有償ユーザ)になったらもっとヌルヌル流れていくのだろうか..



..そういや、生成している文章の著作権って..誰のになるんだろう..

..太宰?、サンプルコード作者?修正した私も少し権利ある?...







..2時間位まわしていたら、Consoleに

Your logs have exceeded our length guidelines for Running jobs.
Please refresh the page or download logs to view your current job's logs.


ログが実行ジョブの長さガイドラインを超えました。
現在のジョブのログを表示するには、ページを更新するか、ログをダウンロードしてください。

と出てログが更新されなくなった。
ブラウザの更新ボタンを押したが、上記メッセージが最後に出てその後一切出てこなくなった..
Console右上にあるダウンロードボタンを押せば見えるけど..
....毎回ファイルにダウンロードしないとダメなの?


生成したテキストをファイル化するように加工しとけばよかったか..


0 件のコメント:

既存アプリケーションをK8s上でコンテナ化して動かす場合の設計注意事項メモ

既存アプリをK8sなどのコンテナにして動かすには、どこを注意すればいいか..ちょっと調べたときの注意事項をメモにした。   1. The Twelve Factors (日本語訳からの転記) コードベース   バージョン管理されている1つのコードベースと複数のデプロイ 依存関係 ...