チュートリアル: SageMaker Edge Manager の使用を開始する - AWS IoT Greengrass

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

チュートリアル: SageMaker Edge Manager の使用を開始する

重要

SageMaker Edge Manager は 2024 年 4 月 26 日に廃止されました。引き続きモデルをエッジデバイスにデプロイする方法の詳細については、SageMaker 「エッジマネージャーのサポート終了」を参照してください。

Amazon SageMaker Edge Manager は、エッジデバイスで実行されるソフトウェアエージェントです。 SageMaker Edge Manager はエッジデバイスのモデル管理を提供するため、Amazon SageMaker Neo でコンパイルされたモデルを Greengrass コアデバイス上で直接パッケージ化して使用できます。 SageMaker Edge Manager を使用すると、コアデバイスからモデルの入力および出力データをサンプリングし、そのデータを に送信してモニタリングと分析 AWS クラウド を行うこともできます。 SageMaker Edge Manager が Greengrass コアデバイスで動作する方法の詳細については、「」を参照してくださいGreengrass コアデバイスで Amazon SageMaker Edge Manager を使用する

このチュートリアルでは、既存のコアデバイスで が提供するサンプルコンポーネントで SageMaker Edge Manager AWSの使用を開始する方法を示します。これらのサンプルコンポーネントは、 SageMaker Edge Manager コンポーネントを依存関係として使用して Edge Manager エージェントをデプロイし、 SageMaker Neo を使用してコンパイルされた事前トレーニング済みモデルを使用して推論を実行します。 SageMaker Edge Manager エージェントの詳細については、「Amazon SageMaker デベロッパーガイド」のSageMaker 「Edge Manager」を参照してください。

既存の Greengrass コアデバイスで SageMaker Edge Manager エージェントをセットアップして使用するには、次のサンプル推論およびモデルコンポーネントの作成に使用できるサンプルコード AWS を提供します。

  • イメージ分類

    • com.greengrass.SageMakerEdgeManager.ImageClassification

    • com.greengrass.SageMakerEdgeManager.ImageClassification.Model

  • オブジェクトの検出

    • com.greengrass.SageMakerEdgeManager.ObjectDetection

    • com.greengrass.SageMakerEdgeManager.ObjectDetection.Model

このチュートリアルでは、サンプルコンポーネントと SageMaker Edge Manager エージェントをデプロイする方法を示します。

前提条件

このチュートリアルを完了するためには、以下のものが必要です。

  • Amazon Linux 2 で実行されている Greengrass コアデバイス、Debian ベースの Linux プラットフォーム (x86_64 またはArmv8)、または Windows (x86_64)。アカウントをお持ちでない場合は、「チュートリアル: AWS IoT Greengrass V2 の開始方法」を参照してください。

  • Python 3.6 以降 (ご使用の Python のバージョン用 pip がコアデバイスにインストールされていること)。

  • コアデバイスにインストールされている OpenGL APIGLXランタイム (libgl1-mesa-glx)。

  • 管理者権限を持つ AWS Identity and Access Management (IAM) ユーザー。

  • 以下の要件を満たす、インターネットに対応した Windows、Mac、または Unix に類似した開発コンピュータ。

    • Python 3.6 以降がインストールされていること。

    • AWS CLI 管理者IAMユーザーの認証情報を使用してインストールおよび設定されている。詳細については、「AWS CLIのインストール」と「AWS CLIの設定」を参照してください。

  • Greengrass コアデバイスと同じ AWS アカウント と で作成された次の AWS リージョン S3 バケット。

    • サンプル推論およびモデルコンポーネントに含まれるアーティファクトを格納する S3 バケット。このチュートリアルでは、amzn-s3-demo-bucket1 を使用してこのバケットを参照します。

    • SageMaker エッジデバイスフリートに関連付ける S3 バケット。 SageMaker Edge Manager では、エッジデバイスフリートを作成し、実行中の推論のサンプルデータをデバイスに保存するために S3 バケットが必要です。このチュートリアルでは、amzn-s3-demo-bucket2 を使用してこのバケットを参照します。

    S3 バケットを作成する方法の情報については、「Amazon S3 の使用を開始」を参照してください。

  • 次のように設定された Greengrass デバイスのロール:

    • 次のIAMポリシー例に示すように、 credentials.iot.amazonaws.comと がロールを引き受けsagemaker.amazonaws.comることを許可する信頼関係。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "credentials.iot.amazonaws.com" }, "Action": "sts:AssumeRole" }, { "Effect": "Allow", "Principal": { "Service": "sagemaker.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    • AmazonSageMakerEdgeDeviceFleetPolicy IAM 管理ポリシー。

    • AmazonSageMakerFullAccess IAM 管理ポリシー。

    • 次のIAMポリシー例に示すように、コンポーネントアーティファクトを含む S3 バケットのs3:GetObjectアクション。

      { "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1/*" ], "Effect": "Allow" } ] }

