AWS DeepLens
開発者ガイド

Amazon SageMaker を使用して、サンプルプロジェクトの事前トレーニング済みモデルをプロビジョニングします。

次の例では、SqueezeNet オブジェクトの検出モデルから開始します。Amazon SageMaker を使用して、このモデルをトレーニングしてバイナリ分類を実行し、オブジェクトがホットドッグであるかどうかを確認します。この例では、バイナリ分類を実行するようにモデルを編集する方法を示し、学習速度およびエポックについて説明します。ここで使用する Jupyter ノートブックインスタンスは、インタラクティブコンピューティング用のオープンソースソフトウェアです。このインスタンスに、実行する編集コードとプロセス全体の説明が含まれています。

モデルのトレーニング後に、そのアーティファクトを AWS DeepLens 内にインポートし、プロジェクトを作成します。次に、AWS DeepLens がホットドックを検出して識別するプロセスを確認します。

ステップ 1: Amazon S3 バケットを作成する

始める前に、AWS アカウントが作成済みであり、必要な IAM ユーザーおよびロールが設定されていることを確認します。

  1. AWS マネジメントコンソール にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

  2. [バケットを作成する] を選択します。

  3. [名前とリージョン] タブで、以下の操作を行います。

    1. バケットに deeplens-sagemaker-<some_string> という名前を付けます。ここで、<some_string> にはバケット名を AWS 全体で一意にするための任意の文字列を指定できます。たとえば、お客様のアカウント名または ID を指定できます。

      注記

      デフォルトのアクセスポリシーを操作するには、バケット名は deeplens-sagemaker- で始まる必要があります。それ以外の場合、サービスがバケットにアクセスできません。

    2. 米国東部(バージニア北部) リージョンを使用していることを確認します。

    3. [Next (次へ)] を選択します。

  4. [Configure options (オプションの設定)] タブで、[Next (次へ)] をクリックします。

  5. [アクセス許可の設定] タブで、[システムのアクセス許可の管理] プルダウンメニューから [Amazon S3 ログ配信グループにこのバケットへの書き込みアクセス権限を付与する] を選択したら、[Next (次へ)] を選択します。

  6. [Review (確認)] タブで設定を確認し、[バケットの作成] を選択します。

  7. 作成されたバケットのページで、[概要] タブを選択し、次に [Create folder (フォルダを作成する)] を選択します。

  8. フォルダに「test」と名前を付け、[保存] を選択します。

    次に作成するサンプルノートブックインスタンスでフォルダを使用するには、ノートブックでデフォルトのフォルダ名を変更しない限り、そのフォルダに test という名前を付ける必要があります。

ステップ 2: Amazon SageMaker ノートブックインスタンスを作成する

Amazon SageMaker ノートブックインスタンスを作成します。

  1. https://console.aws.amazon.com/sagemaker/ で Amazon SageMaker コンソールを開きます。

    us-east-1 — 米国東部 (バージニア北部) リージョン を選択していることを確認します。

  2. ナビゲーションペインで、[ノートブックインスタンス]、[Create notebook instance (ノートブックインスタンスの作成)] の順に選択します。

  3. [Create notebook instance (ノートブックインスタンスの作成)] ページで、以下の操作を行います。

    1. [ノートブックインスタンス設定] で、[ノートブックインスタンス名] 入力フィールドに名前 (例: <your-name>-hotdog) を入力します。

    2. [ノートブックインスタンスタイプ] で、[ml.t2.medium] を選択します。

    3. [Permissions and encryption (アクセス権限と暗号化)] の [IAM ロール] で、ノートブックを初めて実行する場合は [Create a new role (新しいロールの作成)] を選択します。次に、[特定の S3 バケット] 入力フィールドに「deeplens-sagemaker」と入力し、[ロールの作成] を選択します。

      AWS DeepLens 用の最初のノートブックインスタンスを作成すると、[既存のロールの使用] リストから利用可能な IAM ロールを選択できるようになります。

      セットアップの一部として AWSDeepLensSageMaker ロールを作成済みである場合は、[カスタム IAM ロールの ARN の入力] を選択し、Amazon SageMaker ロールの Amazon リソースネーム (ARN) を [カスタム IAM ロールの ARN] ボックスに貼り付けます。次のように Amazon SageMaker ロールの ARN を見つけることができます。

      1. https://console.aws.amazon.com/iam/ にある IAM コンソールを開きます。

      2. ナビゲーションペインで [Roles (ロール) ] を選択します。

      3. [AWSDeepLensSagemakerRole] を見つけ、その名前を選択します。ロールの [Summary (概要)] ページが表示されます。

      4. [Summary (概要)] ページで、[Role ARN (ロールの ARN)] を見つけてコピーします。ARN は次のように表示されます。

        arn:aws:iam::account id:role/AWSDeepLensSagemakerRole
    4. その他のすべての設定はオプションです。この実習では、それらのオプションはスキップします。

      ヒント

      ノートブックインスタンスから VPC 内のリソースにアクセスする場合は、[VPC]、[SubnetId] の順に選択します。[Security Group (セキュリティグループ)] で、VPC のデフォルトのセキュリティグループを選択します。このガイドの演習では、デフォルトのセキュリティグループのインバウンドおよびアウトバウンドのルールで十分です。

    5. [Create notebook instance (ノートブックインスタンスの作成)] を選択します。

      これで、[Notebooks (ノートブック)] ページで新しいノートブックインスタンスを利用できます。

