AWS DeepRacerにカジュアル参加してみました

`AWS DeepRacer`にカジュアル参加してみましたので、備忘録です。
（なぜかQiitaに画像をアップロードできず、テキストのみ記載します。）

# AWS DeepRacerについて

以下を参照してください
>[AWS DeepRacer The fastest way to get rolling with machine learning](https://console.aws.amazon.com/deepracer/home?region=us-east-1#welcome)
>Welcome to the world’s first global autonomous racing league, open to anyone. It’s time to race for prizes, glory, and a chance to advance to the AWS DeepRacer Championship at re:Invent 2020.

2021 Virtual Circuit関連のURLは以下です。

[Welcome to the 2021 Virtual Circuit](https://console.aws.amazon.com/deepracer/home?region=us-east-1&trk=ha_ribbon_event_aws_summit_online_2021_jp&trkcampaign=aws-summit-online#league)
[AWS-DeepRacer-Innovate-Challenge](https://console.aws.amazon.com/deepracer/home?region=us-east-1#raceToken/rWh_S1dDQ8OmqTdC-IaNdw)
[Train&Evaluate AWS DeepRacer Page](https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-console-train-evaluate-models.html)
[AWS Summit Online, AWS DeepRacer リーグ](https://aws.amazon.com/jp/events/summits/online/japan/deepracer/?trk=ha_ribbon_event_aws_summit_online_2021_jp&trkcampaign=aws-summit-online)

# カジュアル参加のやりかた

上記ページの`getStarted`を押すだけです。
[getStarted](https://console.aws.amazon.com/deepracer/home?region=us-east-1#getStarted)

以下３ステップで進めていきます。
>- Step 1: Learn the basics of reinforcement learning (Optional / ~10 mins)
- Step 2: Create a model and race (Required / ~1 hour)
- Step 3: Learn about sensors and new types of racing

上記の`Step 1`と`Step 3`はチュートリアルとその他の案内のようで、レースは`Step 2`を選択すると準備を始められます。


`Step 2: Create a model and race (Required / ~1 hour)`では、以下の３ステップがあります。

> - Step 1 Specify the model name and environment
> - Step 2 Choose training type, training algorithm and agent
> - Step 3 Customize reward function

まずモデルの名前と環境を決めます。
モデルの名前は`seigot`など何でもOKのようです。
コースは、`2021,May`の時点で競技コースになっている`Kuei Raceway`を選択しました。
また、1hour 3.5ドル掛かるようでした。（初心者は10hoursのfree枠を使えるらしい。詳しくは元URLを参照）

![3.5ドル掛かる.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344880/e87e437f-955d-3b6b-2252-ca864134d962.png)

![名前設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344880/f86c0c2c-0401-62e9-b497-7b62565745f1.png)



色々とGUIからカジュアルに設定してきます。今回は以下を設定しました。（ほぼデフォルト）

![TrainingConfiguration.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344880/18e97e67-d1d9-102d-f596-85d2f154bc45.png)

| - | Value | 範囲 |
| ---- | ---- | ---- |
| Race Type | `Time Trial` |  `Time Trial` or `Object avoidance` or `Head-to-head racing` |
| Training algorithm | PPO | PPO or SAC |
| Speed(速度の種類　) | { 0.33, 0.67, 1 } m/s | 固定？ |
| Steering angle (ステアリング角の種類) | { -30, 0, 30 } ° | 固定？ |    
| 機械学習フレームワーク | Tensor-flow | 固定？ |

PPOとSACについては以下
>- PPO
A state-of-the-art policy gradient algorithm which uses two neural networks during training – a policy network and a value network.
- SAC
Not limiting itself to seeking only the maximum of lifetime rewards, this algorithm embraces exploration, incentivizing entropy in its pursuit of optimal policy.

ハイパーパラメータは以下を設定します。（ほぼデフォルト）

| - | Value | 範囲 |
| ---- | ---- | ---- |
| Gradient descent batch size | 64 | 32,64,128,256,512 |
| Entropy |	0.01 | Real number between 0 and 1. |
| Discount factor |	0.999 | Real number between 0 and 1. |
| Loss type |	Huber | `Mean squared error` or `Huber` |
| Learning rate |	0.0003 | Real number between 0.00000001 (1e-8) and 0.001 (1e-3). |
| Number of experience episodes between each policy-updating iteration |	20 | Integer between 5 and 100. |
| Number of epochs |	10 | Integer between 3 and 10. |

![自動停止と自動submit.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344880/7b1c48c0-101d-fb60-16ac-ecbc1562c36c.png)


報酬関数も設定します。
報酬関数は、関数内をpythonで記述します。
![reward関数.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344880/3fda4579-30bb-80d0-c933-c87b20ac7c85.png)


設定後は処理が開始します。
initializeに6minほど掛かるようです。
InProgress状態になり学習が始まります。
![初期化.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344880/8f2576f8-366c-a531-7670-f4e41713570b.png)


その後、設定した学習時間（今回は60min）後にトレーニングが終わるようなので、しばらく待ちます。
![InProcess.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344880/a5ff3e4b-c74e-a412-bec2-fff452a3cb91.png)

![Stop60min.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344880/0add47ad-0967-07d0-983e-f157d1406c90.png)

60min後、学習が終わり停止処理が働きました。停止処理は4min程掛かるようです。
自動submitもしっかり発動していそうです。

![StoppingTraining.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344880/cf1cc1ea-9eef-2dfb-8c6d-0eab9f5a15f5.png)


無事に自動submitされました。
evaluationをして正しく動いたらモデル作成は一旦成功と思われます。

Open Divisionが、evaluatingになっています。
しばらくすると、evaluateが終わり、無事に105位/161人中の順位になりました、、、！

![Evaluating.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344880/c8439d1b-e95b-2f1d-d5b4-5397a2a09dbf.png)
![105位.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344880/f254714c-2afc-87ad-8330-d200b1c17aa2.png)


Open Division --> Pro Division --> Pro Division Finale の順にレベルアップするようです。
機会があれば上位レベルに挑戦したいと思います。

# 参考
[AWS DeepRacer The fastest way to get rolling with machine learning](https://console.aws.amazon.com/deepracer/home?region=us-east-1#welcome)
[Welcome to the 2021 Virtual Circuit, seigot!](https://console.aws.amazon.com/deepracer/home?region=us-east-1&trk=ha_ribbon_event_aws_summit_online_2021_jp&trkcampaign=aws-summit-online#league)
[AWS-DeepRacer-Innovate-Challenge](https://console.aws.amazon.com/deepracer/home?region=us-east-1#raceToken/rWh_S1dDQ8OmqTdC-IaNdw)
[Train&Evaluate AWS DeepRacer Page](https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-console-train-evaluate-models.html)
[AWS Summit Online, AWS DeepRacer リーグ](https://aws.amazon.com/jp/events/summits/online/japan/deepracer/?trk=ha_ribbon_event_aws_summit_online_2021_jp&trkcampaign=aws-summit-online)