SageMaker Edge Manager で Greengrass コアデバイスをセットアップする

Edge Manager の SageMaker エッジデバイスフリートは、論理的にグループ化されたデバイスのコレクションです。で SageMaker Edge Manager を使用するには AWS IoT Greengrass、Edge Manager エージェントをデプロイする Greengrass コアデバイスと同じ AWS IoT ロールエイリアスを使用する SageMaker エッジデバイスフリートを作成する必要があります。その後、コアデバイスをそのフリートの一部として登録する必要があります。

エッジデバイスフリートを作成する

エッジデバイスフリートを作成するには (コンソール)
  1. Amazon SageMaker コンソール で、エッジマネージャー を選択し、エッジデバイスフリート を選択します。

  2. [Device fleets] (デバイスフリート) ページで、[Create device fleet] (デバイスフリートを作成) を選択します。

  3. [Device fleet properties] (デバイスフリートのプロパティ) で、次の作業を行います。

    • [Device fleet name] (デバイスフリート名) には、デバイスフリートの名前を入力します。

    • IAM ロール には、Greengrass コアデバイスのセットアップ時に指定した AWS IoT ロールエイリアスの Amazon リソースネーム (ARN) を入力します。

    • IAM ロールエイリアスの作成トグルを無効にします。

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

  5. 出力設定 の S3 バケット URIURIに、デバイスフリートに関連付ける S3 バケットの を入力します。

  6. [送信] を選択します。

Greengrass コアデバイスを登録する

Greengrass コアデバイスをエッジデバイスとして登録するには (コンソール)
  1. Amazon SageMaker コンソール で、エッジマネージャー を選択し、エッジデバイス を選択します。

  2. [Devices] (デバイス) ページで、[Register devices] (デバイスの登録) を選択します。

  3. [Device properties] (デバイスのプロパティ) では、[Device fleet name] (デバイスフリート名) に作成したデバイスフリートの名前を入力し、[Next] (次へ) を選択します。

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

  5. 「デバイスソース」の「デバイス名」に、Greengrass コアデバイスの AWS IoT モノの名前を入力します。

  6. [送信] を選択します。

サンプルコンポーネントを作成する

SageMaker Edge Manager コンポーネントの使用を開始する際に役立つように、 AWS は、サンプル推論とモデルコンポーネントを作成し、それらを AWS クラウド にアップロード GitHub する Python スクリプトを に提供します。開発用コンピュータで以下の手順を完了します。

サンプルコンポーネントを作成するには
  1. AWS IoT Greengrass コンポーネントサンプルリポジトリを開発用コンピュータ GitHub にダウンロードします。

  2. ダウンロードした /machine-learning/sagemaker-edge-manager フォルダに移動します。

    cd download-directory/machine-learning/sagemaker-edge-manager
  3. 次のコマンドを実行して、サンプルコンポーネントを作成し、 AWS クラウドにアップロードします。

    python3 create_components.py -r region -b amzn-s3-demo-bucket

    置換 region を Greengrass コアデバイスを AWS リージョン 作成した に置き換え、amzn-s3-demo-bucket1 をコンポーネントアーティファクトを保存する S3 バケットの名前に置き換えます。

    注記

    デフォルトでは、スクリプトはイメージ分類推論とオブジェクト検出推論の両方に対するサンプルコンポーネントを作成します。特定のタイプの推論に対してのみのコンポーネントを作成する場合は、-i ImageClassification | ObjectDetection 引数を指定します。

