はじめに
最近、社内の 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インスタンスを作成します。
- Management ConsoleでAmazon SageMakerを開き、オレゴンリージョンに切り替えます。
- ノートブックインスタンスの画面から「ノートブックインスタンスの作成」に進み、以下の内容でノートブックインスタンスを作成します。
- ノートブックインスタンス設定
- ノートブックインスタンス名:作成者がわかるように命名
- ノートブックインスタンスのタイプ:ml.t2.medium
- Elastic Inference:なし
- IAMロール:カスタムIAMロールのARN
- カスタムIAMロールのARN:作成したロール
- VPC:非VPC
- ライフサイクル設定:設定なし
- 暗号化キー:カスタム暗号化なし
- ボリュームサイズ:5
- Gitリポジトリ
- リポジトリ:なし
- ノートブックインスタンス設定
- ノートブックインスタンスのステータスが「InService」になるまで待ち、「開く Jupyter」アクションからJupyter Notebookを開く。
DeepRacerトレーニングノートブックの実行
DeepRacerトレーニング用のサンプルノートブックが配布されていますので、実行します。
-
作成したJupyter Notebookを開き、SageMaker Examples > Reinforcement Learning > rl_deepracer_coach_robomaker.ipynb の 「Use」をクリックし、自分のホームディレクトリにコピーして開きます。
-
セルを上から順に実行します(実行ボタンを押すか、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"
- "社員ID-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())
- "社員ID-deepracer-sample-application" + strftime("%y%m%d-%H%M%S", gmtime())
- 「Define Variables」に定義された「job_name_prefix」の値を以下のように編集してください。
ラップタイムの表示
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シミュレーション環境を削除します。