DeepRacerでAIレーシングカーを走らせてみた!

AWSサービスを使ったAIレーシング「DeepRacer」を試してみた!

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

概要

あらゆるレベルのデベロッパーがクラウドベースの 3D レーシングシミュレーターを使って機械学習を実践的に学べます。このシミュレーターは完全自走型の 1/18 スケールレースカーで、強化学習、およびグローバルレーシングリーグによって駆動します。

以前Pythonを軽く勉強したことがあって、そして普段ゲーム技術研究などゲーム内のAI(Behaviour Tree)を作成したりすることがありますが、本気でAI(Neural Network)を勉強することがなかなか始められなかったが、初めてAWS re:Inventを参加することになって(AWS re:Invent 2021)、DeepRacerという面白いAI競技と出会いました。

元々eSportsが趣味で、DeepRacer Leagueは非常に魅力的だなと思ってます。今まで知らなかったが、クラスメソッド会社の中既にDeepRacerチームがあるので、次の日チーム会議に誘われ、会社のDeepRacerチームに参加させていただきました。

せっかくDeepRacer専用のアカウントを発行しもらったので、DeepRacerでAIレーシングカーを走らせてみたいと思います。

Modelを作る

まずAWSのコンソールにサインインした状態でDeepRacerを検索し、それに入ります。

 


DeepRacerUS East(N.Virginia)リジョンしか利用できないので、このリジョンになっていない場合はリジョン変更を聞かれるので、押すだけでUS East(N.Virginia)に切り替えます。

 

要注意なのは、無料枠は少なくて、枠を超えると、高額なAI訓練が発生することになるので、事前に必ずDeepRacerの費用詳細を確認してください:
DeepRacer料金確認

 

DeepRacerのメインページに入ったら、Start the courseで色々基本なことを教えてくれます(英語のみ?)。

 

全て初期値のままでいいので、まず走らせてみたくて、名前をつける以外はNextにします。設定できたらトレーニングが初期回されます(大体6分ぐらいかかります)。

初期リワード関数だけを使ってるので、道路中央に寄せるパタンで高いリワードを与えることで訓練します:

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)

モデルを走らせる(トレーニング)


環境が初期化されたら、ページの真ん中がこういう感じに表示されます。
左側はリワードのグラフ、右側はAWS Kinesis経由で転送してきたトレーニング中のモデルです(画面出るまでは2分ぐらいかかります)。

 


最初の1時間が経ちましたら、トレーニング完了ということになります。

 

トレーニングできたデータに対していろんな操作ができます。

 

訓練できたモデルのデータやログなどをS3に保存できます(S3にのデータ保存が費用発生することがあるので、気をつけてください)。

最後

一応サンプルのやつだけを走らせたが、これからアルゴリズムを最適化や設定の調整などを少しずつやってみたいと思います。

トレーニングしたはDeepRacer Leagueに参戦できて、トーナメントで競技し、毎年の決勝戦はラスベガスに行ってるらしいで、賞金もあります。ただDeepRacerのAIトレーニング自体が相当金額がかかるので、AI(Neural Network)勉強の中の一環として楽しめると思います。

これからDeepRacerをベースとしたAI勉強も楽しみにしています。

以上です。