今回の作業内容
今後,ラボでAWS DeepRacerのチームを作り,DeepRacerリーグに参戦することになったので,DeepRacerについて色々とまとめたいと思います.
DeepRacerとは?
DeepRacerとは,前面に設置されたカメラからの画像を認識し,強化学習によって構築されたモデルに従って自動で走るクルマ型デバイスです.
1/18スケールなので,大き目のラジコンくらいの大きさです.
AWSのコンソール上で報酬関数等を実装し,AWSの3Dシミュレータ上で仮想のサーキットに仮想のクルマを走らせることによって強化学習させて,モデルを構築していきます.
つまり,モデルを構築する際,基本的に実機を用意したりする必要はありません.
一応,アメリカでは実機も売られていますが,日本では現在買うことができません.
どうやってモデルを作るのか?
モデルの作成の手順について簡単に紹介したいと思います.
まず,ユーザーはアクションスペース,報酬関数,ハイパーパラメータの3項目について設定します.
そして,その設定を用いてシミュレータ上でDeepRacerを走らせて強化学習させることでモデルを作成します.
3項目の中でも,特にアクションスペースと報酬関数について説明します(ハイパーパラメータに関しては,かなり技術的なことなので今回は省略します).
アクションスペースについて
アクションスペースとは,一言で言ってしまえば,DeepRacerが行動できる動作のことです.
以下の画像はアクションスペースの設定画面です.
それぞれ,以下のように設定しています.
- Maximum steering angle(最大ステアリング角度):30°
- Steering angle granularity(ステアリング角度の粒度):5(-30°, -15°, 0°, 15°, 30°)
- Maximum speed(最大速度):5m/s
- Speed granularity(速度の粒度):2(2.5m/s, 5m/s)
この設定だとDeepRacerはあるカメラ画像に対して,以下の画像のような10個のアクションの中から1つのアクションを行うようになります.
アクションの数が多ければ多いほど,ある画像に対して最適な行動ができるようになると考えられますが,アクションの数が多い分,それだけ多くの学習の時間がかかってしまうと言えます.
報酬関数について
DeepRacerは強化学習によってモデルを構築していきます.
そのため,DeepRacerが行った行動に対して,その行動が良かったかどうかを評価してあげる必要があります.
その評価の仕方を報酬関数として実装します.
以下の画像は報酬関数の実装画面です.
上の画像で実装されている報酬関数について簡単に説明します.
この報酬関数は,コースのセンターラインに沿って走ることに対して報酬を与えています.
まず,7,8行目で2つのパラメータの値(サーキットのコースの幅とDeepRacerがセンターラインから離れている距離)を取得しています.
そして,16〜23行目でセンターラインに近いほど大きな報酬(reward)を与え,遠いほど小さな報酬を与えています.
DeepRacerは,より大きな報酬が得られるように学習していくため,最終的にはセンターラインに沿って走るようになってくれると考えられます.
報酬関数で使用できるパラメータはコースの幅やセンターラインから離れている距離以外にも多くのパラメータがあり,より複雑な報酬関数を実装することが可能です.
↓現在使用できるパラメータについて
実際に学習させている様子はどんな感じ?
実際に学習させている様子は以下のような感じです.
このように,学習はシミュレータ上で行われます.
つまり,モデルの作成は全てAWSのコンソールとシミュレータ上で完結するため,実機を用意する必要はありません.
この動画は,学習をスタートさせて間もない時に収録したものなので,画面左のReward graphに何も表示されていませんが,学習をスタートさせてしばらく経てば,報酬関数で得られたrewardの折れ線グラフが表示されるようになります.
利用料金について
AWSのサービスなので,もちろん利用料金がかかります.
しかも,これが割とかかります...
DeepRacerはAWSのいくつかのサービスによって構成されているため,時間あたりの具体的な金額は分からないのですが,1時間の学習あたり大体300円です.
自分は,当初,1時間300円と聞いてそこまで高くもないなと思っていましたが,実際に始めてみると,これが結構高いということがわかりました.
例えば,3日間くらい報酬関数をいじってみたり,アクションスペースを変えてみたりと色々と試行錯誤していたら,あっという間に利用料金が1万円を超えていました...
むやみやたらに色々と試すのではなくて,計画的に利用していく必要がありそうです.
DeepRacerリーグについて
DeepRacerの面白いところは,各ユーザーが作成したモデルの良さを競うDeepRacerリーグがあるところです.
これは,自分が作成したモデルによってDeepRacerがサーキットをどれだけ早く走れるかを競うものです.サーキットにはVirtual CircuitとSummit Circuitがあります.詳しくは後述します.
この内,Virtual CircuitのDeepRacerリーグはオンラインで常に行われているため,手軽に参戦できます.
ラボのチームが参戦するのは,Virtual Circuitで行われているDeepRacerリーグになると思います.
ちなみに,2019年7月現在のランキングは以下のようになっています.
また,Virtual CircuitかSummit Circuitで1位になると,年末にラスベガスで行われるAWS re:Invent 2019というイベントに無料で招待されます. (他にも,各レースの成績によってポイントが付くらしく,年間でその合計が多い人たちも招待されるらしいです.このポイントについてはあまりよく分かりませんでした...)
このイベントでは,DeepRacerの2019年決勝レースが行われることになっており,そのレースに参戦することができます.
しかしながら,DeepRacerリーグには,かなりガチな社会人のグループが参戦したりしているため(大日本印刷(DNP)が研修で使ってたりもするらしいです.実際,ランキングにちらほらDNPと入っている人たちがいます),上位に食い込むことは簡単ではありません.
Virtual CircuitとSummit Circuitについて
先ほども述べたように,DeepRacerリーグはVirtual CircuitかSummit Circuitで行われます.
Virtual CircuitのDeepRacerリーグはオンライン上で行われているため,手軽に参戦することができますが,その一方で,Summit CircuitのDeepRacerリーグはオンラインではなくAWS Summit(AWSの技術の展示や情報の発信などが行われる大規模なイベント)で行われるため,手軽に参戦することは難しいです(既に日本でのイベントは終了しています).
Virtual Circuit
Virtual CircuitのDeepRacerリーグはオンライン上で行われており,1ヶ月ごとにコースが変わります.
ちなみに2019年7月現在のコースはEmpire City Circuitです.
Virtual Circuitで行われるDeepRacerリーグでは,月間1位になることでAWS re:Invent 2019に招待してもらえます.
Summit Circuit
Summit CircuitのDeepRacerリーグはAWS Summitで行われ,実機にモデルをインストールして競います.
そして,コースはre:Invent 2018しかありません.
Summit CircuitのDeepRacerリーグのスケジュールは以下のような感じです.
日本でのAWS Summitは既に終了しています.
また,Summit CircuitのDeepRacerリーグにおいて,1つ重要なことがあります.
それは,シミュレータでのDeepRacerの動きと実機のDeepRacerの動きが少し違うということです.
例えば,こちらの記事では実際にSummit CircuitのDeepRacerリーグに参加し,Virtual Circuitとの違いに関してレポートされています.
【参加レポート】DeepRacer League参加で感じた「実機用」モデルの鍛え方 #AWSSummit #AWSDeepRacer #AWSDeepRacerJP
このように実機の挙動はシミュレータと少し違うようなので,Summit CircuitのDeepRacerリーグに参加するのであれば実機はあったほうが良さそうです.
ただ,ラボのチームが参戦するのはVirtual Circuitなので,今のところ実機は必要ありません.
(しかし,もしVirtual Circuitで月間1位になった場合に招待されるAWS re:Invent 2019での2019年決勝レースは,Summit Circuitになります.)
リーグの公式ルール
ラボで参戦するにあたり,リーグの公式ルール(2019年5月最新版)について読んでみました.
AWS DeepRacer League Full Official Rules
気になったところを抜粋しました.
参加資格 参加資格は主に以下のような感じです.ラボメンバーは問題無いと思います.
- Summit Circuitは18歳以上
- Vitual Circuitは14歳以上
- リーグ関係者(スポンサーの従業員等)は参加不可
Virtual Circuitのリーグのルール Virtual Circuitのリーグのルールのなかで気になったのは以下です.
- 作成したモデルの共有は禁止(ただ,そもそも現在,自分のアカウント以外で作成したモデルを使って走らせることはできないはず...)
他にもSummit Circuitのルールや賞品について色々と書かれていましたが,現段階で関係あることはあまりありませんでした.
まとめ
ラボで,AWS DeepRacerのチームを作り,DeepRacerリーグに参戦することになったので,とりあえず色々とまとめてみました.
今後,自分の今までのDeepRacerの経験(どのようなアクションスペースや報酬関数が良かったか等)についてまとめたり,それを踏まえて実際にどのように開発していくか,また,チームの体制をどのようにするのかといったことを考えていきたいと思います.
参考になるサイト等
最後にDeepRacerについて理解する上で参考になるサイト等を紹介します.
- AWS公式開発者ガイド
- DeepRacerに関連するサイトをまとめた記事
- DeepRacerの始め方についてまとめた記事
- Empire City Circuit(2019年7月のVirtual Circuit)でタイムを縮める方法をまとめた記事
また,有志が集まるSlackに参加することで貴重な情報を得ることができます(自分は現在,AWS DeepRacer CommunityとDeepRacer同好会の2つのSlackに参加しています).