[参加レポート] AIM206 AWS DeepRacer ワークショップに参加してきました #reinvent
はじめに
re:Invent 2018で発表になった1/18のラジコンカー「Deep Racer」ですが、その開発を体験するワークショップに参加してきたのでレポートします。
DeepRacerというプロダクトの発表前には、このセッションは「Robocar Race」という名前でセッションが用意されていました。AWSらしからぬセッションを訝しんでいたのですが、何かあるに違いないと感じて事前に参加申し込みをしておきました。現地でDeepRacerが発表になったと同時に、セッション名も変更になったのでした。
公式サイトにあるセッション概要は以下の通りです。
Get behind the keyboard for an immersive experience with the newly launched AWS DeepRacer. In this workshop you will get hands-on-experience with reinforcement learning. Developers with no prior machine learning experience will learn new skills and apply their knowledge in a fun and exciting way. You will join a pit crew where you will build and train machine learning models that you can then try out at the MGM Speedway event at the Grand Garden Arena! Start your engines, the race is on!
ワークショップアジェンダ
- AWS DeepRacerの紹介
- 強化学習とは
- Lab 1: プレシーズン:AWS DeepRacerのリワード関数を理解せよ
- AWS DeepRacer
- Lab 2: 予選:MGM Speedwayのモデルを作ろう
- AWS DeepRacer, under the hood
- AWS DeepRacer League
座学メモ1
まずはAWS DeepRacerの学習の仕組みである「強化学習」についての座学です。
- AWS DeepRacerの発端
- 強化学習をすべての開発者の手に渡したい(文字どおりに)
- 強化学習のハンズオンを提供するためのエキサイティングな手段
- 自動運転ロボットレースカー
- シミュレーションとトレーニング
- レース大会
- 人工知能のなかの強化学習の位置付け
- 人工知能の中に機械学習
- 強化学習
- 教師付き学習
- 教師無し学習
- 人工知能の中に機械学習
- 教師付き学習
- サンプルにより学習する
- 教師無し学習
- トレーニングデータにラベルを付与せず自動的にクラスタ分けする
- 強化学習
- 試行錯誤の繰り返しを通して学習を進める
- 教師付き学習のユースケース
- 自動運転自動車
- 物流計画
- 金融取引
- データセンター空調制御
- 強化学習のプロセス
- 与えられた環境の中で、ある行動をしたときの変化と報酬を得る。それを繰り返す
- DeepRacerのプロセス
Lab 1
AWS DeepRacerのコンソールに触れて、報酬関数について学びます。
座席にはワークショップ用のAWSアカウントIDと、ユーザー名、パスワードが書かれた紙が置かれています。これでログインしてDeepRacerのコンソールにアクセスします。利用可能なリージョンは、北部バージニアのみです。
資料はgithubのワークショップ用リポジトリで公開されています。
https://github.com/aws-samples/aws-deepracer-workshops
DeepRacerのコンソールは、まだプレビューのためAMCからは開けませんが、資料の中にリンクが用意されていて、ワークショップ用のアカウントからは開くことができました。
Create Modelボタンを押すと、モデル作成画面が現れます。名前を付けて、コースを選択しますが、選択肢は今回のre:Inventに用意されているコース一つしかありません。
報酬関数を定義します。DeepRacerのワークショップではここが重要な部分です。ラジコンが自動走行できるよう学習するための報酬関数をここで設定するわけです。
その他ハイパーパラメータの設定がありますが、とりあえずそのままでOK。それと学習時間を設定します。Start Trainingボタンを押すとトレーニングが始まります。
初期化にしばらく時間がかかったあと、こんな画面になってトレーニングが進行します。左には報酬関数(の総和)のグラフが、右側にはシミュレーションの中でカメラが捉えた画像が、Kinesis Video Streamで表示されます。この部分はRoboMakerの仕組みですね。
Lab 1の課題としては、最初のヘアピン曲がることです。15分程度の短いトレーニング時間でまずは走行させてみることが目的です。最初のヘアピンを曲がった様子を、スクリーンキャプチャしたチームが勝ちです。
座学メモ2
続いての座学では、DeepRacerのシミュレーションのアーキテクチャについてです
- SageMakerとRoboMakerで、推論とシミュレーションを実行
- その結果を以下のように保存
- モデルはS3
- シミュレーションのカメラ動画はKinesis Video Stream
- ログはCloudWatch
- DeepRacerで使用しているネットワーク
- 強化学習に使われるアルゴリズムのいろいろ
Lab 2
Lab 2では、MGM Speedway用のモデルを作成します。どんなモデルを作ります。で、できたモデルをあとでMGM Speedwayに持って行き、実際に走らせてみてください。ということです。
学習の進み具合によりますが、DeepRacerには150分くらいが適切とのことです。このワークショップでは60分で設定します。最後に指定した時間が経過すると、トレーニングが終了します。Trainingのペーンを開くと、最終的なグラフが確認できます。順調に成績が伸びていたようですので、もう少し学習時間を延長してもよかったかもしれません。
Start Evaluationボタンがありますので、押すと学習したモデルをシミュレーションで検証することができます。実行回数を指定しますのでとりあえず3回にしてみます。
評価が終了すると結果が表示されます。無事3回とも完走したようです(ただしシミュレーションの中でです)。
ワークショップとしては、報酬関数の仕組みを理解したうえで、どんな報酬関数を作成するべきか、同じテーブルの参加者でディスカッションしたりすることです。報酬関数に自分のアイデアを入れて試してみると、結果が失敗になりがちでした。どんな報酬関数を作るべきかは、慣れが必要なようです。
座学3
トレーニングや報酬関数について体験した後は、勝利のための詳細な知識を得ます。
- DeepRacer Carのスペック
- 1/18スケール4WD
- Intel ATOM
- RAM/Flash: 4G / 32G
- WiFi: 802.11ac
- Software Ubuntu 16.04.3 LTS, OpenVINO tookit, ROS Kinetic
- DeepRacerのソフトウェアアーキテクチャ
- ROS (Robot OS)
- 推論エンジン:OpenVINO
- 制御するためのROSのノード
- シミュレーションと現実のギャップ
- DeepRacer Leagueについて
- 開発者のためのグローバルレース大会
- 世界各地で20回
- 2019には世界大会を実施
- 開発者のためのグローバルレース大会
- MGM Speedway
- 会場内に6つのコースが用意されている
- 予選上位3人が、明日のキーノートセッション前の決勝に参加
- まとめ
- 今回のイベント中には、
- トレーニングを終わらせて、MGM Speedwayに行きましょう
- SWAGカウンターでDeepRacer Vehcleを受け取りましょう
- イベント後は、
- ワークショップのアカウントは12/1まで有効
- whiteリスト化は、https://aws.amazon.com/deepracer で受け付けています
- SageMaker Notebookを使って自分のモデルをトレーニングしよう
- トレーニングを続けて、レースしつづけよう!
おわりに
ワークショップということで、実機を使ってのハンズオンが行われるのではと期待していたのですが、トレーニングを体験することがメインでした。でも、自分で作ったモデルで自動走行するために、MGM Speedwayといったコースを用意したり、実機をワークショップ参加者に配布したりなど、かなり力を入れている印象を受けました。
このワークショップはre:Inventの期間中20回も開催されていました。かなりの数の開発者がワークショップに参加し、車体をゲットしたはずです。弊社からも何人も参加しました。切磋琢磨してぜひDeepRacer Leagueに参戦したいですね!