SageMaker Edge Manager で使用するサンプル推論とモデルコンポーネントが で作成されるようになりました AWS アカウント。AWS IoT Greengrass コンソールでサンプルコンポーネントを表示するには、[Components] (コンポーネント) を選択し、[My components] (マイコンポーネント) で次のコンポーネントを検索します。

  • com.greengrass.SageMakerEdgeManager.ImageClassification

  • com.greengrass.SageMakerEdgeManager.ImageClassification.Model

  • com.greengrass.SageMakerEdgeManager.ObjectDetection

  • com.greengrass.SageMakerEdgeManager.ObjectDetection.Model

サンプルイメージ分類推論を実行する

AWSが提供するサンプルコンポーネントと SageMaker Edge Manager エージェントを使用してイメージ分類推論を実行するには、これらのコンポーネントをコアデバイスにデプロイする必要があります。これらのコンポーネントをデプロイすると、 SageMaker Neo コンパイル済みの事前トレーニング済み Resnet-50 モデルがダウンロードされ、デバイスに SageMaker Edge Manager エージェントがインストールされます。 SageMaker Edge Manager エージェントはモデルをロードし、gg/sageMakerEdgeManager/image-classificationトピックに推論結果を発行します。これらの推論結果を表示するには、 AWS IoT コンソールの クライアントを使用して、このトピックをサブスクライブします AWS IoT MQTT。

通知トピックをサブスクライブする

このステップでは、サンプル推論コンポーネントによって発行されたMQTTメッセージを監視するように AWS IoT コンソールでクライアントを設定します AWS IoT MQTT。デフォルトでは、コンポーネントは推論結果を gg/sageMakerEdgeManager/image-classification トピックにパブリッシュします。コンポーネントを Greengrass コアデバイスにデプロイする前に、このトピックにサブスクライブして、コンポーネントが初めて実行されたときの推論結果を確認します。

デフォルトの通知トピックへサブスクライブするには
  1. AWS IoT コンソールナビゲーションメニューで、テスト、MQTTテストクライアント を選択します。

  2. Subscribe to a topic (トピックへサブスクライブ) 内の[Topic name] (トピック名) ボックスで、gg/sageMakerEdgeManager/image-classification と入力します。

  3. [サブスクライブ] を選択します。

サンプルコンポーネントをデプロイする