ステップ 3: Amazon SageMaker でモデルを編集する

このステップでは、<your-name>-hotdog ノートブックを開き、ホットドッグを認識するようにオブジェクト検出モデルを編集します。ノートブックには、各ステップで役立つ説明が含まれています。

  1. https://console.aws.amazon.com/sagemaker/ で Amazon SageMaker コンソールを開きます。

  2. 米国東部 (バージニア北部) リージョン が選択されていることを確認します。

  3. ナビゲーションペインで [ノートブックインスタンス] を選択します。

  4. [Notebooks (ノートブック)] ページで、先ほど作成したノートブックインスタンス (<your-name>-hotdog) の左にあるラジオボタンを選択します。ノートブックのステータスが [InService] である場合は、[Jupiter で開く] を選択します。

  5. ブラウザで新しいタブを開き、https://github.com/aws-samples/reinvent-2017-deeplens-workshop に移動します。

  6. .zip ファイルをダウンロードするか、次のコマンドを使用して Git リポジトリのクローンを作成します。.zip ファイルをダウンロードした場合は、このファイルを見つけてすべてを抽出します。

    git clone git@github.com:aws-samples/reinvent-2017-deeplens-workshop.git

    .zip ファイルをダウンロードした場合は、このファイルを見つけてすべてを抽出します。

