LoginSignup
9
8

More than 5 years have passed since last update.

SageMaker で DeepRacer シミュレーションを始める方法

Posted at

はじめに

最近、社内の DeepRacer チームに入りました!

参加者には以下の導入手順が提供されているのですが、ここで共有します!

DeepRacer シミュレーションの開始

概要

Amazon SageMakerとRoboMakerを利用したDeepRacerシミュレーションの開始手順です。

手順

IAM ロールの作成

まず、Jupyter Notebookインスタンス用のIAMロールを作成します。

以下の内容のIAMロールを作成します。

  • AWSサービス:SageMaker
  • アクセス許可ポリシー(Permissions policies):
    • AmazonSageMakerFullAccess
    • 以下の内容のポリシーをアタッチする
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "s3:ListBucket",
                "s3:GetObject",
                "s3:PutObject",
                "s3:DeleteObject"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::*"
            ]
        }
    ]
}

ロールの信頼関係に RoboMaker を追加します。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": [
          "sagemaker.amazonaws.com",
          "robomaker.amazonaws.com"
        ]
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

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

SageMakerのJupyter Notebookインスタンスを作成します。

  1. Management ConsoleでAmazon SageMakerを開き、オレゴンリージョンに切り替えます。
  2. ノートブックインスタンスの画面から「ノートブックインスタンスの作成」に進み、以下の内容でノートブックインスタンスを作成します。
    • ノートブックインスタンス設定
      • ノートブックインスタンス名:作成者がわかるように命名
      • ノートブックインスタンスのタイプ:ml.t2.medium
      • Elastic Inference:なし
      • IAMロール:カスタムIAMロールのARN
      • カスタムIAMロールのARN:作成したロール
      • VPC:非VPC
      • ライフサイクル設定:設定なし
      • 暗号化キー:カスタム暗号化なし
      • ボリュームサイズ:5
    • Gitリポジトリ
      • リポジトリ:なし
  3. ノートブックインスタンスのステータスが「InService」になるまで待ち、「開く Jupyter」アクションからJupyter Notebookを開く。

DeepRacerトレーニングノートブックの実行

DeepRacerトレーニング用のサンプルノートブックが配布されていますので、実行します。

  1. 作成したJupyter Notebookを開き、SageMaker Examples > Reinforcement Learning > rl_deepracer_coach_robomaker.ipynb の 「Use」をクリックし、自分のホームディレクトリにコピーして開きます。sagemaker.png

  2. セルを上から順に実行します(実行ボタンを押すか、Shift+Enter)。以下の点に注意してください。

    • Permission setup for invoking AWS RoboMaker from this notebook は上記の手順で実施済みのため不要です
    • SageMaker、RoboMaker、S3 上のリソースについて、誰が作ったものかわかるように、以下の部分を編集してください。
      • 「Define Variables」に定義された「job_name_prefix」の値を以下のように編集してください。
      • "社員ID-rl-deepracer"
        • 例:"foo-rl-deepracer"
      • 「Create Simulation Application」の3つめのセルに定義された「app_name」の値を以下のように編集してください。
      • "社員ID-deepracer-sample-application" + strftime("%y%m%d-%H%M%S", gmtime())
        • 例:"foo-deepracer-sample-application" + strftime("%y%m%d-%H%M%S", gmtime())

ラップタイムの表示

Evaluationの実行後、ラップタイムを表示するには、Jupyter Notebookにこちらの内容のセルを追加し、実行します。

ノートブックの詳細

ノートブックの各セルで実行される内容を説明します。

Prequisites

トレーニングに必要な環境の設定等を実施します。

Permission setup for invoking AWS RoboMaker from this notebook

上で作成したノートブックインスタンス用IAMロールの信頼関係にRoboMakerを追加する内容です。既に追加済のため実施は不要です。

Setup the environment

強化学習の環境(Environment)をセットアップします。環境はsrc/robomaker/environments/deepracer_env.pyに定義されています。報酬関数reward_functionもここに含まれます。

Configure the preset for RL algorithm

強化学習アルゴリズムのパラメータがsrc/robomaker/presets/deepracer.pyにプリセットされています。パラメータをチューニングする場合はこのファイルを編集します。

Train the RL model using the Python SDK Script mode

上記の環境とプリセットを使用して学習を実行します。学習はSageMakerのトレーニングジョブとして実行されます。

Launch the Simulation job on RoboMaker

RoboMakerでGazebo(OSSのロボットシミュレータ)シミュレーションを起動し、環境をシミュレートしてトレーニングジョブに提供します。

Visualizing the simulations in RoboMaker

実行するとRoboMakerのSimulation jobへのリンクが表示されます。リンク先でGazeboを開くと、コースとDeepRacerが表示され、走行の様子が参照できます。

Plot metrics for training job

トレーニング結果をグラフ化します。

Clean Up

トレーニングジョブをクリーンアップします。

Evaluation

学習したモデルを評価するために、RoboMakerのシミュレーションを実行します。

Clean Up Simulation Application Resource

RoboMakerシミュレーション環境を削除します。

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