5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

社内勉強会:AWS DeepRacer基礎編(ログ取得)を開催した

Last updated at Posted at 2019-07-19

はじめに

社内でAWS DeepRacer人口が増えてきており、ちょっと乗り遅れてしまった人向けにAWS DeepRacer勉強会基礎編を社内で開催したのでその内容を公開します。

本記事では基礎編のログ取得について解説しています。

その他の勉強会の内容については、以下の記事をご確認ください。

ログについて

ログの取得方法の種類

ログの取得方法はいくつかあります。

ログの種類とアクセス方法

  • Trainingログ:トレーニング中に出力されたログ

Training > Simulation Job > View logsをクリックします。

log_001.png

  • Evaluationログ:評価走行中に出力されたログ

Evaluation > Simulation Job > View logsをクリックします。

log_002.png

ログの表示

AWS DeepRacerコンソール画面からTrainingまたはEvaluationのView logsをクリックするとCloudWatchのコンソール画面に遷移します。ログストリームからログをクリックすると該当するログが表示されます。

log_003.png

log_004.png

※ Trainingログのキャプチャ

ログの取得

CloudWatchのコンソール画面の左ペインから、[インサイト]をクリックします。

log_006.png

log_005.png

Logs Insightsのコンソール画面から、以下の項目を入力し、[クエリの実行]ボタンをクリックします。

  • ①ロググループ名:/aws/robomaker/SimulationJobs
  • ②期間:処理を実行した期間を指定します
      例)2019-06-13(00:00:00)-2019-06-13(23:59:59)
  • ③クエリ:
    • 以下のクエリを使用して、必要な行を取得するとともに、parseを使用して、各項目をCSV形式で取得できるようにします。
    • 1行目のシミュレーションIDを適宜書き換えてください。※ 例ではシミュレーションID:sim-abcd12345678
filter @logStream like /sim-abcd12345678/
| filter @message like /SIM_TRACE_LOG:/
| parse @message "SIM_TRACE_LOG:*,*,*,*,*,*,*,*,*,*,*,*,*,*,*" as episodes,tsteps,x,y,yaw,steering_angle,throttle,action_taken,reward,done,on_track,current_progress,closest_waypoint_index,track_length
| sort @timestamp asc

ログのダウンロード

[アクション] > [クエリ結果をダウンロード(CSV)]をクリックするとCSV形式でログをダウンロードすることができます。

log_007.png

log_008.png

ダウンロードしたCSVファイルのデータで、車両が通過した軌跡の視覚化や報酬の確認など、ログの分析をすることが可能です。

例)車両が通過した軌跡を視覚化

log_009.png

ログの出力

報酬関数内でprint文を書くことで、独自のログを出力することができます。

log_010.png

def reward_function(params):
    '''
    Example of penalize steering, which helps mitigate zig-zag behaviors
    '''
    
    # Read input parameters
    distance_from_center = params['distance_from_center']
    track_width = params['track_width']
    steering = abs(params['steering_angle']) # Only need the absolute steering angle
    
    waypoints = params['waypoints']

    # 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 agent is closer to center line and vice versa
    if distance_from_center <= marker_1:
        reward = 1
    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

    # Steering penality threshold, change the number based on your action space setting
    ABS_STEERING_THRESHOLD = 15

    # Penalize reward if the agent is steering too much
    if steering > ABS_STEERING_THRESHOLD:
        reward *= 0.8

    print("CUSTOM_LOG:wp={}".format(waypoints))
    
    return float(reward)

なお、Logs Insightsのコンソール画面から、ログを抽出する場合は以下のクエリを実行します。
※ waypointsは何行も表示される必要がないので、limit 1としています。

filter @logStream like /sim-abcd12345678/
| filter @message like /CUSTOM_LOG:/
| parse @message "CUSTOM_LOG:wp=*" as waypoints 
| sort @timestamp asc
| limit 1

まとめ

本記事では、CloudWatchから一部のログを取得する方法を解説しました。

ログを分析して効率的に精度向上していけたらと思います。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?