AWS
SageMaker
RoboMaker

SageMaker RL と RoboMakerのサンプルを試す ~ 頑張れDeepRacer ~


SageMaker RLとは

Amazon SageMaker RL – Amazon SageMakerを使ったマネージドな強化学習

https://aws.amazon.com/jp/blogs/news/amazon-sagemaker-rl-managed-reinforcement-learning-with-amazon-sagemaker/


RoboMakerとは

AWS RoboMaker-インテリジェントなロボットアプリケーションの開発、テスト、デプロイと管理

https://aws.amazon.com/jp/blogs/news/aws-robomaker-develop-test-deploy-and-manage-intelligent-robotics-apps/


DeepRacerとは

AWS DeepRacer – 強化学習のハンズオン at re:Invent

https://aws.amazon.com/jp/blogs/news/aws-deepracer-go-hands-on-with-reinforcement-learning-at-reinvent/


サンプルドキュメント

こちらが本投稿で試してみたサンプルとなります。

https://github.com/awslabs/amazon-sagemaker-examples/tree/master/reinforcement_learning/rl_deepracer_robomaker_coach_gazebo

AWSのgithubが更新が激しいため、私が試したコードと内容が変わる可能性があるため、今のスナップショットとして、以下にも同じものを保存しています

https://github.com/asahi0301/sagemaker-demo/tree/master/reinforcement_learning/rl_deepracer_robomaker_coach_gazebo

SageMaker Notebookを起動するとサンプルコードがすでにダウンロードされているため、すぐに試せます。便利です。

まずは、そのサンプルコードで試してみて、動かなければ私のレポジトリをCloneしてください。


事前準備


SageMaker Notebookを起動します

VPC外でもVPC内でもどっちでも大丈夫です。

RoboMakerが2018/12/04時点では東京リージョンにないため、SageMaker Notebookは「バージニア北部リージョン」で作成しています。

インスタンスタイプは、t2の一番小さいものでも大丈夫です。

SageMaker Notebookの割り当てているIAMロール(下図の赤枠の部分)の修正が必要になります

image.png

また、SageMaker NotebookはVPC外でもVPC内でもどちらでもいいのですが、

サンプルコードではSagemakerのTraining JobやRoboMakerはdefault VPC内で作成されるようになっているため、

Default VPCを消している人は再作成しておく必要があります


IAMロールの修正

IAMロール名は各環境で異なるためSageMaker Notebookのマネジメントコンソールより確認してください

「Permissions」で「AmazonSageMakerFullAccess 」がアタッチされていることを確認します

image.png

「Trusted entities」が「The identity provider(s) sagemaker.amazonaws.com 」となっていることを確認します

image.png

「Edit Trust Relationship」を押して、以下のようにPolicy Documentを編集して、更新します

image.png

更新後に「Trusted entities」が「The identity provider(s) sagemaker.amazonaws.com と robomaker.amazonaws.com 」になっていることを確認します

image.png

以上で事前準備は終わりです。


サンプルノートブック(コード)を開きます

rl_deepracer_coach_robomaker.ipynb

image.png


Not TrustedをTrustedへ変更します

image.png

image.png


コードを順番に実行します

image.png


RoboMakerのコンソールへ移動します

コードを順番に実行して「Clean Up」直前まで進めます。

以下の部分で、RoboMakerへのリンクが表示されるので、クリックします

image.png

「Status」がRunningになっていることを確認して、Gazeboを開きます

Gazeboのチェックボックスを選択して、Action - Open を選択します。

image.png

すると画面が切り替わり、以下のようにDeepRacerが走り出しているのを確認できます

image.png


リソースの確認


SageMakerのトレーニングジョブ

ml.c5.4xlargeを1インスタンス使って、5時間(18000s)のトレーニングが実行されています

5時間経過すると自動的にトレーニングが停止(Stopped)します

image.png

image.png


RoboMakerの確認

Simulation Application と Simuation Job が作成されていることを確認できます

image.png

image.png


まとめ

サンプルコードを触っただけですが、見事SageMaker RLとRoboMakerを利用して、DeepRacerを走らせることができました。

次回は、サンプルコードの解説を私の理解できる範囲で行いたいと思います


最後の削除

5時間待ってリソースを削除してもいいですが、すぐに削除したい場合は

SageMakerのトレーニングジョブの停止

SageMaker Notebookの停止(必要なら削除)

RoboMakerのSimulation Applicatio と Simuation Jobの削除

S3に保存してデータの削除

を行いましょう。