LoginSignup
8
1

More than 3 years have passed since last update.

AWS DeepRacerの報酬関数トレースログをCloudWatchLogs Insightsでパースして分析

Last updated at Posted at 2019-04-16

DeepRacerのSageMakerサンプルノートブックを動かすと、CWLogsに報酬関数のトレースログが吐かれます。これをLogsInsightsでパースしてみました。

サンプルノートブック 自体は下記の記事を参考に動かしています。

吐かれるログ

ログはデフォルトで以下のCloudWatchlogsに吐かれる。

ロググループ名

/aws/robomaker/SimulationJobs

対象ログイベント

  • SIM_TRACE_LOGで始まるログ
  • deepracer_env.py の def infer_reward_state の中で「入力パラメータ」と「結果の報酬」を出力している

ソースコードを見ると報酬関数に渡しているものとは若干違うパラメータもログ出力していますが、今回はそのままパースしてみます。

デフォルトの出力

どれがどのパラメータかパッと見ではわからない...

logs.png

Logs Insights でパース

実装コードから、どの出力がどのパラメータなのか確認し、insightsのparseコマンドに反映。

トレースログをパースして100行表示

クエリ

fields @message
| filter @message like /^SIM_TRACE_LOG/
| parse @message "SIM_TRACE_LOG:*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*" as episodes,steps,x,y,car_orientation,steering,throttle,action_taken,reward,progress,waypoint_action,done,on_track,current_progress,initidxWayPoint,closest_waypoint_index,track_length,time
| sort by time
| limit 100

出力結果

これでまともに見れそうな気がしてきました。

query1.png

条件に合うログのみ表示してみる

50steps以降で、スロットル0.5未満で1以上の報酬を与えたログを100行表示してみます。

クエリ

fields @message
| filter @message like /^SIM_TRACE_LOG/
| parse @message "SIM_TRACE_LOG:*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*" as episodes,steps,x,y,car_orientation,steering,throttle,action_taken,reward,progress,waypoint_action,done,on_track,current_progress,initidxWayPoint,closest_waypoint_index,track_length,time
| filter (steps>50 and throttle<0.5 and reward>=1)
| sort by time
| limit 100

出力結果

query2.png

Insightsでは他にもstatsなどの集計コマンドが使えるので、いろいろできそうです。

補足

progress(コード上はtotal_progressという変数)はドキュメント上、0.0〜1.0が入るように読めたが

progress float [0,1] Percentage of track completed.

実際は0〜100のレンジっぽい値が出力された。コードを確認すると積算用の進捗をcurrent_progress *= 100.0 していたり気になりましたがパラメータの詳細についてはこの記事で触れません。

参考

8
1
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
8
1