7
9

More than 5 years have passed since last update.

AWS DeepRacerのログ分析ツールを使ってみた

Posted at

はじめに

AWSから提供されているAWS DeepRacerのログ分析ツールを会社の人たちと使ってみました。ログ分析ツールはノートブックの形式で以下のAWS DeepRacerワークショップのGitHubで公開されています。
https://github.com/aws-samples/aws-deepracer-workshops

注意

以下の内容は 2019 年 6 月 6 日時点のサンプルノートブックを対象にしています。
その他のバージョンのノートブックでは利用できない可能性があります。

導入の手順

ポリシーの作成

Jupyter Notebookインスタンス用のIAMロールに以下のポリシーをアタッチしておきます。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "logs:FilterLogEvents",
            "Resource": "*"
        }
    ]
}

※IAMロールの作成方法はAWS DeepRacerシミュレーションと同じなのでこちらを参考にしてください。
SageMakerでDeepRacerシミュレーションを始める方法 IAMロールの作成

Amazon SageMakerノートブック環境の作成

1. Management ConsoleでAmazon SageMakerを開き、AWS DeepRacerコンソールと同じバージニア北部リージョンに切り替えます。
※ノートブックインスタンスの作成方法はAWS DeepRacerシミュレーションと同じなのでこちらを参考にしてください。
SageMaker で DeepRacer シミュレーションを始める方法 SageMakerノートブック環境の作成

2. Jupyter Notebookを開いて「Files」タブの「New」プルダウンから「Terminal」を選択します。
terminal.png

3. Terminal画面が開いたらGitHubからリポジトリのクローンをします。

$ cd SageMaker/
$ git clone https://github.com/aws-samples/aws-deepracer-workshops.git

4. Jupyter Notebookの「Files」タブから
/aws-deepracer-workshops/log-analysis/DeepRacer Log Analysis.ipynb を開きます。

5. 環境選択画面が表示されるのでここでは「conda_tensorflow_p36」を選択します。
 ※この後にある追加のパッケージを行う作業で、同じ環境を選択をします。

ノートブック環境に応じてパッケージのインストール

当社で確認した時点では、ノートブックの実行途中でshapelyのimportエラーが出ていたのであらかじめanacondaの環境に対してパッケージをインストールしておきます。

  1. Jupyter Notebookの「Conda」タブから上部のリストボックスConda environmentsに環境一覧が表示されるので「tensorflow_p36」を選択します。(図中1-1)
    右下のリストボックスの表示が「tensorflow_p36」に変わるのを確認します。(図中1-2)

  2. 左下のリストボックスから「shapely」を選択します。(図中2)
    テキストで絞り込み検索をすることもできます。

  3. 中段の「→」を選択するとインストールが始まります。(図中3)
    インストールされたかどうかは右下のリストボックス上部の「Refresh package list」アイコンを押すと確認ができます。

package.png

これで準備は整いました!

ログ分析を実行してみた

ノートブックを開くことができたら、セルを上から実行します。(実行ボタンを押すか、Shift+Enter)

Download the desired log file given the simulation ID

AWS DeepRacerコンソールで評価したいトレーニングと紐づいているシミュレーションIDに書き換えます。シミュレーションIDはAWS RoboMakerのシミュレーションジョブから確認ができます。

stream_name = 'シミュレーションID' ## CHANGE This to your simulation application ID
fname = 'logs/deepracer-%s.log' %stream_name
cw_utils.download_log(fname, stream_prefix=stream_name)

Load waypoints for the track you want to run analysis on

トレーニングで利用したトラック名を入力します。
トラック情報は随時追加されているようです。aws-deepracer-workshops/log-analysis/tracks/ からファイル名(=分析するトラック名)を確認することができます。
ここでは5月のバーチャルサーキットトラックのLondonLoopを指定します。

def get_track_waypoints(track_name):
    return np.load("tracks/%s.npy" % track_name)
waypoints = get_track_waypoints("London_Loop_Train")
waypoints.shape

Visualize the Track and Waypoints

先ほど選択したLondonLoopのコースが結果に表示されました
visualtrack.png

ノートブックの全てを紹介しきれないのですが、このように結果を確認しながら進めていきます。

注意

  • ノートブックの途中でログファイル名が固定値になっている箇所や、トレーニングの内容や時間によって、パラメータがデフォルトのままではエラーになる箇所があるので、その都度修正や調整をしながら進めました。
  • トレーニングのシミュレーションログだけでなく、モデルや評価時のシミュレーションIDが入力情報となる分析もありました。
  • reInventコースしか対応されていない分析の種類も一部ありました。

分析結果

Plot rewards per Iteration

toralreward.png
エピソードが進むにつれ報酬がどう変化していくのかがわかります。

Analyze the reward distribution for your reward function

rewardallactions.png
トレーニングの結果、どのルートをどれだけ多く通過しているのか視覚的にとらえやすいです。

Path taken in a particular episode

pathepisode.png
特定のエピソードの走行の軌跡を表示することもできました。

Grid World Analysis

gridspeed.png
reInventコースでも試してみました。コース上でどのくらいのスピードが出ているのかわかります。

その他

この他、いくつかの分析の種類があり全てをご紹介できないのですが、中には結果が何を意味するものなのか、わからないものもありました。

まとめ

ログ分析ツールを使って、全ての分析結果を出すことはできましたが、これらの結果から何を読み解いて、どう分析していくのか? そこからどんな解を得てAWS DeepRacerに反映していくのか? は、強化学習初心者にはなかなか難しい内容でした。
データサイエンティストやデータアナリストの仕事の一部に少しだけ触れることができて、その大変さとリスペクトを実感しました。

AWS DeepRacerの取り組みに対しては報酬関数を実装して強化学習トレーニングを進めるだけでなく、ログやデータを元に分析する、というスキルも必要そうだということがわかりました。

7
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
9