翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
チュートリアル: SageMaker AI Edge Manager の使用を開始する
重要
SageMaker AI Edge Manager は 2024 年 4 月 26 日に廃止されました。エッジデバイスにモデルをデプロイし続ける方法の詳細については、SageMaker 「AI Edge Manager のサポート終了」を参照してください。
Amazon SageMaker AI Edge Manager は、エッジデバイスで実行されるソフトウェアエージェントです。 SageMaker AI Edge Manager はエッジデバイスのモデル管理を提供するため、Amazon SageMaker AI Neo でコンパイルされたモデルを Greengrass コアデバイスに直接パッケージ化して使用できます。 SageMaker AI Edge Manager を使用すると、コアデバイスからモデルの入力および出力データをサンプリングし、そのデータを に送信して AWS クラウド モニタリングと分析を行うこともできます。Greengrass コアデバイスでの SageMaker AI Edge Manager の動作の詳細については、「」を参照してくださいGreengrass コアデバイスで Amazon SageMaker AI Edge Manager を使用する。
このチュートリアルでは、既存のコアデバイスで提供されているサンプルコンポーネントを使用して SageMaker AI Edge Manager AWSの使用を開始する方法を示します。これらのサンプルコンポーネントは、 SageMaker AI Edge Manager コンポーネントを依存関係として使用して Edge Manager エージェントをデプロイし、 SageMaker AI Neo を使用してコンパイルされた事前トレーニング済みモデルを使用して推論を実行します。 SageMaker AI Edge Manager エージェントの詳細については、「Amazon AI デベロッパーガイド」の SageMaker 「AI SageMaker Edge Manager」を参照してください。
既存の Greengrass コアデバイスで SageMaker AI Edge Manager エージェントをセットアップして使用するには、次のサンプル推論コンポーネントとモデルコンポーネントを作成するために使用できるサンプルコード AWS を提供します。
-
イメージ分類
-
com.greengrass.SageMakerEdgeManager.ImageClassification
-
com.greengrass.SageMakerEdgeManager.ImageClassification.Model
-
-
オブジェクトの検出
-
com.greengrass.SageMakerEdgeManager.ObjectDetection
-
com.greengrass.SageMakerEdgeManager.ObjectDetection.Model
-
このチュートリアルでは、サンプルコンポーネントと SageMaker AI 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 バケット。このチュートリアルでは、このバケットを参照するにあたり DOC-amzn-s3-demo-bucket1 を使用します。
-
SageMaker AI エッジデバイスフリートに関連付ける S3 バケット。 SageMaker AI 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 AI Edge Manager で Greengrass コアデバイスをセットアップする
SageMaker AI Edge Manager のエッジデバイスフリートは、論理的にグループ化されたデバイスのコレクションです。で SageMaker AI Edge Manager を使用するには AWS IoT Greengrass、 SageMaker AI Edge Manager エージェントをデプロイする Greengrass コアデバイスと同じ AWS IoT ロールエイリアスを使用するエッジデバイスフリートを作成する必要があります。その後、コアデバイスをそのフリートの一部として登録する必要があります。
エッジデバイスフリートを作成する
エッジデバイスフリートを作成するには (コンソール)
-
Amazon SageMaker AI コンソール
で、エッジマネージャーを選択し、エッジデバイスフリートを選択します。 -
[Device fleets] (デバイスフリート) ページで、[Create device fleet] (デバイスフリートを作成) を選択します。
-
[Device fleet properties] (デバイスフリートのプロパティ) で、次の作業を行います。
-
[Device fleet name] (デバイスフリート名) には、デバイスフリートの名前を入力します。
-
IAM ロールには、Greengrass コアデバイスのセットアップ時に指定した AWS IoT ロールエイリアスの Amazon リソースネーム (ARN) を入力します。
-
IAM ロールエイリアスの作成トグルを無効にします。
-
-
[Next (次へ)] を選択します。
-
出力設定の S3 バケット URIに、デバイスフリートに関連付ける S3 バケットURIの を入力します。
-
[送信] を選択します。
Greengrass コアデバイスを登録する
Greengrass コアデバイスをエッジデバイスとして登録するには (コンソール)
-
Amazon SageMaker AI コンソール
で、エッジマネージャーを選択し、エッジデバイスを選択します。 -
[Devices] (デバイス) ページで、[Register devices] (デバイスの登録) を選択します。
-
[Device properties] (デバイスのプロパティ) では、[Device fleet name] (デバイスフリート名) に作成したデバイスフリートの名前を入力し、[Next] (次へ) を選択します。
-
[Next (次へ)] を選択します。
-
デバイスソースのデバイス名に、Greengrass コアデバイスの AWS IoT モノの名前を入力します。
-
[送信] を選択します。
サンプルコンポーネントを作成する
SageMaker AI Edge Manager コンポーネントの使用を開始できるように、 には、サンプル推論とモデルコンポーネントを作成し、それらを にアップロード GitHub する Python スクリプトが AWS クラウド に AWS 用意されています。開発用コンピュータで以下の手順を完了します。
サンプルコンポーネントを作成するには
-
のAWS IoT Greengrass コンポーネントサンプル
リポジトリを開発用コンピュータ GitHub にダウンロードします。 -
ダウンロードした
/machine-learning/sagemaker-edge-manager
フォルダに移動します。cd
download-directory
/machine-learning/sagemaker-edge-manager -
次のコマンドを実行して、サンプルコンポーネントを作成し、 AWS クラウドにアップロードします。
python3 create_components.py -r
region
-b amzn-s3-demo-bucketを Greengrass コアデバイスを作成した AWS リージョン
region
に置き換え、amzn-s3-demo-bucket1 をコンポーネントアーティファクトを保存する S3 バケットの名前に置き換えます。注記
デフォルトでは、スクリプトはイメージ分類推論とオブジェクト検出推論の両方に対するサンプルコンポーネントを作成します。特定のタイプの推論に対してのみのコンポーネントを作成する場合は、
-i
引数を指定します。ImageClassification | ObjectDetection
SageMaker AI Edge Manager で使用するサンプル推論とモデルコンポーネントが で作成されるようになりました AWS アカウント。AWS IoT Greengrass コンソール
-
com.greengrass.SageMakerEdgeManager.ImageClassification
-
com.greengrass.SageMakerEdgeManager.ImageClassification.Model
-
com.greengrass.SageMakerEdgeManager.ObjectDetection
-
com.greengrass.SageMakerEdgeManager.ObjectDetection.Model
サンプルイメージ分類推論を実行する
AWSが提供するサンプルコンポーネントと SageMaker AI Edge Manager エージェントを使用してイメージ分類推論を実行するには、これらのコンポーネントをコアデバイスにデプロイする必要があります。これらのコンポーネントをデプロイすると、 SageMaker AI Neo コンパイル済み事前トレーニング済み Resnet-50 モデルがダウンロードされ、デバイスに SageMaker AI Edge Manager エージェントがインストールされます。 SageMaker AI Edge Manager エージェントはモデルをロードし、gg/sageMakerEdgeManager/image-classification
トピックに推論結果を発行します。これらの推論結果を表示するには、 AWS IoT コンソールで AWS IoT MQTTクライアントを使用して、このトピックをサブスクライブします。
通知トピックをサブスクライブする
このステップでは、サンプル推論コンポーネントによって発行されたMQTTメッセージを監視するように AWS IoT コンソールでクライアントを設定します AWS IoT MQTT。デフォルトでは、コンポーネントは推論結果を gg/sageMakerEdgeManager/image-classification
トピックにパブリッシュします。コンポーネントを Greengrass コアデバイスにデプロイする前に、このトピックにサブスクライブして、コンポーネントが初めて実行されたときの推論結果を確認します。
デフォルトの通知トピックへサブスクライブするには
-
AWS IoT コンソール
のナビゲーションメニューで、テスト、MQTTテストクライアントを選択します。 -
Subscribe to a topic (トピックへサブスクライブ) 内の[Topic name] (トピック名) ボックスで、
gg/sageMakerEdgeManager/image-classification
と入力します。 -
[サブスクライブ] を選択します。
サンプルコンポーネントをデプロイする
このステップでは、次のコンポーネントを設定し、コアデバイスにデプロイします。
-
aws.greengrass.SageMakerEdgeManager
-
com.greengrass.SageMakerEdgeManager.ImageClassification
-
com.greengrass.SageMakerEdgeManager.ImageClassification.Model
-
AWS IoT Greengrass コンソール
のナビゲーションメニューで、[Deployments] (デプロイ) を選択した後、修正するターゲットデバイスのデプロイを選択します。 -
[deployment] (デプロイデプロイ) ページで、[Revise] (修正) を選択し、[Revise deployment] (デプロイの修正) を選択します。
-
[Specify target] (ターゲットの指定) ページで [Next] (次へ) を選択します。
-
[Select components] (コンポーネントの選択) ページで、次の手順を実行します:
-
[My components] (マイコンポーネント) で、次のコンポーネントを選択します。
-
com.greengrass.SageMakerEdgeManager.ImageClassification
-
com.greengrass.SageMakerEdgeManager.ImageClassification.Model
-
-
[Public components] (パブリックコンポーネント) で、[Show only selected components] (選択したコンポーネントのみを表示) トグルをオフにしてから、
aws.greengrass.SageMakerEdgeManager
コンポーネントを選択します。 -
[Next (次へ)] を選択します。
-
-
[Configure components] (コンポーネントを設定) ページで、
aws.greengrass.SageMakerEdgeManager
コンポーネントを選択したら、次の操作を行います。-
[Configure component] (コンポーネントを設定) を選択します。
-
[Configuration update] (設定を更新) の [Configuration to merge] (マージの設定) で、次の設定を入力します。
{ "DeviceFleetName": "
device-fleet-name
", "BucketName": "amzn-s3-demo-bucket
" }を作成したエッジデバイスフリートの名前
device-fleet-name
に置き換え、 をデバイスフリートに関連付けられている S3 バケットの名前amzn-s3-demo-bucket
に置き換えます。 -
[Confirm] (確認)、[Next] (次へ) の順に選択します。
-
-
[Configure advanced settings] (詳細設定) ページはデフォルト設定のままにし、[Next] (次へ) を選択します。
-
[Review] (レビュー) ページで、[Deploy] (デプロイ) を選択します。
-
開発用コンピュータで、
deployment.json
ファイルを作成して SageMaker AI 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
フィールドで、 をデプロイの対象となるモノまたはモノグループの
Amazon リソースネーム (ARN) に置き換えます。形式は次のとおりです。targetArn
-
モノ:
arn:aws:iot:
region
:account-id
:thing/thingName
-
モノのグループ:
arn:aws:iot:
region
:account-id
:thinggroup/thingGroupName
-
-
merge
フィールドで、 を、作成したエッジデバイスフリートの名前device-fleet-name
に置き換えます。次に、 をデバイスフリートに関連付けられている S3 バケットの名前amzn-s3-demo-bucket2
に置き換えます。 -
各コンポーネントのコンポーネントバージョンを、使用可能な最新のバージョンに置き換えます。
-
-
次のコマンドを実行して、デバイスにコンポーネントをデプロイします。
aws greengrassv2 create-deployment \ --cli-input-json file://
path/to/
deployment.json
デプロイには数分かかる場合があります。次のステップでは、コンポーネントログをチェックして、デプロイが正常に完了したことを確認し、推論結果を表示します。
推論結果を表示する
コンポーネントをデプロイした後、Greengrass コアデバイスのコンポーネントログと AWS IoT コンソールの クライアントで AWS IoT MQTT推論結果を表示できます。コンポーネントが推論結果をパブリッシュするトピックへサブスクライブするには、「通知トピックをサブスクライブする」を参照してください。
-
AWS IoT MQTT client - 推論コンポーネントがデフォルトの通知トピックで発行した結果を表示するには、次の手順を実行します。
-
AWS IoT コンソール
のナビゲーションメニューで、テスト、MQTTテストクライアントを選択します。 -
[Subscriptions] (サブスクリプション) 内で、
gg/sageMakerEdgeManager/image-classification
を選択します。
-
-
コンポーネントログ - コンポーネントログで推論結果を確認するには、Greengrass コアデバイスで次のコマンドを実行します。
sudo tail -f
/logs/com.greengrass.SageMakerEdgeManager.ImageClassification.log/greengrass/v2
コンポーネントログまたはMQTTクライアントに推論結果が表示されない場合、デプロイは失敗するか、コアデバイスに到達しませんでした。これは、コアデバイスがインターネットに接続されていない、あるいはコンポーネントを実行するために適切な権限がない場合に発生します。コアデバイスで次のコマンドを実行して、 AWS IoT Greengrass Core ソフトウェアログファイルを表示します。このファイルは、Greengrass コアデバイスのデプロイサービスからのログが含まれます。
sudo tail -f
/logs/greengrass.log
/greengrass/v2
詳細については、「機械学習の推論に対するトラブルシューティング」を参照してください。