今回の概要
前回まではDeepRacerについての概要とはじめ方について紹介しました。
しかしDeepRacerで良いモデルを作成するには、作成したモデルとそのモデルによる評価結果を分析して、何が原因でタイムが伸びないのか突き止め、さらにより良いモデルを作成することが重要になります。
そこで今回は、DeepRacerの学習・評価ログやモデルのデータの分析を行うための前準備について説明したいと思います。
DeepRacerでのログ分析の概要
DeepRacerでのログ分析の方法はいくつかありますが、今回は最もオーソドックスな、AWSのGithubで提供されているこちらの「DeepRacer Log Analysis.ipynb」でログ分析を行います。
このツールを用いるためには、ログデータのダウンロードなど、AWSの方でいくつか設定等が必要なため、今回はそれについての紹介をします。
DeepRacerでのログ分析のための準備
IAMロールの作成
まず、DeepRacerのログを取得するにはIAMロールの設定が必要になります。
IAM(Identity and Access Management)ロールとは、各種AWSサービスの権限管理をしているものです。
今回は、ログが格納されているデータベースなどにアクセスする必要があるため、この設定を行う必要があります。
そのためまず、IAMロールの作成をします。
コンソールにログインしたら、マネジメントコンソールでIAMロールを検索し、IAMロールを開きます。
開いたら左のサイドバーの「ロール」を選択し、「ロールの作成」を選択し、ロールを作成します。
するとAWSサービスの一覧が出てきます。この中から「SageMaker」を探し、選択し、「次のステップ:アクセス権限」を選択します。
次の「Attached アクセス権限ポリシー」と「タグの作成」に関しては、右下の「次のステップ」を選択して構いません。
そして最後の「確認」のところで、任意のロール名を入力し、ロールの作成をクリックすればロールが作成されます。
IAMロールへポリシーをアタッチ
次に作成したIAMロールにポリシーをアタッチします。
ポリシーとは、各AWSサービスに対するアクセス制御のこと。
ログファイルを取得できるようにIAMロールにポリシーを付与(アタッチ)します。
まず、再度左のロールを選択し、下のようなIAMロール一覧が表示されている画面に移動します。
そして、先ほど作成したロールを選択します。
ロールの概要が表示されたら、「ポリシーをアタッチします」→「ポリシーの作成」→「JSON」をクリックします。
すると、Version
とStatement
のみ定義されているJSONが表示されるので、その部分を以下のように書き換えてください。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "logs:FilterLogEvents", "Resource": "*" } ] }
これでログの取得を許可しました。
Amazon SageMakerでのJupyter notebookの設定
ログ分析のプログラム、「DeepRacer Log Analysis.ipynb」はJupyter notebookで起動する必要があります。
もしJupyter notebookが自分のPCにすでにインストールされている場合は、import文でインポートしているライブラリをインストールし、AWSのGithubからクローンしてやってもらっても問題ないとは思います。
ただ、AWSを使う場合、Amazon SageMakerというものがあり、ここでもJupyter notebookを開くことができます。
さらにこのAmazon SageMakerでは様々なライブラリが既にそろっているため、今回はこちらの方法を紹介したいと思います。
まず、マネージメントコンソールからSageMakerを検索し、SageMakerを開きます。
そして左の「ノートブックインスタンス」から「Create notebook instance」を選択し、Jupyter notebookのインスタンスを作成します。
すると以下のような画面が表示されるので、設定を行います。
設定は以下のように設定してください。
- ノートブックインスタンス設定
- Permissions and encryption
- IAMロール:「カスタムIAMロールのARNの入力」
- カスタムIAMロールのARN:作成したJupyter notebookのポリシーを指定
- 「arn:aws:iam::(アカウント):policy/(ポリシー名)」の形式で記述
- 「IAM」の「ポリシー」のJupyter notebook用のポリシーの概要の上にある「ポリシーARN」に記載されている。
- 他はオプションなのでそのままで問題なし
- ネットワーク:ここもオプションなのでそのままで問題なし
- Gitリポジトリ:ここもオプションなのでそのままで問題なし
- タグ:ここもオプションなのでそのままで問題なし
最後に一番下の「ノートブックインスタンスの作成」を選択すると、Jupyter notebookが作成されます。
そしてノートブックの一覧が表示されている画面に戻ったときにステータスが「In Service」となったら使えるようになります。
次に、Jupyter notebookに必要なライブラリをインストールします。
今回用いるログ分析のプログラムでは、shapely
が用いられているため、インストールします。
まず、アクションの「Open Jupyter」をクリックし、Jupyter notebookを開き、「Conda」というタブを選択します。
すると以下のような画面になるはずです。
このようになったら、「tensorflow_p36」を選択、「shapely」を検索して、でてきたらそこのチェックマークにチェックを入れ、検索窓の「→」をクリックするとインストールできます。
Jupyter notebookの「Files」に戻り、「New」から「Terminal」を選択します。
そして以下のコマンドを入力してクローンしてきます。
$ cd SageMaker $ git clone https://github.com/aws-samples/aws-deepracer-workshops.git
以上で設定は終了になります。
まとめ
今回はDeepRacerでログ分析を行うための準備をしました。
次回は実際にどのような分析が行えるか紹介したいと思います。