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ロール(下図の赤枠の部分)の修正が必要になります
また、SageMaker NotebookはVPC外でもVPC内でもどちらでもいいのですが、
サンプルコードではSagemakerのTraining JobやRoboMakerはdefault VPC内で作成されるようになっているため、
Default VPCを消している人は再作成しておく必要があります
IAMロールの修正
IAMロール名は各環境で異なるためSageMaker Notebookのマネジメントコンソールより確認してください
「Permissions」で「AmazonSageMakerFullAccess 」がアタッチされていることを確認します
「Trusted entities」が「The identity provider(s) sagemaker.amazonaws.com 」となっていることを確認します
「Edit Trust Relationship」を押して、以下のようにPolicy Documentを編集して、更新します
更新後に「Trusted entities」が「The identity provider(s) sagemaker.amazonaws.com と robomaker.amazonaws.com 」になっていることを確認します
以上で事前準備は終わりです。
サンプルノートブック(コード)を開きます
rl_deepracer_coach_robomaker.ipynb
Not TrustedをTrustedへ変更します
コードを順番に実行します
RoboMakerのコンソールへ移動します
コードを順番に実行して「Clean Up」直前まで進めます。
以下の部分で、RoboMakerへのリンクが表示されるので、クリックします
「Status」がRunningになっていることを確認して、Gazebo
を開きます
Gazeboのチェックボックスを選択して、Action - Open を選択します。
すると画面が切り替わり、以下のようにDeepRacerが走り出しているのを確認できます
リソースの確認
SageMakerのトレーニングジョブ
ml.c5.4xlargeを1インスタンス使って、5時間(18000s)のトレーニングが実行されています
5時間経過すると自動的にトレーニングが停止(Stopped)します
RoboMakerの確認
Simulation Application と Simuation Job が作成されていることを確認できます
まとめ
サンプルコードを触っただけですが、見事SageMaker RLとRoboMakerを利用して、DeepRacerを走らせることができました。
次回は、サンプルコードの解説を私の理解できる範囲で行いたいと思います
最後の削除
5時間待ってリソースを削除してもいいですが、すぐに削除したい場合は
SageMakerのトレーニングジョブの停止
SageMaker Notebookの停止(必要なら削除)
RoboMakerのSimulation Applicatio と Simuation Jobの削除
S3に保存してデータの削除
を行いましょう。