Translate

2018年9月26日水曜日

Donkey CarのトレーニングをFloyd Hub上で実行する

Donkey CarのトレーニングをローカルPCでやると
がっつり重くなって他の作業ができなくなるので
Floyd Hubで処理させることにした。

Floyd Hubは、機械学習コードの実行に特化したPaaSで
CPU(Xeon 2コア)は毎月一定時間無料で使用できる。
#無料枠時間は変更されることがあるので明記したくないのだけど
#私が使っていたときは24時間毎月使えていた。

Donkey Carのドキュメントには
AWS SageMakerで実行する方法が
のっているのだけどx1を使う時点で課金環境のようなので却下。

貧乏人はFloyd Hubの無料枠でシコシコ実行だ..
#それかGoogle Colabか



先にdonkeycar、floydhubとfloyd-cliをpip install しておく。

donkey createcar ~/mycar --template donkey2

を実行した後で

Floyd Hubサイトで新規データセット hogehoge を作成し

cd ~/mycar/data
floid login fugafuga
floyd init fugafuga/hogehoge
floyd data upload

を実行して学習コーパス(tubデータ)をサーバへ先にあげておく。

次に Floyd Hubサイト上で新規プロジェクト korekore を作成しておく。


~/mycar/train.sh というファイル名で


#!/bin/sh
git clone -b master https://github.com/wroscoe/donkey
cd donkey
pip install -e .
donkey createcar /mycar --template donkey2
cd /mycar
python manage.py train --tub /my_data --model /output/mypilot

というスクリプトを作成する。

そして ~/mycar/.floydignore というファイルを作成し、

data

とだけ書いて保存する。

そして

cd ~/mycar
floyd init korekore
floyd run --cpu --env tensorflow-1.7 --data fugafuga/datasets/hogehoge/1:/my_data "sh train.sh"


と実行すれば、CPUのみを使ってトレーニングを開始する。


自分の学習コーパスでは
100エポック完了させる前に
Early Exitが働いて1時間ほどで止まってしまう

..ので無料枠で十分学習できる。
ついでにtubデータをローカルPCから削除できるので
(Floyd Hubのデータセットとして保管しているから)
容量としてもスッキリ。


GPUやGPU2にするには --cpu--gpu--gpu2 にすれば動きます。
ちなみに以下の画面スナップは、同じ学習コーパスデータセットを使って
GPU/GPU2/CPUの費やした処理時間をあらわしています。


この場合は、GPU2を使うのなら、もっと単価の安いGPUを使うのが良い
という結果がでましたが、ランダムにセットするパラメータにより
Early Stopが効くまでの処理時間がかわるので、あくまで参考..です。

p.s.
2018/10/16 追記

実は"sh hogehoge.sh"が上手く動作しなくなってしまった。
シェルスクリプトの各行を&&(半角アンパサント2個)でつないで
floyd run コマンドで指定して実行するので、かっこ悪いけどこの方法で..

コンテナってイミュータブルなのが売りなんじゃないのかねえ..
FloydHub Inc.は何考えてるんだか..

0 件のコメント:

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

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