教學課程:開始使用 SageMaker 邊緣管理員 - AWS IoT Greengrass

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

教學課程:開始使用 SageMaker 邊緣管理員

重要

SageMaker 邊緣管理員已於 2024 年 4 月 26 日停止使用。如需有關繼續將模型部署到邊緣裝置的詳細資訊,請參閱SageMaker 邊緣管理員生命週期結束

Amazon SageMaker 邊緣管理器是在邊緣裝置上執行的軟體代理程式。 SageMaker Edge Manager 提供邊緣裝置的模型管理功能,讓您可以直接在 Greengrass 核心裝置上封裝和使用 Amazon SageMaker 新編譯模型。透過使用 SageMaker Edge Manager,您也可以從核心裝置取樣模型輸入和輸出資料,並將該資料傳送至以進 AWS 雲端 行監視和分析。如需 SageMaker 邊緣管理員如何在 Greengrass 核心裝置上運作的詳細資訊,請參閱。在核心設備上使用 Amazon SageMaker 邊緣管理器

本教學課程說明如何開始使用 SageMaker Edge Manager,搭配現有核心裝置上 AWS提供的範例元件。這些範例元件會使用 SageMaker Edge Manager 元件做為相依性來部署 Edge Manager 代理程式,並使用使用 Neo 編譯的預先訓練模型執行推論。 SageMaker 如需 SageMaker 邊緣管理員代理程式的詳細資訊,請參閱 Amazon SageMaker 開發人員指南中的SageMaker 邊緣管理

若要在現有 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 管理員代理程式。

必要條件

若要完成此自學課程,您必須符合下列先決條件:

  • 在 Amazon Linux 2,基於 Debian 的 Linux 平台(x86_64 或 Armv8)或視窗(x86_64)上運行的 Greengrass 核心設備。如果您沒有帳戶,請參閱 教學課程:AWS IoT Greengrass V2 入門

  • Python 3.6 或更高版本,包括您pip的 Python 版本,安裝在您的核心設備上。

  • OpenGL API GLX 運行時(libgl1-mesa-glx)安裝在您的核心設備上。

  • 具有管理員權限的 AWS Identity and Access Management (IAM) 使用者。

  • 具備網際網路功能的 Windows、Mac 或類 Unix 開發電腦,符合下列需求:

  • 以下 S3 存儲桶在同一個 AWS 帳戶 和 AWS 區域 您的 Greengrass 核心設備中創建:

    • 用於存放範例推論和模型元件中包含的成品的 S3 儲存貯體。本教學課程使用 amzn-S3-示範儲存貯體 1 來參考此值區。

    • 與 SageMaker 邊緣裝置叢集關聯的 S3 儲存貯體。 SageMaker Edge Manager 需要 S3 儲存貯體來建立邊緣裝置叢集,並存放在裝置上執行推論時所產生的範例資料。本教學課程使用 amzn-S3-示範儲存貯體 2 來參考此值區。

    如需建立 S3 儲存貯體的相關資訊,請參閱開始使用 Amazon S3

  • 設定了以下內容的 Greengrass 裝置角色

    • 允許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" } ] }
    • AmazonSageMakerEdgeDeviceFleetPolicyIAM管理的策略。

    • AmazonSageMakerFullAccessIAM管理的策略。

    • 包含元件成品之 S3 儲存貯體的s3:GetObject動作,如下列IAM政策範例所示。

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

在邊緣管理器中設置您的 Greengrass 核心設備 SageMaker

邊緣管理員中的 SageMaker 邊緣裝置叢集是邏輯分組裝置的集合。若要搭配使用 SageMaker Edge Manager AWS IoT Greengrass,您必須建立邊緣裝置叢集,該叢集使用與您部署 SageMaker Edge Manager 代理程式之 Greengrass 核心裝置相同的 AWS IoT 角色別名。然後,您必須將核心裝置註冊為該叢集的一部分。

建立邊緣裝置叢集

建立邊緣裝置叢集 (主控台)
  1. Amazon 主 SageMaker 控台中,選擇邊緣管理員,然後選擇邊緣裝置叢集

  2. 在 [裝置叢集] 頁面上,選擇 [建立裝置叢集]。

  3. 在 [裝置叢集內容] 底下,執行下列動作:

    • 針對裝置叢集名稱,輸入裝置叢集的名稱。

    • 對於IAM角色,請輸入您在設定 Greengrass 核心裝置時指定的 AWS IoT 角色別名的 Amazon 資源名稱 (ARN)。

    • 停用 [建立IAM角色別名] 切換。

  4. 選擇 Next (下一步)

  5. 在「輸出組態」下,對於 S3 儲存貯體URI,輸入要與裝置叢集建立關聯的 S3 儲存貯體。URI

  6. 選擇提交

註冊 Greengrass 設備

