クラウドインテグレーション部の渡邊です。
Japan AWS Jr. Championsのコミュニティイベントの中でAWS DeepRacerを体験してきたので、そちらを紹介します。
Japan AWS Jr. Championsとは?
AWS Partner Network (APN) 参加企業に所属し、現在社会人歴 1 ~ 3 年目で AWS を積極的に学び、アクションを起こし、周囲に影響を与えている APN 若手エンジニア
引用元:2023 Japan AWS Jr. Champions の発表
Japan AWS Jr. Championsのメンバーと、勉強会やLT会など定期的に活動しています。
今回はAWS DeepRacerが結構試しやすい仕様になっていたので、どれくらい試しやすいかを手順を示しながら紹介します。
AWS DeepRacerとは3Dレーシングシミュレーターで自動運転モデルを作成し、機械学習を学べるサービスです。
このように自分が作成した自動運転モデルを3Dシミュレーターの様子を動画で見ることができ親しみやすいです。
あなたも、すぐに自身のコンソール画面からこの画面を見ることができますのでぜひ一緒にやってみましょう。
AWS DeepRacerのDashboardはこちら
執筆時点では(2023/10/6時点)バージニア北部(us-east-1)のみサポートしているので、その点に注意してください。
左ペインの「Resources」のところに勉強用のリソースがあるので深く学んで見たい方はこちらを参考にするとよいと思います。
※構築する中で設定内容について説明しますが、簡潔に説明するために正確でない可能性があります。ご了承ください。
今回設定を入力または変更する場所は、モデル名、コース名、レースへの参加可否のみです。とても簡単です!
こちらまたは「Your models」>「Create model」から早速モデルを作成しましょう!
モデル名と説明(オプション)を入力します。
モデル名はスペースやアンダーバー(_
)が使えないのでハイフン(-
)を単語の区切り文字として指定しております。
シミュレーションするコースを選びます(デフォルトでもよいです)。
レースに参加する場合はそのレースと同じものを選んでシミュレーションしましょう。
今回はシンプルなコースとして「Smile Speedway」を選択しました(「View more race tracks」から、さまざまなコースを確認できます)。
レースを周回する向きも指定できます。
以下3タイプの中から、「Time trial」を選択しました。
ニューラルネットワークの種類としてPPOを選択します。
Hyperparametersはモデル学習前に人の手で決められるパラメータです。 以下、項目を簡潔に説明します。
取りうる行動の選択肢が連続的か離散的か選びます。
ハンドルの角度とスピードの範囲の選択肢が少ないほど学習が早いですが、動きが離散的(カクカク)になります。
設定画面がグラフィカルで見やすいですね。
外部構造をカスタムします。双眼カメラバージョンや色などのカスタムができるようです。
モデルへの報酬の与え方を指定します。
機械が自分で判断できるように報酬を与えることで学習させます。
デフォルトの報酬関数は、ざっと以下の内容となっています。
def reward_function(params):
'''
Example of rewarding the agent to follow center line
'''
# Read input parameters
track_width = params['track_width']
distance_from_center = params['distance_from_center']
# Calculate 3 markers that are at varying distances away from the center line
marker_1 = 0.1 * track_width
marker_2 = 0.25 * track_width
marker_3 = 0.5 * track_width
# Give higher reward if the car is closer to center line and vice versa
if distance_from_center <= marker_1:
reward = 1.0
elif distance_from_center <= marker_2:
reward = 0.5
elif distance_from_center <= marker_3:
reward = 0.1
else:
reward = 1e-3 # likely crashed/ close to off track
return float(reward)
トレーニングの終了条件です。
リーグに自動参戦させるためのオプションです。
今回はチェックを外しますが、レースに参加させる際は自動で学習したモデルを提出できるため便利です。
以上で設定完了です!
以下のメッセージが画面上部に出るので、数分待ちます・・・
Initializing training
This can take a few minutes, but you can build your ML skills while you wait .
しばらくすると冒頭で示した画像のような画面が出ているのではないでしょうか?
左側には「Reward graph」と3本のグラフが示されております。
それぞれ以下のグラフを表します。
トレーニングが終わるまで時間がかかるので、しばらく待ちましょう。
トレーニングが終わると、赤のグラフの値が100となっていたので、完走できるモデルの作成に成功したことを示します。やった!!!
Training configurationを見るとモデル作成時に設定した値が表示されています。
Japan AWS Jr. Championsのメンバーでレースをしたのでそちらも共有します。
主催者がレースを用意する必要があります。
そのレースに、各アカウントのレーサーが参加します。
こちらを確認するとレーサーのプロファイルが表示されます。
名前もプロファイルもカスタムしてみます。
このように、髪型、ひげ、肌の色など、多くの設定をカスタムが可能です。
こちらからコミュニティレースの表示があったため参加できます。
「Enter race」からレースに参加して、モデルを走らせてみました。
レースの情報や実際の記録が表示される画面に遷移しました。
うーん、他の参加者もいたのでキャプチャは伏せますが20位くらいだったのでまだまだトレーニング改善の余地がありそうです。
ただ、他の方もデフォルトの設定で走らせたようで、レースの結果にあまり差が出ませんでした。
【参考】
機械学習/ディープラーニングにおけるバッチサイズ、イテレーション数、エポック数の決め方
AWS DeepRacer ワークショップ ~ハンズオンで機械学習ジャーニーを始めよう