
[AWS re:Invent 2019] DeepRacerのワークショップに参加
2019.12.07
ラスベガスで開催されているAWS re:Invent 2019でDeepRacerのワークショップに参加しました。
自分専用のAWS DeepRacer RLモデルを作成しコースをシミュレーションするところまでの手順をハンズオンで行いましたので、紹介させて頂きます。
AWS DeepRacerとは
強化学習によって駆動される完全自走型の 1/18 スケールのレースカー、3D レーシングシミュレーター、およびグローバルレーシングリーグを備えた、強化学習 (RL) を自由自在に操る最速の手段です。開発者は、実際の世界での自律的なエクスペリエンス、および AWS DeepRacer リーグで AWS DeepRacer チャンピオンカップの出場権をかけて競い合うために、オンラインシミュレーターで RL モデルをトレーニング、評価、調整することができます。

目標
1.AWSコンソールでAWS DeepRacerを理解
2.レースに参加できるようにタイムトライアルモデルのトレーニングを開始する
最初のモデルトレーニング
マシンのカスタマイズ
1.AWSコンソールにログインしてAWS DeepRacerサービスにアクセスします。
※ 現時点ではバージニア北部リージョンしか対応していません。

リソースをまだ作成していない場合は「Create Resources」をクリックします。
完了までに5分程度時間がかかります。
この操作を行うことで、AWS DeepRacerが自動的に「Amazon SageMaker」と「AWS RoboMaker」にアクセス許可を与え、VPCを管理するCloud Formation stackをスピンアップします。
Reset resourcesは押さないように注意して下さい。
stackが削除されプロセスが再起動します。
2.Garageから「Build a new vehicle」をクリックします。

3.カメラの数やニュートラルネットワークを選択します。

今回はCameraと3 Layer CNN を選択します。
4.Action Spaceを設定します。

今回は以下パラメータを設定します。
Maximum steering angle : 30
steering angle granularity : 5
maximum speed : 1m/s
speed granularity : 3
5.DeepRacerの名前と色をカスタマイズします

6.Grageに戻ると作成したものが確認できます。
Modelの作成
1.「create model」をクリックします。
2.model名やシミュレーションするレーストラックを選択します。

ここでは、re:Invent内の会場で行われているレースと同じトラック「the 2019 DeepRacer Championship Cup track」を選択しました。
3.Race TypeとAgentを選択します。

報酬関数とtraining algorithm と hyperparametersの設定
1.報酬関数を設定する

パラメータの一部を可視化するとこんな形になっています。
以下例の様に設定します。
センターラインを追従する基本的な報酬機能です。
def reward_function(params): ''' Example of rewarding the agent to follow center line ''' # Calculate 3 marks that are farther and father away from the center line marker_1 = 0.1 * params['track_width'] marker_2 = 0.25 * params['track_width'] marker_3 = 0.5 * params['track_width'] # Give higher reward if the car is closer to center line and vice versa if params['distance_from_center'] <= marker_1: reward = 1.0 elif params['distance_from_center'] <= marker_2: reward = 0.5 elif params['distance_from_center'] <= marker_3: reward = 0.1 else: reward = 1e-3 # likely crashed/ close to off track return float(reward)
2.Training algorithm と hyperparametersを設定します。

Training algorithmは当面PPOのみ使用可能です。
hyperparametersはデフォルト設定としています。
3.Stop conditions設定
トレーニングする最大時間を設定します。

ここでは120を指定しています。
トレーニングと改善
1.前項で行ったモデルの作成が完了するとトレーニングが開始されます。

2.しばらくトレーニングされると報酬グラフとシミュレータからビデオが再生されます。

基本的なマシンの作成とトレーニングの手順は以上となります。
あとがき
今回、ハンズオン形式でDeepRacerに初めて触れ自分で作成したマシンでシミュレーションを行いました。
この後の流れとしては、トレーニングが完了すると作成したマシンの評価を行うことができるのでより良い結果となるようチューニングを施していきます。
定期的にレースが開催されているのでチャンスがあればご自身で作成したマシンでレースに参加してみてはいかがでしょうか。
