🚗

【AWS】AWS DeepRacerを始めてみた

2024/01/28に公開

はじめに

知識0、経験0からAWS DeepRacerを始めてみる記事です。
興味はあるけれど、やり方がわからないという方の参考になればと思います。

AWS DeepRacerとは

公式ドキュメントには次のように説明されています[1]

  • AWS DeepRacer は、「強化学習」によって駆動される完全自律型の 1/18 スケールのレースカーです。これは次のコンポーネントで構成されます。
  • AWS DeepRacer コンソール: シミュレートされた自動運転環境で強化学習モデルをトレーニングし、評価する AWS Machine Learning サービスです。
  • AWS DeepRacer 車両: 自動運転用にトレーニングされた AWS DeepRacer モデルで推論を実行できる 1/18 スケールの RC 車両です。
  • AWS DeepRacer: 世界初のグローバルな自律型レースリーグです。賞品、栄光、ワールド チャンピオン カップへの出場権を得るためのレースです。詳細については、「用語と条件」を参照してください。

簡単に言うと、強化学習でレーシングカーを賢く走れるように訓練して競い合おうということですね。
なかなか面白そうです。

AWS DeepRacerについて、より詳しく知りたい方は公式ドキュメントを参照して下さい。

始め方

ここからは実際にAWS DeepRacerを動かしてみようと思います。

マネジメントコンソールログイン

  • マネジメントコンソールにログインし、サービス検索欄で「DeepRacer」と検索します。

モデルを作る

  • Create Modelから新しいmodelを作ります。

AWS DeepRacerがどうやって動くのか説明している図が表示されています。
以下がAWS DeepRacerの流れの説明です。

  1. 強化学習の基礎を学ぶ
  2. モデルを作る
  3. 訓練&評価
  4. DeepRacerリーグに参加する
  5. モデルを繰り返し改善する

Step1で強化学習の基礎を10minで学べるようです。Step2で実際にモデルを作っていきます。 説明で「10時間の評価・トレーニングと5GBの無料ストレージ」と記載があります。それ以上は課金されるようなので注意が必要ですね。

  • モデルの名前を決める
    MyFirstModelとします。

  • 環境を選択する
    レースっぽい!!今回は簡単そうなVivalas Loopを選択していきます。

  • レースタイプを選択する
    今回はデフォルトのTime trialを選択します。

  • トレーニングのアルゴリズムを選択する
    PPOとSACを選択できるようです。
    最新のアルゴリズムであるSACを選択していきます。

ちなみに、SACのハイパーパラメータは調整できるようです。

行動空間を定義する

行動空間に対しては次のような説明が掲載されています。
簡単に言うと、この車が取れるアクションの範囲を定義することだと捉えました。
アクションの範囲と言っても、複数の要素の組み合わせで表現され、この場合では車の速度とステアリング角度ということらしいです。

とりあえず、デフォルト値で進みます。

車を選ぶ

一つしか選べませんが、選んで次に進みます。

報酬関数を定義する

報酬関数とはなんでしょうか。公式ドキュメントには次のような記載があります。

報酬関数
報酬関数とは、実行されたアクションが、以下のいずれのパフォーマンスの結果になったかをエージェントに伝える学習モデル内のアルゴリズムです。

  • 強化する必要のある良い結果。
  • 中立的な結果です。
  • 推奨されない悪い結果。

報酬関数は強化学習の重要な部分です。特定のアクションに対してインセンティブを与えることで、エージェントが学習する挙動を決定します。ユーザーは Python を使用して報酬関数を提供します。この報酬関数は、最適化アルゴリズムによって強化学習モデルをトレーニングするために使用されます。

微妙に難しいですが、簡単にいうとどんな走行に対してご褒美をあげるのか、逆にペナルティを与えるのかを定義する関数ということです。
極端な例だと道からはみ出してしまったらペナルティ-10点とすれば、道をはみ出さないように学習されていくはずです。

このコードでは以下のように報酬関数を定義しています。

  • 車の走行位置が道の中央から2割の幅以下 → 1.0の報酬
  • 車の走行位置が道の中央から5割の幅以下 → 0.5の報酬
  • 車の走行位置が道の中央から10割の幅以下(つまり、道の上) → 0.1の報酬
  • それ以外(コースアウト) → 0.001の報酬

ここに調整のしがいがある!ということだと思います。

訓練時間を選択

あまりに結果が悪くても嫌なので180分に設定しておきました。
どんな結果になるんでしょうか。
24時間まで選べるようですが、課金に注意して下さい。

レースへの出場と規約への同意

モデルのトレーニングは1時間3.5ドルかかるそうです。
→ 結構高くないか。。。というのが正直な感想です。どうなんでしょうか。

居住国でエラーが発生したので、レースへの参加は一旦チェックを外して次に進みます。

訓練

180分モデルが訓練されるのを待ちたいと思います。

待っている間も評価や訓練の様子が見られるようです。
楽しいですね。

結果

残念ながら、しっかりと走れるようなモデルはできませんでした。
学習も1時間3.5ドルとお高めなので、続けるかと言われれば、、、ですね。
経験としては良かったなと思います。興味がある方は是非試してみて下さい。

参考文献

[1] https://aws.amazon.com/jp/deepracer/

Discussion