ブログ名

AWS DeepRacerでのログ分析(前半) -準備-

今回の概要

前回まではDeepRacerについての概要とはじめ方について紹介しました。

しかしDeepRacerで良いモデルを作成するには、作成したモデルとそのモデルによる評価結果を分析して、何が原因でタイムが伸びないのか突き止め、さらにより良いモデルを作成することが重要になります。

そこで今回は、DeepRacerの学習・評価ログやモデルのデータの分析を行うための前準備について説明したいと思います。

DeepRacerでのログ分析の概要

DeepRacerでのログ分析の方法はいくつかありますが、今回は最もオーソドックスな、AWSGithubで提供されているこちらの「DeepRacer Log Analysis.ipynb」でログ分析を行います。

このツールを用いるためには、ログデータのダウンロードなど、AWSの方でいくつか設定等が必要なため、今回はそれについての紹介をします。

DeepRacerでのログ分析のための準備

IAMロールの作成

まず、DeepRacerのログを取得するにはIAMロールの設定が必要になります。

IAM(Identity and Access Management)ロールとは、各種AWSサービスの権限管理をしているものです。

今回は、ログが格納されているデータベースなどにアクセスする必要があるため、この設定を行う必要があります。

そのためまず、IAMロールの作成をします。

コンソールにログインしたら、マネジメントコンソールでIAMロールを検索し、IAMロールを開きます。

f:id:iTD_GRP:20191126230940p:plain

開いたら左のサイドバーの「ロール」を選択し、「ロールの作成」を選択し、ロールを作成します。

f:id:iTD_GRP:20191126230951p:plain

するとAWSサービスの一覧が出てきます。この中から「SageMaker」を探し、選択し、「次のステップ:アクセス権限」を選択します。

f:id:iTD_GRP:20191126231002p:plain

次の「Attached アクセス権限ポリシー」と「タグの作成」に関しては、右下の「次のステップ」を選択して構いません。

そして最後の「確認」のところで、任意のロール名を入力し、ロールの作成をクリックすればロールが作成されます。

f:id:iTD_GRP:20191126231015p:plain

IAMロールへポリシーをアタッチ

次に作成したIAMロールにポリシーをアタッチします。

ポリシーとは、各AWSサービスに対するアクセス制御のこと。

ログファイルを取得できるようにIAMロールにポリシーを付与(アタッチ)します。

まず、再度左のロールを選択し、下のようなIAMロール一覧が表示されている画面に移動します。

そして、先ほど作成したロールを選択します。

f:id:iTD_GRP:20191126231025p:plain

ロールの概要が表示されたら、「ポリシーをアタッチします」→「ポリシーの作成」→「JSON」をクリックします。

f:id:iTD_GRP:20191126231039p:plain

f:id:iTD_GRP:20191126231050p:plain

すると、VersionStatementのみ定義されている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のインスタンスを作成します。

f:id:iTD_GRP:20191126231109p:plain

すると以下のような画面が表示されるので、設定を行います。

設定は以下のように設定してください。


  • ノートブックインスタンス設定
    • ノートブックインスタンス名:任意の英数字とハイフンを使ってインスタンスの名前を設定
    • ノートブックインスタンスのタイプ:「ml.t2.medium」
    • Elastic Interface:「なし」
    • (追加設定というプルダウンもあるがそのままで問題なし)
  • Permissions and encryption
    • IAMロール:「カスタムIAMロールのARNの入力」
    • カスタムIAMロールのARN:作成したJupyter notebookのポリシーを指定
      • 「arn:aws:iam::(アカウント):policy/(ポリシー名)」の形式で記述
      • 「IAM」の「ポリシー」のJupyter notebook用のポリシーの概要の上にある「ポリシーARN」に記載されている。
    • 他はオプションなのでそのままで問題なし
  • ネットワーク:ここもオプションなのでそのままで問題なし
  • Gitリポジトリ:ここもオプションなのでそのままで問題なし
  • タグ:ここもオプションなのでそのままで問題なし

f:id:iTD_GRP:20191126231123p:plain

最後に一番下の「ノートブックインスタンスの作成」を選択すると、Jupyter notebookが作成されます。

そしてノートブックの一覧が表示されている画面に戻ったときにステータスが「In Service」となったら使えるようになります。

f:id:iTD_GRP:20191126231133p:plain

次に、Jupyter notebookに必要なライブラリをインストールします。

今回用いるログ分析のプログラムでは、shapelyが用いられているため、インストールします。

まず、アクションの「Open Jupyter」をクリックし、Jupyter notebookを開き、「Conda」というタブを選択します。

すると以下のような画面になるはずです。

f:id:iTD_GRP:20191126231144g:plain

このようになったら、「tensorflow_p36」を選択、「shapely」を検索して、でてきたらそこのチェックマークにチェックを入れ、検索窓の「」をクリックするとインストールできます。

最後に、Githubリポジトリをクローンしてきます。

Jupyter notebookの「Files」に戻り、「New」から「Terminal」を選択します。

f:id:iTD_GRP:20191126231155p:plain

そして以下のコマンドを入力してクローンしてきます。

$ cd SageMaker
$ git clone https://github.com/aws-samples/aws-deepracer-workshops.git

以上で設定は終了になります。

まとめ

今回はDeepRacerでログ分析を行うための準備をしました。

次回は実際にどのような分析が行えるか紹介したいと思います。


次の記事へ

前の記事へ 目次へ戻る