こんにちは!
今年ももう残すところ数日となりましたが、皆さまいかがお過ごしでしょうか。
ラーニングサービス本部 テクニカルトレーニング 第1部の山下です。
今年の最後に一番嬉しかったことについて書きます。
AWS re:Invent 2019 ARIA会場 The QuadのAWS DeepRacerサーキットでのタイムトライアルで3日目の瞬間1位になりました!
ものすごく嬉しかったので、ここまでの軌跡とともに、皆さまに報告いたします。
目次[非表示]
http://reinvent.awseventsjapan.com/
AWS(Amazon Web Service)が年に1回開催している技術カンファレンスです。
2019年は12月1日から6日の期間でラスベガスの複数のホテルを展開して開催されました。
4回の基調講演と3,000を超えるセッションやパートナー展示ブースやハンズオンがあり、夜な夜なパーティーや、ラストナイトにはre:Playという盛大な打ち上げイベントもありました。
参加者は全世界から65,000名を超え、日本からも1,700名を超える参加者だったとのことです。
私は普段AWS Authorized InstructorとしてAWS認定トレーニングコースを担当している関係もあり、re:Inventに参加いたしました。
参加レポートは別記事でお知らせします。
https://aws.amazon.com/jp/deepracer/
強化学習を実践的に学ぶためのサービスです。
1年前のAWS re:Invent 2018で発表された強化学習で完全自走する1/18スケールカーです。
(ラジコンと表現される方もいらっしゃるようなのですが、走る時は操作しませんのでラジコンだと意味が違ってきます。)
車自体のOSはubuntuで前面のカメラに映った車線などを判断して、事前に学習した走り方で走ろうとします。
これはコースを学習するという意味ではなく、車線などいくつかの条件に対して自分がどのように走るべきかを学習しているという意味です。
この学習のためにクラウド上のコースをシミュレーターを使ってトレーニングをします。
トレーニングではPythonの報酬関数を使って、いかにポイントを与えるかを定義していきます。
そしてシミュレーターのふるまいに対して報酬を与えたり減らしたりします。
簡単に言うと、素敵な走り方をしたら褒めます。
よくない走り方をしたらあまり褒めないか、一切褒めません。
怒ったりはしません。
怒るやり方もあるかもしれませんが、私は知りませんし、知りたくもありません。
そうして生まれたモデルをダウンロードして、実機であるDeepRacerレーシングカーにUSB経由でインストールして、実際のコースを走らせてタイムトライアルをします。
私はAWS re:Invent 2018の基調講演で出会って、そして帰国後のAWS Summit 2018 Tokyoでとにかく触ってみる、というところからスタートしました。
AWS Summit Tokyo 2019開催の幕張近くの宿泊していたホテルで、ようやく初めてのシミュレーションを開始しました。
AWS Summit で開催されていたハンズオンにも参加できなく、調べたわけでもなく完全に独学というか、やってみたというだけのレベルでやってみてました。
多分、このときって本当に何もわかってなくてこの画像を見る限り、もともとあるモデルでEvaluationしてみただけですね。
Evaluationはその名の通り、そのモデルをトラックで走らせてみたらどうなるかを評価するのがEvaluationです。
ですので、何度やってもなんの学習にもならないんですね。
この後に開催された6月27日のAWS Summit Osakaでようやくハンズオンに参加してモデルの作り方を学びました。
バーチャルサーキットというものが、毎月開催されているということを聞いて、とりあえず6月のバーチャルサーキットにエントリしてみました。
自分が生み出したモデルを選択して開催中のサーキットに送り込むか、開催中のサーキットを選択してエントリアクションからモデルを選択するか、どちらからもサブミットできます。
エントリにサブミットした後は、少し待つと走り終わって結果が表示されます。
最初の平均ラップは39秒台でした。
553エントリ中260位でした。
6月のトラックはkumo Torakku という名前で日本をイメージしているそうです。
モデルのトレーニングコースにも、少し違うのですが同じような特徴をもったKumo Torakku があります。
トレーニング済みのモデルを選択して、アクションメニューからクローンを実行して、報酬関数を考え直して、そしてKumo Torakku を選択して2時間トレーニングしてみました。
そして生まれ変わったモデルでもう一度エントリです。
ラップが21秒台にまで縮みました。
順位も124位です。
この時点でエントリ総数も増えて572位でした。
報酬関数で色々試してみることで効果が出ました!
これ以上やるにはなかなかコストがかかりそうでしたので、今月はこれぐらいにしておいてやろうと、6月のトライは終了です。
翌日の7月1日にEmpire Cityという新しいサーキットがオープンしました。
早速Kumo Torakkuで21秒台を出したモデルをそのままエントリしてみました。
まだ、5エントリだけでしたので、4位です!
でも36秒台です。
こんなラップで順位をキープできるはずもありません。
今回もEmpire Cityのモデルトレーニング用コースも出来てましたので、モデルのクローンを作成して、1時間トレーニングしてから、再びエントリしてみました。
ラップは4秒しか縮まりませんでした。
エントリも倍に増えて、ランキングは2つ下がりました。
やはり報酬関数を見直さないとです。
もう一度クローンを作って、報酬関数を見直して2時間ほどトレーニングしました。
そして翌朝エントリです。
結果は、25秒台で7秒縮まりました。
まずまずです。
ここから毎月バーチャルサーキットに参加することが、私の月課になりました。
月課と言いつつ、8月は完全に月初に忘れてましたので、月中で参戦です。
いつものように、今月のサーキットでモデルをトレーニングして、そしてエントリです。
初の20秒台ラップが出ました。
でも20秒ですと、順位は698エントリ中233位なんですね。
上位3割にも入れないんですよね。
9月からは覚えてましたので月初にトライしました。
22秒台です。
薄々思い始めたのは、報酬関数やトレーニング結果のログもちゃんと向き合って分析して、試さないと、一辺倒なやり方を続けていても、10秒台の壁は超えられないんじゃないか、と。
でも、この時点では注力するコストも時間も自分の中で、優先度をあげていなかったので、取り組みませんでした。
いつもと同じく、先月終わりのモデルからクローンを作成して、新コースでトレーニングしてエントリしました。
21秒台でした。
でもこの片手間でやれるやり方で、当面はやり続けます。
AWS DeepRacerに関しては、どこか記録するルーティンワークになりかけていたこの頃、JAWS-UG(Japan AWS User Group)コミュニティのお祭り、JAWS Festa 2019 Sapporoが札幌で開催されました。
弊社トレノケートも企業サポーターとして参加したり、私個人も当日スタッフとして参加していましたので、現地へ向かいました。
私が手伝うメインイベントは、DeepRacer特設サーキットの設営と運営です。
ビニールのDeepRacerサーキットのシートを敷いて、まわりに壁を作ります。
壁が必要なのは、DeepRacerはカメラに映った画像で判断しているので、コースの外が映ってしまうと、誤判断をしてしまう可能性があるためだそうです。
ほぼ出来てきました。
参加者の方が走らせるまで少し時間がありました。
「ん?これはもしや自分のモデルを実機で走らせてみるチャンスなんでは?」
と思い、AWSJさんに恐る恐る聞いてみたところ、ご快諾いただきました!
マネジメントコンソールのDeepRacerモデル一覧から、10月のバーチャルサーキットで走らせたモデルを選択して、[Download Model]メニューからダウンロードします。
AWSJさんにお借りしたUSBのmodelディレクトリに、ダウンロードした圧縮ファイルを保存してAWSJさんに渡します。
そのUSBをDeepRacer実機に接続してインストールしてもらいます。
走らせるのはすごく簡単で、タブレットからの操作はスピードをあげたりさげたりするだけです。
基本的には上げ下げは、マシンとコースの状態を見ながら調整するだけで、カーブで下げたり直線で上げたりとするものではないようです。
走らせてみましたところ、コースをはみ出さないように、一生懸命走るのですね。
なんて可愛いのでしょうか。
なんと健気なのでしょうか。
これまで数ヶ月、毎月トレーニングしてきてよかったなあと思った瞬間でした。
Festaから帰ってきてバーチャルサーキットにまた勤しみます。
来月はいよいよre:Inventということで、バーチャルサーキットもチャンピオンシップにちなんだコースになっているようです。
27秒台です。
早くはないですが、実機でも走った姿を見てるので、ちゃんと走ってくれただけで、もはや記録さえも微笑ましく見えてきます。
相変わらずかわいいやつです。
12/1からre:Invent 2019に参加しました。
12/5の朝の基調講演でDeepRacerチャンピオンシップが開催されて、DNPさんがワンツーフィニッシュされました。
同じ日本企業として、誇らしかったです、眩しかったです。
この日は、メイン会場のベネチアンで開催されているExpoという展示会場と、アリアで開催されているQuadという展示会場が最終日でした。
Expoはすでに何回か行ってたので、Quadも各ブースをまわろうと思って向かいました。
アリアのQuadに到着すると、なんとそこにはDeepRacerのタイムトライアルコースがありました。
もちろん調べたらすぐにわかる情報なんでしょうけど、ろくに調べずにいきあたりばったりでQuadに来た私には青天の霹靂でした。
チャンピオンシップの予選が行われた各国のSummitに設置されていたのと同じ本格的なサーキットコースです。
逸る気持ちを抑えながら受付のスタッフに「I have my model」と告げました。
USBを受け取り、持っていたMacbookでマネジメントコンソールにサインインし、直近のDeepRacerモデルをダウンロードします。
USBのmodelディレクトリに格納してスタッフに渡します。
制限時間内は何回でもトライアルができるようです。
そして最速ラップが記録されるようです。
このときの自分はあまり期待していなくて、これで「本場で走らせてきました」「公式コースでコースアウトせずに完走しました」と報告できる、という安堵感に包まれていました。
札幌と同じようにラスベガスでも健気に走ってくれます。
札幌と少し違ったのは攻めているように見えました。
特に最初のヘアピンで遠心力さえ生み出しながらコースアウトせずにエッジを効かせたコーナリングをしているように見えるのです。
最終コーナーでコースアウトすることは多かったのですが、最初のヘアピンの感じを見ている限り、最終コーナーでも入り方(そのときカメラが認識している風景)によっては、ちゃんと曲がってくれるんじゃないかと思い、スピードは緩めませんでした。
そして、制限時間が訪れて、結果発表です。
観戦していたところから目の前のLeader boardに表示されます。
見てると自動スクロールして、順位が30位ぐらいまで一気に下がっていきます。
そしてこれ以上下がらないというところまで下がりました。
「ああ、最下位かあ」
そう思った瞬間、次は上にスクロールしだして、一番上まで上がりました。
1位に「yamashita-trainocate」の文字が。
そしてスタッフのみなさんから「You are wineer!!」の声と拍手が。
どうも私はよくわからないことが起こった時は、そこから逃げ出す節があるようで、ぶつぶつ「Thank you」と言いながらその場をいったん離れました。
そして離れた場所からiPhoneのカメラの拡大を使ってちゃんと見てみます。
確かに自分の名前があります!
そしてラップは11秒台!
どんなバーチャルコースでも20秒台を切れなかったのに。
小さい声で何度も何度も「やった」「やった」「やった」「やった」って呪文のように繰り返してました。
本当に嬉しかったです。
この記録を出したのが11:30頃で、Quad終了が16:00でした。
16:00までにこの記録が守られたのか破られたのかは確認してないのでどうかはわかりませんが、これが一瞬であったとしても、本場ラスベガスで1位になれたことはDeepRacerをやっていく上で大きな励みになりました。
なんでも諦めずに続けていれば、いいことありますね!
少し思ったことは、強化学習なので、1つのコースで長時間学習させるよりも、多くのコースで学習したほうが応用の効くモデルになるんじゃないかということです。
リアルなコースはゴミがあったり、スタッフさんの足もあったり、有志で作ったコースではしわがあったり、壁がなかったりも。
そういうところでも応用が効くほうがきっと楽しいんだろうなあと思います。
コストは、私のやり方(月に1回2時間のトレーニングとエントリ)では12月実績で$8.5でした。
リージョンはバージニア北部です。
前後するとは思いますが、ご参考にしていただければと思います。
関数は、あくまでも今現在ですが、デフォルトサンプルのTime trial - follow the center line (Default)をベースにしています。
distance_from_centerパラメータで10段階評価をしてます。
speedパラメータも使ってそれに加点をしている関数です。
all_wheels_on_trackなど他のパラメータは使ってませんが、今後使うかもしれません。
あくまでも最終的な関数であって、多分、新規でモデル作成して同じ関数を使っても同じ結果にはならないかと思います。
だからこそ面白く、作ったモデルがかわいくなります。
これからも、リファレンスを見ながら試行錯誤していきたいと思います。
さて、2020年はいよいよきっと多分日本でもDeepRacerの実機が購入可能になる、走らせてもいいようになる、と言われています。
まだ企画段階ですが、弊社でも何かイベントをご用意して、みなさんと一緒にDeepRacerで楽しみながら機械学習を学んでいきたいと思います!
では、よいお年をお迎えください!
みなさまにとって素敵な一年になりますように。
トレノケートのAWS認定トレーニングでは、AWS社の厳格なテクニカルスキル及びティーチングスキルチェックに合格した認定トレーナーがコースを担当します。AWS初心者向けの研修や、AWS認定資格を目指す人向けの研修をご提供し、皆様のAWS知識修得のサポートをいたします。
・トレノケートのAWS研修(AWS認定トレーニング)はこちら
▼AWS初心者の方は、AWS Cloud Practitioner Essentialsから!
座学中心の研修で、AWSを初めて学ぶ方や、営業などで提案に関わる方におすすめです。
「AWS Certified Cloud Practitioner」資格取得を目指す方の基礎知識修得にも最適です。
→ AWS Cloud Practitioner Essentials 詳細・日程はこちらから