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.は何考えてるんだか..

2018年9月20日木曜日

Donkey Carトレーニング環境構築中に ModuleNotFoundError: No module named 'controller' というエラーが発生する

ここ最近、Donkey Carをちょこちょこ作っている。

Windows10のホスト側PCに
Donkey Carのトレーニングを実行する環境を
整えるために、

Donkey Car
Install donkeycar on Windows
http://docs.donkeycar.com/guide/install_software/#install-donkeycar-on-windows

に従ってインストールを行った。
donkey createcarまではうまくいったのだが、
いざpython manage.py driveしようとしたら..

以下のメッセージが出てきて止まってしまった。

  :
    from controller import LocalWebController, JoystickController
ModuleNotFoundError: No module named 'controller'

むむ、controller.pyなんてgit cloneした中に入っていないんですけど..

と、思い更に調べてみたら、Issue279に挙がっていた。


どうも
git clone https://github.com/wroscoe/donkey
ではなく、きちんとmasterブランチから
git clone -b master https://github.com/wroscoe/donkey
git cloneしろということらしい..


..っていうか、公式ドキュメントにも書いてないぞ...

..と、いうことで、masterのブランチにはcontroller.pyがきっちり存在してました..

2018年9月4日火曜日

Donkey Carの3Dプリンタ出力部品の見積もりを見て驚く

訳あって Donkey Car を作ろうと
いろいろ調べている。

Donkey Car は自動運転をRCカーで行えるように
したオープンソースプロジェクトで、
ソフトウェアだけでなくハード(車の改造部分)も
部品データが公開されており
3Dプリンタさえあれば
誰でも作れるようになっている。


ソフトウェアはMIT、
3Dプリンタ用データは Creative Commons(Non-Commercial)だ。

なので3Dプリンタ出力部品を再販したらだめだが
自分の車に実装する分は自由だ。


メーカなら研究部門とかにあるのかもしれないけど
しがない弱小SIerにはそんなものない。
#昔は似て非なるものの販売代理店してたらしいが..

そこで思い当たるのが DMM.make。

さっそく公開データを使って見積もりをとってみた。

パーツは2つ
・Magnet_Plate_v9:Rasberry Piを組み付ける板
・Magnet_Roll_Cage_v3:ロールバー状の柱でカメラを実装する

結果は、フルカラープラスチック製だと
Magnet_Plate_v9が26,633円で、
Magnet_Roll_Cage_v350,255円。


...いやいやいや、高すぎだよ!

こりゃフルキットを香港のサイトから購入したほうが全然安い!

..ということで、3Dプリンタからフルスクラッチは諦めました..という話。


donkey tubclean 直後の連番再振り直しツールを作ってみた

donkey tubclean を実行すると、連番がとびとびになってしまい、たとえばpython manage.py train を実行すると、エラーになります。 とはいえtubcleanしないデータとしたデータを比較すると、トレーニング終了時間や実行時の自律運転の精度の...