

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

# チュートリアル: SageMaker AI Edge Manager の使用を開始する
<a name="get-started-with-edge-manager-on-greengrass"></a>

**重要**  
SageMaker AI Edge Manager は 2024 年 4 月 26 日に廃止されました。引き続きモデルをエッジデバイスにデプロイする方法の詳細については、「[SageMaker AI Edge Manager end of life](https://docs.aws.amazon.com/sagemaker/latest/dg/edge-eol.html)」を参照してください。

Amazon SageMaker AI Edge Manager は、エッジデバイスで実行されるソフトウェアエージェントです。SageMaker AI Edge Manager はエッジデバイスのモデル管理を提供し、Amazon SageMaker AI Neo でコンパイルされたモデルを Greengrass コアデバイスで直接パッケージ化して使用できるようにします。SageMaker AI Edge Manager を使用すると、コアデバイスからモデル入出力データをサンプリングし、そのデータを に送信して AWS クラウド モニタリングと分析を行うこともできます。SageMaker AI Edge Manager が Greengrass コアデバイスでどのように機能するかの詳細については、「[Greengrass コアデバイスで Amazon SageMaker AI Edge Manager を使用する](use-sagemaker-edge-manager.md)」を参照してください。

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

既存の 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 エージェントをデプロイする方法を説明します。

**Topics**
+ [前提条件](#edge-manager-getting-started-prereqs)
+ [SageMaker AI Edge Manager で Greengrass コアデバイスをセットアップする](#greengrass-edge-manager-set-up)
+ [サンプルコンポーネントを作成する](#create-sample-sme-ml-components)
+ [サンプルイメージ分類推論を実行する](#run-sample-sme-image-classification-inference)

## 前提条件
<a name="edge-manager-getting-started-prereqs"></a>

このチュートリアルを完了するためには、以下のものが必要です。
+ <a name="sm-req-core-device"></a>Amazon Linux 2 で実行されている Greengrass コアデバイス、Debian ベースの Linux プラットフォーム (x86\$164 または Armv8)、または Windows (x86\$164)。アカウントをお持ちでない場合は、「[チュートリアル: AWS IoT Greengrass V2 の開始方法](getting-started.md)」を参照してください。
+ <a name="sm-req-python"></a>[Python](https://www.python.org/downloads/) 3.6 以降 (ご使用の Python のバージョン用 `pip` がコアデバイスにインストールされていること)。
+ コアデバイスにインストールされている OpenGL API GLX ランタイム (`libgl1-mesa-glx`) 。
+ 管理者権限を持つ AWS Identity and Access Management (IAM) ユーザー。
+ 以下の要件を満たす、インターネットに対応した Windows、Mac、または Unix に類似した開発コンピュータ。
  + [Python](https://www.python.org/downloads/) 3.6 以降がインストールされていること。
  + AWS CLI IAM 管理者ユーザーの認証情報を使用してインストールおよび設定されている。詳細については、「[AWS CLIのインストール](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html)」と「[AWS CLIの設定](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)」を参照してください。
+ 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 の使用を開始](https://docs.aws.amazon.com/AmazonS3/latest/userguide/GetStartedWithS3.html)」を参照してください。
+ 次のように設定された [Greengrass デバイスのロール](device-service-role.md): 
  + <a name="sm-req-iam-trust-relationship"></a>次の 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" 
        } 
      ] 
    }
    ```
  + <a name="sm-req-iam-sagemanakeredgedevicefleetpolicy"></a>[AmazonSageMakerEdgeDeviceFleetPolicy](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/service-role/AmazonSageMakerEdgeDeviceFleetPolicy) IAM マネージドポリシー。
  + [AmazonSageMakerFullAccess](https://console.aws.amazon.com//iamv2/home?region=us-east-1#/policies/details/arn%3Aaws%3Aiam%3A%3Aaws%3Apolicy%2FAmazonSageMakerFullAccess?section=policy_permissions) IAM マネージドポリシー。
  + 次の IAM ポリシー例に示されているように、コンポーネントのアーティファクトが含まれる S3 バケットに対する `s3:GetObject` アクション。

------
#### [ JSON ]

****  

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

------

## SageMaker AI Edge Manager で Greengrass コアデバイスをセットアップする
<a name="greengrass-edge-manager-set-up"></a>

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

**Topics**
+ [エッジデバイスフリートを作成する](#create-edge-device-fleet-for-greengrass)
+ [Greengrass コアデバイスを登録する](#register-greengrass-core-device-in-sme)

### エッジデバイスフリートを作成する
<a name="create-edge-device-fleet-for-greengrass"></a>

**エッジデバイスフリートを作成するには (コンソール)**

1. [Amazon SageMaker AI コンソール](https://console.aws.amazon.com/sagemaker)で、**[Edge Manager]** を選択し、**[Edge デバイスフリート]** を選択します。

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

1. **[Device fleet properties]** (デバイスフリートのプロパティ) で、次の作業を行います。
   + **[Device fleet name]** (デバイスフリート名) には、デバイスフリートの名前を入力します。
   + **[IAM role]** (IAM ロール) には、Greengrass コアデバイスをセットアップするときに指定した AWS IoT ロールエイリアスの Amazon リソースネーム (ARN) を入力します。
   + **[Create IAM role alias]** (IAM ロールエイリアスを作成) のトグルを無効にします。

1. [**次へ**] を選択します。

1. **[Output configuration]** (出力の設定) で、**[S3 bucket URI]** (S3 バケット URI) にデバイスフリートに関連付ける S3 バケットの URI を入力します。

1. [**Submit**] を選択してください。

### Greengrass コアデバイスを登録する
<a name="register-greengrass-core-device-in-sme"></a>

**Greengrass コアデバイスをエッジデバイスとして登録するには (コンソール)**

1. [Amazon SageMaker AI コンソール](https://console.aws.amazon.com/sagemaker)で、**[Edge Manager]** を選択し、**[Edge デバイス]** を選択します。

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

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

1. [**次へ**] を選択します。

1. **Device source** の **Device name** に、Greengrass コアデバイスの AWS IoT モノの名前を入力します。

1. [**Submit**] を選択してください。

## サンプルコンポーネントを作成する
<a name="create-sample-sme-ml-components"></a>

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

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

1. GitHub 上にある [AWS IoT Greengrass コンポーネント例](https://github.com/aws-greengrass/aws-greengrass-component-examples/)をダウンロードし、開発用コンピュータに保存します。

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

   ```
   cd download-directory/machine-learning/sagemaker-edge-manager
   ```

1. 次のコマンドを実行して、サンプルコンポーネントを作成し、 AWS クラウドにアップロードします。

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

   *region* を Greengrass コアデバイスを作成した AWS リージョン に置き換え、amzn-s3-demo-bucket1 をコンポーネントアーティファクトを保存する S3 バケットの名前に置き換えます。
**注記**  
デフォルトでは、スクリプトはイメージ分類推論とオブジェクト検出推論の両方に対するサンプルコンポーネントを作成します。特定のタイプの推論に対してのみのコンポーネントを作成する場合は、`-i ImageClassification | ObjectDetection` 引数を指定します。

SageMaker AI Edge Manager で使用するためのサンプル推論およびモデルコンポーネントが AWS アカウントに作成されました。[AWS IoT Greengrass コンソール](https://console.aws.amazon.com/greengrass)でサンプルコンポーネントを表示するには、**[Components]** (コンポーネント) を選択し、**[My components]** (マイコンポーネント) で次のコンポーネントを検索します。
+  `com.greengrass.SageMakerEdgeManager.ImageClassification` 
+  `com.greengrass.SageMakerEdgeManager.ImageClassification.Model` 
+ `com.greengrass.SageMakerEdgeManager.ObjectDetection `
+ `com.greengrass.SageMakerEdgeManager.ObjectDetection.Model`

## サンプルイメージ分類推論を実行する
<a name="run-sample-sme-image-classification-inference"></a>

 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 クライアントを使用してこのトピックをサブスクライブします。

**Topics**
+ [通知トピックをサブスクライブする](#sme-image-classification-subscribe)
+ [サンプルコンポーネントをデプロイする](#sme-image-classification-deploy)
+ [推論結果を表示する](#sme-image-classification-inference-results)

### 通知トピックをサブスクライブする
<a name="sme-image-classification-subscribe"></a>

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



**デフォルトの通知トピックへサブスクライブするには**

1. [AWS IoT コンソール](https://console.aws.amazon.com/iot/)のナビゲーションメニューで、**[Test, MQTT test client]** (テスト、MQTT テストクライアント) を選択します。

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

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

### サンプルコンポーネントをデプロイする
<a name="sme-image-classification-deploy"></a>

このステップでは、次のコンポーネントを設定し、コアデバイスにデプロイします。
+  `aws.greengrass.SageMakerEdgeManager` 
+  `com.greengrass.SageMakerEdgeManager.ImageClassification` 
+  `com.greengrass.SageMakerEdgeManager.ImageClassification.Model` 

#### コンポーネントをデプロイするには (コンソール)
<a name="sme-image-classification-deploy-console"></a>

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

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

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

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

   1. **[My components]** (マイコンポーネント) で、次のコンポーネントを選択します。
      +  `com.greengrass.SageMakerEdgeManager.ImageClassification`
      + `com.greengrass.SageMakerEdgeManager.ImageClassification.Model` 

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

   1. [**次へ**] を選択します。

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

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

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

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

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

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

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

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

#### コンポーネントをデプロイするには (AWS CLI)
<a name="sme-image-classification-deploy-cli"></a>

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

   ```
   {
     "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 バケットの名前に置き換えます。
   + 各コンポーネントのコンポーネントバージョンを、使用可能な最新のバージョンに置き換えます。

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

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

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

### 推論結果を表示する
<a name="sme-image-classification-inference-results"></a>

コンポーネントをデプロイした後、Greengrass コアデバイスのコンポーネントログと AWS IoT コンソールの AWS IoT MQTT クライアントで推論結果を表示できます。コンポーネントが推論結果をパブリッシュするトピックへサブスクライブするには、「[通知トピックをサブスクライブする](#sme-image-classification-subscribe)」を参照してください。
+ **AWS IoT MQTT クライアント** — 推論コンポーネントが[デフォルトの通知トピック](#sme-image-classification-subscribe)で発行した結果を表示するには、次の手順を実行します。

  1. [AWS IoT コンソール](https://console.aws.amazon.com/iot/)のナビゲーションメニューで、**[Test, MQTT test client]** (テスト、MQTT テストクライアント) を選択します。

  1. **[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
```

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