このステップでは、次のコンポーネントを設定し、コアデバイスにデプロイします。

  • aws.greengrass.SageMakerEdgeManager

  • com.greengrass.SageMakerEdgeManager.ImageClassification

  • com.greengrass.SageMakerEdgeManager.ImageClassification.Model

  1. AWS IoT Greengrass コンソールのナビゲーションメニューで、[Deployments] (デプロイ) を選択した後、修正するターゲットデバイスのデプロイを選択します。

  2. [deployment] (デプロイデプロイ) ページで、[Revise] (修正) を選択し、[Revise deployment] (デプロイの修正) を選択します。

  3. [Specify target] (ターゲットの指定) ページで [Next] (次へ) を選択します。

  4. [Select components] (コンポーネントの選択) ページで、次の手順を実行します:

    1. [My components] (マイコンポーネント) で、次のコンポーネントを選択します。

      • com.greengrass.SageMakerEdgeManager.ImageClassification

      • com.greengrass.SageMakerEdgeManager.ImageClassification.Model

    2. [Public components] (パブリックコンポーネント) で、[Show only selected components] (選択したコンポーネントのみを表示) トグルをオフにしてから、aws.greengrass.SageMakerEdgeManager コンポーネントを選択します。

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

  5. [Configure components] (コンポーネントを設定) ページで、aws.greengrass.SageMakerEdgeManager コンポーネントを選択したら、次の操作を行います。

    1. [Configure component] (コンポーネントを設定) を選択します。

    2. [Configuration update] (設定を更新) の [Configuration to merge] (マージの設定) で、次の設定を入力します。

      { "DeviceFleetName": "device-fleet-name", "BucketName": "amzn-s3-demo-bucket" }

      置換 device-fleet-name を作成したエッジデバイスフリートの名前に置き換え、amzn-s3-demo-bucket デバイスフリートに関連付けられている S3 バケットの名前。

    3. [Confirm] (確認)、[Next] (次へ) の順に選択します。

  6. [Configure advanced settings] (詳細設定) ページはデフォルト設定のままにし、[Next] (次へ) を選択します。

  7. [Review] (レビュー) ページで、[Deploy] (デプロイ) を選択します。

  1. 開発用コンピュータで、deployment.jsonファイルを作成して SageMaker Edge Manager コンポーネントのデプロイ設定を定義します。このファイルは、次の例のようになります。

    { "targetArn":"targetArn", "components": { "aws.greengrass.SageMakerEdgeManager": { "componentVersion": "1.0.x", "configurationUpdate": { "merge": "{\"DeviceFleetName\":\"device-fleet-name\",\"BucketName\":\"amzn-s3-demo-bucket2\"}" } }, "com.greengrass.SageMakerEdgeManager.ImageClassification": { "componentVersion": "1.0.x", "configurationUpdate": { } }, "com.greengrass.SageMakerEdgeManager.ImageClassification.Model": { "componentVersion": "1.0.x", "configurationUpdate": { } }, } }
    • targetArn フィールドで、 targetArnをデプロイの対象となるモノまたはモノグループの Amazon リソースネーム (ARN) に置き換えます。形式は次のとおりです。

      • モノ: arn:aws:iot:region:account-id:thing/thingName

      • モノのグループ: arn:aws:iot:region:account-id:thinggroup/thingGroupName

    • merge フィールドで、device-fleet-name を、作成したエッジデバイスフリートの名前に置き換えます。次に、amzn-s3-demo-bucket2 デバイスフリートに関連付けられている S3 バケットの名前。

    • 各コンポーネントのコンポーネントバージョンを、使用可能な最新のバージョンに置き換えます。

  2. 次のコマンドを実行して、デバイスにコンポーネントをデプロイします。

    aws greengrassv2 create-deployment \ --cli-input-json file://path/to/deployment.json

デプロイには数分かかる場合があります。次のステップでは、コンポーネントログをチェックして、デプロイが正常に完了したことを確認し、推論結果を表示します。

推論結果を表示する

コンポーネントをデプロイした後、Greengrass コアデバイスのコンポーネントログと AWS IoT コンソールのクライアントで AWS IoT MQTT推論結果を表示できます。コンポーネントが推論結果をパブリッシュするトピックへサブスクライブするには、「通知トピックをサブスクライブする」を参照してください。

  • AWS IoT MQTT client — 推論コンポーネントがデフォルトの通知トピック で発行した結果を表示するには、次のステップを実行します。

    1. AWS IoT コンソールナビゲーションメニューで、テスト、MQTTテストクライアント を選択します。

    2. [Subscriptions] (サブスクリプション) 内で、gg/sageMakerEdgeManager/image-classification を選択します。

     

  • コンポーネントログ - コンポーネントログで推論結果を確認するには、Greengrass コアデバイスで次のコマンドを実行します。

    sudo tail -f /greengrass/v2/logs/com.greengrass.SageMakerEdgeManager.ImageClassification.log

コンポーネントログまたはMQTTクライアントに推論結果が表示されない場合、デプロイは失敗するか、コアデバイスに到達しませんでした。これは、コアデバイスがインターネットに接続されていない、あるいはコンポーネントを実行するために適切な権限がない場合に発生します。コアデバイスで次のコマンドを実行して、 AWS IoT Greengrass Core ソフトウェアログファイルを表示します。このファイルは、Greengrass コアデバイスのデプロイサービスからのログが含まれます。

sudo tail -f /greengrass/v2/logs/greengrass.log

詳細については、「機械学習の推論に対するトラブルシューティング」を参照してください。