ディープラーニングの強化学習で自動走行する「DeepRacer」というサービス&実機について紹介。AWS Summit Tokyo 2019で開かれた「DeepRacerワークショップ」の取材に基づき、DeepRacerの特徴や概要をまとめる。
AWS DeepRacerを知っているだろうか? カンファレンス「AWS re:Invent 2018」(2018年11月25日開催)の基調講演で発表されてから注目を集め(動画1)、2019年5月23日開催の「AWS Summit Tokyo 2019」で日本でもお披露目された。
DeepRacerは、自律走行を行うレーシングカーで、その走行エンジンに機械学習モデル(より厳密には、ディープラーニングの深層強化学習と呼ばれる手法)が用いられる。その機械学習モデルは、独自のアルゴリズム(厳密には、強化学習の報酬関数など)を手動で定義したうえで、AWS上で学習&評価して、最終的に独自のモデルに作り上げる仕組みとなっている。
作り上げたモデルは、コンピュータ上のバーチャルレースや、現実での実機レースでの走行エンジンとして利用できる。走行タイムを他の人と競い合えるので、世界で一番優れた機械学習モデルを作ってやろうと闘志が湧き上がる人も少なくない。ゲームをする感覚で熱中している間に、自然と深層強化学習のハイパーパラメーターの意味や働きなどを学べる仕掛けだ。
強化学習をすべての開発者に届けるためのサービス
AWSは、DeepRacerを上記のキャッチコピーで表現している。つまりは「DeepRacerを通じて、機械学習に興味を持つエンジニアや開発者を増やしていきたい」と考えているわけだ。AWSではさまざまなレベルで機械学習サービスを提供しているので、ゆくゆくはDeepRacerからそこにつなげる目的があるのだろう。
本連載では、そんなDeepRacerの概要から、DeepRacerでの強化学習、実際に学習&評価してバーチャルで走らせるまでの手順を紹介する。今回は、AWS Summit Tokyo 2019で開かれた「DeepRacerワークショップ」の取材に基づき、DeepRacerの特徴や概要をまとめた。なお、本稿で掲載している画像も、前述のAWS re:Invent 2018のセッション動画や、そのワークショップ資料をキャプチャーしたものである。
既におおよその概要は説明したが、AWSが強調しているのが、図1に示す3つの特徴である。
まず「1/18スケールの自律走行カー」というのは実機の話で、本物のレーシングカーに比べてだいたい18分の1のサイズで作ったということだ。筆者が実物を見た感じでは、想像以上に大きかった。
図2は、右がボディー内部で、ボディーの手前に付属している白いものがカメラだ。左がボディーカバーである。カバーを見ると、車体は前方に高さがあり、後方がなだらかに低くなるフォルムになっている。背景にあるイスと見比べるとそのサイズ感の想像が付くだろう。
実機は、レース会場(図3)で走らせる場合には問題ないだろうが、テーブルの上で走らせるとか、自宅の廊下で走らせるとかには、少し無理があるサイズだ。室内の部屋でも10帖くらいの広さは欲しい感じだった。この点については、正直なところ、個人ではちょっと扱いにくいと感じた。
もちろん、DeepRacerで強化学習を学ぶのに、実機はあくまでオプションである。まずは、シミュレーター上で動かせるので安心してほしい。
ただし実機があれば、現実世界でのレースに参加して、優勝を目指せる楽しさがあるのも事実。実機の購入は、2019年7月10日より399米ドル(約4万数千円)で米国Amazon.comで始まる。日本での販売はまだ明らかにされていないが、現状のAWS Japanの力の入れようから考えると、米国での売れ行きや反応などを見てそれほど期間を置かずに販売されることになるのではないかと筆者は予測(楽観視)している。
せっかく実機の話が出たので、シミュレーターの話の前に、実機のスペックについても紹介しておこう。
スペックは上記の通り。以下に同じ内容を日本語でもまとめ直した。
DeepRacerは、AWSクラウド上のシミュレーション環境のバーチャルサーキットで走らせることができる。動画2はその例で、右側にビデオストリームがあり、DeepRacer搭載のカメラ目線でレーシングカーが進む様子が見られる。なお、ビデオストリームを全画面表示することも可能だ。
そのシミュレーション環境は、AWSクラウド上で図5のように構成されている。
一番左にある「AWS DeepRacer」という名前のコンピュータは自分のローカルPCで、まずはここからAWSコンソールにログインする。
AWSコンソールでDeepRacerサービスを使う際に、「IAMロール」「S3バケット」「Amazon SageMaker」「RoboMakerシミュレーションアプリケーション」などといった複数のリソースが必要になる。が、安心してほしい。ボタン、1クリック程度の作業でほぼ全部のリソースを自動的にそろえてくれる。
その後も、個々のリソースを別々に直接操作する必要はなく、基本的にDeepRacerサービスを触るだけで、動画2で示したようなシミュレーション環境でのDeepRacerの走行まで行える。具体的な内容や手順については次回以降で説明する。
余談:DeepRacerの学習費用
ただし、このような複数のリソースが使われていることは意識しておく必要がある。というのもリソースを消し忘れると、それだけ費用がかかってしまうからだ。例えば筆者も幾つかのリソースを消し忘れてしまい、1週間ほどの期間、毎日100円程度の費用がかかっていた(※ワークショップで練習用のクレジットをもらっていたので、この費用は実際は0円になった)。その後、「AWS DeepRacerご利用後のリソース削除方法について | Amazon Web Services ブログ」に基づき削除した。「AWS側も、消し忘れて予想外のコストがかかることを望んでいないので、くれぐれもリソース削除を忘れないように」という発言を何度も聞いたことがあるので、これからDeepRacerを始める皆さんも注意してほしい。
なお、1回の強化学習の実行で300円程度はかかると言われている。確かに1回は安価であるが、100回学習すると100×300=3万円とかなりの費用になる。Twitterなどネット上を見ると、あまりに熱中しすぎて10万円を超える費用がかかってしまった人も見たので、読者の皆さんも費用には注意しておいた方がよいだろう。最新の費用情報は「料金 - AWS DeepRacer | AWS」を参照してほしい。筆者としては、特に何百回も学習したいハイレベルユーザー向けに、ローカル環境で学習した学習済みモデルをアップロードするような機能が出てくるとうれしいなと考えている。
ちなみに2019年7月2日に、「NATゲートウェイの費用が余計にかかっていた」とのことで払い戻しのクレジットがAWSから筆者宛に送られてきた。この例のように、AWS自身もできるだけ費用が下がるように努力しているようだ。ここでお金がかかりやすい点だけを強調するのもフェアではないので、AWS側の対策についても簡単に紹介しておいた。
余談:DeepRacerの学習時間
あと学習にもかなり時間がかかる。これはディープラーニングそのものが大量のデータを処理するので仕方ない面はあるが、1回30分程度はかかるのを覚悟しておいた方がいい。もちろん学習中は、放置して他の作業をすることもできる。ただし、ハイパーパラメーター(=学習を調整するための各種数値)を変えながら何度も学習させることになるので、それなりに時間を食う作業ではある。
さて、話を戻し、次は現実世界でのDeepRacerレースについて紹介しよう。
世界中でDeepRacerレース大会(レースリーグ)が頻繁に開催されている。詳しくは「リーグ - AWS DeepRacer | AWS」を見てほしい。動画3は、アムステルダムでのレースリーグの様子である。
日本では、AWS Summit Tokyo 2019で「Summitサーキットリーグ」という現実世界でのDeepRacerレースリーグが初開催された。また、2019年6月27日〜28日には、日本で二回目となる「AWS DeepRacer GP(Grand Prix) powered by DNP」が開催された。その結果は、「AWS DeepRacer League: 東京の順位」に掲載されている。
Summitサーキットリーグで、初めて実機に学習済みAIモデルを入れて動かした人が多かった。その結果、シミュレーション環境と現実世界では、DeepRacerの挙動が完全に同じではなかったことに苦しんだ人が多かったようである。シミュレーション環境で高成績のモデルも、現実世界では完走すら難しい状況だったとのこと。現状では、実機を既に持っている人と、そうでない人で、レース結果に大きな差が出てしまっている。
もちろん実機が購入可能になれば、この問題は解消されていくだろう。それだけでなく、今後、シミュレーション環境と現実サーキット会場での挙動の差異ができるだけ小さくなるように、AWSには機能改善を期待したい。
今回は、DeepRacerの特徴と概要を紹介した。次回は、より具体的な内容をお伝えできるように、DeepRacerでの強化学習について解説する。次回からが本番である。Please follow on Twitter @DeepInsiderJP.
Copyright© Digital Advantage Corp. All Rights Reserved.