ついにオープンしたAWS DeepRacer League Virtual Circuitに参加しよう!
最近は専らDeepRacer三昧、DI部の貞松です。
4月中はプレシーズン扱いだったAWS DeepRacer League Virtual Circuit(以下、VirtualCircuitで統一)がついに正式オープンしました。
VirtualCircuitでは、世界各地で開催されているAWS Summit期間に行われているDeepRacer Leagueの大会(実機によるレース)と同じく、優勝者、上位者に対する褒賞が用意されており、非常にモチベーション高めです。
- 毎月開催される各VirtualCircuitの優勝者は、AWS re:Invent 2019およびそこで開催されるDeepRacer Leagueの決勝大会に無償で招待
- 毎月開催される各VirtualCircuitの上位10名には、賞品としてDeepRacerの実機を授与
本エントリーでは、DeepRacerコンソール上で学習モデルを作成して、VirtualCircuitに投入するまでの流れについてまとめます。
1. DeepRacerコンソールへのアクセス
先ずはAWSのマネジメントコンソールにログインして、DeepRacerコンソールの画面を開きます。
https://console.aws.amazon.com/deepracer/home
2. 学習モデルの作成と学習の実行
DeepRacerコンソールの画面で「Create model」をクリックして、モデルの作成画面を開きます。 以下、モデルの作成について順番に解説します。
2.1. DeepRacerに必要なリソースの作成
VirtualCircuitはその名の通り、実機ではなく仮想サーキット上でのレース大会であり、DeepRacerの3Dシミュレーター環境を用いてモデルの学習と実際のレース走行を行います。DeepRacerの3Dシミュレーターを扱うには幾つかのAWSリソースが必要となる為、ここでまとめて作成します。
2.2. モデル名と概要の入力
学習モデルのユニーク名、およびモデルの概要を入力します。後々、概要を見ただけでどういった意図・設定で学習させていたかをわかるようにするのが良いかと思います。
2.3. コースの選択
DeepRacerに学習させるコースを選択します。現在のVirtualCircuitでは「London Loop」を対象としたレースを開催中なのでこれを選択します。
2.4. 行動の設定
DeepRacerが仮想サーキット上で取りうる行動を設定します。 設定可能な要素はハンドルの操作角と走行スピードの2つです。 どちらも最大値を入力した上で、数値の刻み幅(行動の数)を入力することで行動の組み合わせを設定することができます。
2.5. 報酬関数の定義
報酬関数の定義は、Pythonのコードを書く必要がありますが、デフォルトで記載されているコードや「Reward function examples」で用意されているコードをコピペして、if文で設定されている値を書き換えるだけでも、対象のサーキットコースに対するDeepRacerの行動を考慮した学習を実行することができます。
例) 出来るだけコースの中央線に沿って走るように学習する、急ハンドルを切らないように学習する(ジグザグに走ったり、急にコースを外れたりしないようにする)など
2.6. ハイパーパラメータの設定
DeepRacerコンソール上での学習に使用されている強化学習アルゴリズム(Cliped PPO)に対するハイパーパラメータの設定をすることもできるようになっています。が、基本的にはデフォルトのままで良いかと思います。強化学習アルゴリズムについての知識をお持ちの方であれば、最終的にカリッカリのチューニングを施す際に調整してみるのも良いかもしれません。いずれにしても、適当にアレコレ弄るものではないです(画面上でもデフォルトではパラメータを入力する領域が畳まれてますし)
2.7. 学習時間の入力
学習を実行する時間(分)を入力します。最大は480分(8時間)です。 収束に時間のかかる設定(ペナルティの要素が強い報酬関数を定義したり、ハイパーパラメータで学習率を下げるなどしている)の場合は、8時間フルでぶん回す必要があるかもしれませんが、大体の場合は3〜4時間程度でそれなりに学習が収束するような印象があります。
2.8. 学習の実行
あとは「Start training」をクリックすれば学習が開始します。
ここで注意ですが、画面に以下の様な注意書きが表示されています。
ざっくり1時間の学習実行で約3ドル課金されるとあります。前述の必要なリソース作成を見るとわかる通り、学習の実行以外にもS3でのデータ保持やVPCなどの料金も少しずつかかってくるので、コストの見積もりについては十分注意しましょう。リソースの作成にはCloudFormationを使用しているので、DeepRacer関連のリソースが不要になった場合(学習済みモデルを複製したり、学習のログを参照する必要がなくなった場合)は、そちらからバッサリ消してしまえばDeepRacer関連の課金は止まるので安心です。
3. 学習済みモデルの評価
学習済みモデルの実行は「Start Evaluation」をクリックすることで実行されます。 評価中は実際に走行しているDeepRacerのフロントカメラ映像(もちろんシミュレーター)とコースの走破率(100%なら1周完走できている)とラップタイムが表示されます。 差し当たりは全Trialにおいて走破率100%になることを目指しつつ、その上でタップタイムを縮めていくようなプロセスが無難です。
4. VirtualCircuitに学習済みモデルを提出
ちゃんと対象のサーキットを完走できるモデルが出来上がったら、いよいよVirtualCircuitに提出して実際にタイムトライアルしてみましょう。 「Submit Model」をクリックして、学習済みモデルの提出画面を開きます。
RacerName(リーダーボードに載せる名前)を入力し、提出する学習済みモデルを選択してSubmitします。
5. VirtualCircuit上での結果確認
Submitが完了したら、VirtualCircuitの画面で結果を確認しましょう。結果が出るまでには数分かかります。
結果が出ると以下の様な情報を確認することができます。
- 規定の周回数サーキットを完走することができたか否か
- 平均ラップタイムは何秒だったか
- 現在までのベストラップタイムと順位 など
※ モデルを提出してから30分間は次のモデル提出ができないので注意しましょう。きっとレースの期限ギリギリになるとこれらの制限がかなり効いてきます。
6. まとめ
以上、DeepRacer League Virtual Circuitに参加するまでの流れについて解説しました。 長時間のモデル学習を実行すると、結構なAWS利用料金が発生してしまいますが、ゲーム感覚で楽しく強化学習に入門できる上に、大会で上位に入れば様々な褒賞が得られるので、日本からも広く参加いただいてDeepRacerや強化学習が盛り上がっていくと嬉しいです。
ここで宣伝を一つ。
DeepRacer同好会というものが発足しておりまして、そのオフラインイベント第二回が5/16(木)に大阪で開催されます。
DeepRacer Leagueのレギュレーション(大会ルール)やDeepRacerを題材にした機械学習・強化学習の基礎、実際にDeepRacerの学習モデルを作成した際の試行錯誤など、これからDeepRacerを初めてみたいという方にもうってつけのセッションラインナップとなっておりますので、是非ご参加いただければと思います!
参考URL
Lab1:Let's build an AWS DeepRacer RL model https://github.com/aws-samples/aws-deepracer-workshops/tree/master/Workshops/2019-AWSSummits-AWSDeepRacerService/Lab1