將您的 Greengrass 核心裝置註冊為邊緣裝置 (主控台)
  1. Amazon 主 SageMaker 控台中,選擇邊緣管理員,然後選擇邊緣裝置

  2. 在 [裝置] 頁面上,選擇 [註冊裝置]。

  3. 在 [裝置內容] 底下,對於 [裝置群名稱],輸入您所建立之裝置叢集的名稱,然後選擇 [下步]。

  4. 選擇 Next (下一步)

  5. 在 [裝置來源] 下,對於 [裝置名稱],輸入 Greengrass 核心裝置的 AWS IoT 物件名稱。

  6. 選擇提交

建立範例元件

AWS 雲端 為了協助您開始使用 SageMaker Edge Manager 元件,請在上 AWS 提供 Python 指令碼 GitHub ,以建立範例推論和模型元件,並將它們上傳到中。在開發電腦上完成下列步驟。

建立範例元件
  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

    Replace (取代) region 使用您建立 Greengrass 核心裝置的 AWS 區域 位置,並將 amzn-s3 演示儲存貯體 1 取代為 S3 儲存貯體的名稱,以存放元件成品。

    注意

    根據預設,指令碼會為影像分類和物件偵測推論建立範例元件。若要僅針對特定類型的推論建立元件,請指定-i ImageClassification | ObjectDetection引數。

範例推論和模型元件,以配合 SageMaker 邊緣管理員使用,現在會在. AWS 帳戶若要在AWS IoT Greengrass 主控台中查看範例元件,請選擇 [元件],然後在 [我的元件] 底下搜尋下列元件:

  • com.greengrass.SageMakerEdgeManager.ImageClassification

  • com.greengrass.SageMakerEdgeManager.ImageClassification.Model

  • com.greengrass.SageMakerEdgeManager.ObjectDetection

  • com.greengrass.SageMakerEdgeManager.ObjectDetection.Model

執行範例影像分類推論

若要使用 AWS提供的範例元件和 SageMaker Edge Manager 代理程式執行映像分類推論,您必須將這些元件部署到核心裝置。部署這些元件會下載 SageMaker 新編譯的預先訓練 Resnet-50 模型,並在您的裝置上安裝 SageMaker 邊緣管理員代理程式。 SageMaker Edge 管理員代理程式會載入模型,並發佈有關該gg/sageMakerEdgeManager/image-classification主題的推論結果。若要檢視這些推論結果,請使用主 AWS IoT 控台中的用 AWS IoT MQTT戶端來訂閱此主題。

訂閱通知主題

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

訂閱預設通知主題
  1. AWS IoT 主控台瀏覽功能表中,選擇測試,MQTT測試用戶端

  2. 在 [訂閱主題] 下的 [主題名稱] 方塊中,輸入gg/sageMakerEdgeManager/image-classification

  3. 選擇 Subscribe (訂閱)

部署範例元件

在此步驟中,您可以設定下列元件並將其部署到核心裝置:

  • aws.greengrass.SageMakerEdgeManager

  • com.greengrass.SageMakerEdgeManager.ImageClassification

  • com.greengrass.SageMakerEdgeManager.ImageClassification.Model

  1. AWS IoT Greengrass 主控台導覽功能表中,選擇「部署」,然後為您要修訂的目標裝置選擇部署。

  2. 在部署頁面上,選擇 [修訂],然後選擇 [修訂部署]。

  3. 在 [指定目標] 頁面上,選擇 [下一步]。

  4. [選取元件] 頁面上,執行下列動作:

    1. 我的零組件之下,選擇下列零組件:

      • com.greengrass.SageMakerEdgeManager.ImageClassification

      • com.greengrass.SageMakerEdgeManager.ImageClassification.Model

    2. 在 [公用元件] 下,關閉 [僅顯示選取的元件] 切換,然後選取aws.greengrass.SageMakerEdgeManager元件。

    3. 選擇 Next (下一步)

  5. 在 [設定元件] 頁面上,選取aws.greengrass.SageMakerEdgeManager元件並執行下列動作。

    1. 選擇設定元件

    2. 組態更新下的要合併的組態中,輸入下列組態。

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

      Replace (取代) device-fleet-name 使用您建立的邊緣裝置叢集的名稱,並取代 amzn-s3-demo-bucket 使用與您的裝置叢集關聯的 S3 儲存貯體的名稱。

    3. 選擇確認,然後選擇下一步

  6. 設定進階設定頁面上,保留預設組態設定,然後選擇 下一步

  7. 在「複查」頁面上,選擇「建置

  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 MQTT用戶端中檢視推論結果。 AWS IoT 若要訂閱元件發佈推論結果的主題,請參閱訂閱通知主題

  • AWS IoT MQTTclient — 若要檢視推論元件在預設通知主題上發佈的結果,請完成下列步驟:

    1. AWS IoT 主控台瀏覽功能表中,選擇測試,MQTT測試用戶端

    2. 在「訂閱」下,選擇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

如需詳細資訊,請參閱機器學習推論疑難排解