次に、トレーニングファイルをアップロードし、これを使用してモデルを編集します。

  1. [Jupyter] タブで、[Upload (アップロード)] を選択します。

  2. 抽出したファイル deeplens-hotdog-or-not-hotdog.ipynbに移動し、[Open (開く)]、[Upload (アップロード)] の順に選択します。

  3. deeplens-hotdog-or-not-hotdog ノートブックを見つけて選択します。

  4. Jupyter 画面の右上で、カーネルが conda_mxnet_p36 であることを確認します。そうでない場合は、カーネルを変更します。

  5. [deeplens-hotdog-or-not-hotdog.ipynb] ファイルで「bucket= 'your S3 bucket name here'」を検索します。'your s3 bucket name here' は、実際の S3 バケットの名前 (deeplens-sagemaker-<your-name> など) に置き換えます。

    ファイルの先頭に戻ります。

    ファイルのステップ (In [#]:) ごとに以下の操作を行います。

    1. ステップの説明を読みます。

    2. ブロック内にコードがある場合は、コードブロック内にカーソルを置き、コードブロックを実行します。Jupyter でコードブロックを実行するには、Ctrl+<Enter> を使用するか、実行アイコン ( ) を選択します。

      重要

      各ステップは、In [1]: のように番号が付けられています。ブロックの実行中は、それが In [*]: に変わります。ブロックの実行が完了すると、In [1]: に戻ります。現在のブロックが実行中の間は、次のコードブロックに移動しないでください。

  6. モデルの編集が完了したら、Amazon S3 コンソールに戻り、バケット名を選択して、test フォルダを選択します。次に、編集したモデルの以下のアーティファクトが S3 バケットの test フォルダに保存されていることを確認します。

    • Hotdog_or_not_model-0000.params

    • Hotdog_or_not_model-symbol.json

ステップ 4: モデルを最適化する

以上で mxNet モデルのトレーニングを完了したので、最後のステップを実行すれば、AWS DeepLens の GPU でモデルを実行できます。トレーニング済みの mxNet モデルは、コンピューティング用に最適化された形式では提供されません。モデルを元の形式でデプロイすると、CPU で mxNet を経由して実行したモデルは最適な速度になりません。GPU で最適な速度でモデルを実行するには、モデルを最適化する必要があります。 MXNet モデルを最適化する手順については、「カスタムモデルの最適化」を参照してください。

ステップ 5: モデルをインポートする

編集済みのモデルを AWS DeepLens 内にインポートします。

  1. ブラウザを使用して、https://console.aws.amazon.com/deeplens/ で AWS DeepLens コンソールを開きます。

  2. [Models (モデル)]、[Import model (モデルのインポート)] の順に選択します。

  3. [モデルを AWS DeepLens にインポート] で、[Externally trained model (外部でトレーニングされたモデル)] を選択します。

  4. [Model settings (モデルの設定)] で、以下の操作を行います。

    1. [Model artifact (モデルのアーティファクト)] に、前のステップで Amazon S3 バケットにアップロードしたアーティファクトへのパスを入力します。パスは、s3://deeplens- で始まります。たとえば、ステップ 1 の命名に従った場合、パスは s3://deeplens-sagemaker-<your-name>/<dir> になります。

    2. [Model name (モデル名)] に、モデルの名前を入力します。

    3. [Model description (モデルの説明)] に、説明を入力します。

  5. [Import model (モデルのインポート)] を選択します。

ステップ 6: Lambda 推論関数を作成する

AWS Lambda コンソールを使用して、モデルを使用する Lambda 関数を作成します。サンプルコード別の手順については、「AWS DeepLens Lambda 推論関数を作成して公開する」を参照してください。

ステップ 7: 新しい AWS DeepLens プロジェクトを作成する

新しい AWS DeepLens プロジェクトを作成し、編集済みのモデルを追加します。

  1. ブラウザを使用して、https://console.aws.amazon.com/deeplens/ で AWS DeepLens コンソールを開きます。

  2. [Projects] を選択します。

  3. [Create new project (新しいプロジェクトの作成)] を選択します。

  4. [Choose project type (オブジェクトタイプの選択)] で、[Create a new blank project (新しい空白プロジェクトの作成)] を選択して、[Next (次へ)] を選択します。

  5. [Project information (プロジェクト情報)] に、このプロジェクトの名前と説明を入力します。

  6. [Project content (プロジェクトのコンテンツ)] で、[Add model (モデルの追加)] を選択します。

  7. 先ほど作成したモデルを探して選択し、[Add model (モデルの追加)] を選択します。

  8. [Add function (関数の追加)] を選択し、deeplens-hotdog-no-hotdog などを選択してから、[Add function (関数の追加)] を選択します。

  9. [作成] を選択します。

ステップ 8: プロジェクトをレビューしてデプロイする

  1. ブラウザを使用して、https://console.aws.amazon.com/deeplens/ で AWS DeepLens コンソールを開きます。

  2. プロジェクトのリストで、先ほど作成したプロジェクトを選択し、[Deploy to device (デバイスにデプロイ)] を選択します。

  3. ターゲットデバイスとして AWS DeepLens を選択し、[Review (レビュー)] を選択します。

  4. 設定をレビューし、[Deploy (デプロイ)] を選択します。

    重要

    プロジェクトのデプロイに伴って、さまざまな AWS のサービスの使用料金が発生します。

ステップ 9: モデルの出力を表示する

モデルの出力を表示するには、「AWS DeepLens 出力ストリームの表示」の手順に従います。