

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 教學課程：開始使用 SageMaker AI Edge Manager
開始使用 SageMaker AI Edge Manager

**重要**  
SageMaker AI Edge Manager 已於 2024 年 4 月 26 日終止。如需繼續將模型部署到邊緣裝置的詳細資訊，請參閱 [SageMaker AI Edge Manager 生命週期結束](https://docs.aws.amazon.com/sagemaker/latest/dg/edge-eol.html)。

Amazon SageMaker AI Edge Manager 是一種在邊緣裝置上執行的軟體代理程式。SageMaker AI Edge Manager 為邊緣裝置提供模型管理，讓您可以直接在 Greengrass 核心裝置上封裝和使用 Amazon SageMaker AI Neo 編譯的模型。透過使用 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)。 *Amazon SageMaker *

若要在現有的 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="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 或更新版本，包括`pip`安裝在核心裝置上的 Python 版本。
+ 安裝在核心裝置上的 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 儲存貯體。本教學課程使用 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>允許 `credentials.iot.amazonaws.com`和 `sagemaker.amazonaws.com`擔任角色的信任關係，如下列 IAM 政策範例所示。

    ```
    { 
      "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 受管政策。
  + 包含元件成品之 S3 儲存貯體`s3:GetObject`的動作，如下列 IAM 政策範例所示。

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

****  

    ```
    {
      "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 中的邊緣裝置機群是邏輯分組裝置的集合。若要搭配 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)

### 建立邊緣裝置機群


**建立邊緣裝置機群 （主控台）**

1. 在 [Amazon SageMaker AI 主控台](https://console.aws.amazon.com/sagemaker)中，選擇 **Edge Manager**，然後選擇 **Edge 裝置機群**。

1. 在**裝置機群**頁面上，選擇**建立裝置機群**。

1. 在**裝置機群屬性**下，執行下列動作：
   + 針對**裝置機群名稱**，輸入裝置機群的名稱。
   + 針對 **IAM 角色**，輸入您在設定 Greengrass 核心裝置時所指定 AWS IoT 角色別名的 Amazon Resource Name (ARN)。
   + 停用**建立 IAM 角色別名**切換。

1. 選擇**下一步**。

1. 在**輸出組態**下，針對 **S3 儲存貯體 URI**，輸入您要與裝置機群建立關聯的 S3 儲存貯體 URI。

1. 選擇**提交**。

### 註冊您的 Greengrass 核心裝置


**將 Greengrass 核心裝置註冊為邊緣裝置 （主控台）**

1. 在 [Amazon SageMaker AI 主控台](https://console.aws.amazon.com/sagemaker)中，選擇 **Edge Manager**，然後選擇 **Edge 裝置**。

1. 在**裝置**頁面上，選擇**註冊裝置**。

1. 在**裝置屬性**下，針對**裝置機群名稱**，輸入您建立的裝置機群名稱，然後選擇**下一步**。

1. 選擇**下一步**。

1. 在**裝置來源**下，針對**裝置名稱**，輸入 Greengrass 核心裝置的 AWS IoT 物件名稱。

1. 選擇**提交**。

## 建立範例元件


為了協助您開始使用 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
   ```

   將*區域*取代為您建立 Greengrass 核心裝置的 AWS 區域 ，並將 amzn-s3-demo-bucket1 取代為 S3 儲存貯體的名稱，以存放元件成品。
**注意**  
根據預設，指令碼會建立影像分類和物件偵測推論的範例元件。若要僅針對特定類型的推論建立元件，請指定 `-i ImageClassification | ObjectDetection`引數。

用於 SageMaker AI Edge Manager 的範例推論和模型元件現在會在您的 中建立 AWS 帳戶。若要在[AWS IoT Greengrass 主控台](https://console.aws.amazon.com/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 用戶端來訂閱此主題。

**Topics**
+ [

### 訂閱通知主題
](#sme-image-classification-subscribe)
+ [

### 部署範例元件
](#sme-image-classification-deploy)
+ [

### 檢視推論結果
](#sme-image-classification-inference-results)

### 訂閱通知主題


在此步驟中，您會在 AWS IoT 主控台中設定 AWS IoT MQTT 用戶端，以監看範例推論元件發佈的 MQTT 訊息。根據預設，元件會在`gg/sageMakerEdgeManager/image-classification`主題上發佈推論結果。在您將元件部署到 Greengrass 核心裝置之前，請訂閱此主題，以查看元件第一次執行時的推論結果。



**訂閱預設通知主題**

1. 在[AWS IoT 主控台](https://console.aws.amazon.com/iot/)導覽功能表中，選擇**測試、MQTT 測試用戶端**。

1. 在**訂閱主題**下，於**主題名稱**方塊中，輸入 **gg/sageMakerEdgeManager/image-classification**。

1. 選擇 **Subscribe (訂閱)**。

### 部署範例元件


在此步驟中，您會設定下列元件並將其部署到您的核心裝置：
+  `aws.greengrass.SageMakerEdgeManager` 
+  `com.greengrass.SageMakerEdgeManager.ImageClassification` 
+  `com.greengrass.SageMakerEdgeManager.ImageClassification.Model` 

#### 若要部署您的元件 (主控台)


1. 在[AWS IoT Greengrass 主控台](https://console.aws.amazon.com/greengrass)導覽功能表中，選擇**部署**，然後選擇您要修改的目標裝置的部署。

1. 在部署頁面上，選擇**修訂**，然後選擇**修訂部署**。

1. 在**指定目標**頁面上，選擇**下一步**。

1. 在**選取元件**頁面上，執行下列動作：

   1. 在**我的元件**下，選取下列元件：
      +  `com.greengrass.SageMakerEdgeManager.ImageClassification`
      + `com.greengrass.SageMakerEdgeManager.ImageClassification.Model` 

   1. 在**公有元件**下，關閉**僅顯示選取的元件**切換，然後選取`aws.greengrass.SageMakerEdgeManager`元件。

   1. 選擇**下一步**。

1. 在**設定元件**頁面上，選取`aws.greengrass.SageMakerEdgeManager`元件並執行下列動作。

   1. 選擇**設定元件**。

   1. 在**組態更新**下的**要合併的組態**中，輸入下列組態。

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

      以您建立的邊緣裝置機群名稱取代 *device-fleet-name*，並以與裝置機群相關聯的 S3 儲存貯體名稱取代 *amzn-s3-demo-bucket*。

   1. 選擇**確認**，然後選擇**下一步**。

1. 在**設定進階設定**頁面上，保留預設組態設定，然後選擇 **下一步**。

1. 在**檢閱**頁面上，選擇**部署**

#### 若要部署您的元件 (AWS CLI)


1. 在您的開發電腦上，建立 `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` 欄位中，`targetArn`以下列格式將物件或物群組的 Amazon Resource Name (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
   ```

可能需要幾分鐘才能完成部署。在下一個步驟中，檢查元件記錄檔以確認部署是否已順利完成，並檢視推論結果。

### 檢視推論結果


部署元件之後，您可以在 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/)導覽功能表中，選擇**測試、MQTT 測試用戶端**。

  1. 在**訂閱**下，選擇 **gg/sageMakerEdgeManager/image-classification**。

   
+ **元件日誌** - 若要在元件日誌中檢視推論結果，請在 Greengrass 核心裝置上執行下列命令。

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

如果您在元件日誌或 MQTT 用戶端中看不到推論結果，則部署失敗或無法連線到核心裝置。如果您的核心裝置未連線至網際網路，或沒有執行元件的正確許可，就可能發生這種情況。在核心裝置上執行下列命令，以檢視 AWS IoT Greengrass 核心軟體日誌檔案。此檔案包含 Greengrass 核心裝置的部署服務日誌。

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

如需詳細資訊，請參閱[故障診斷機器學習推論](ml-troubleshooting.md)。