執行機器學習推論 - AWS IoT Greengrass

AWS IoT Greengrass Version 1 於 2023 年 6 月 30 日進入延長使用壽命階段。如需詳細資訊,請參閱AWS IoT Greengrass V1 維護政策。在此日期之後, AWS IoT Greengrass V1 將不會發行提供功能、增強功能、錯誤修正或安全性修補程式的更新。在上運行的設備 AWS IoT Greengrass V1 不會中斷,並將繼續運行並連接到雲。我們強烈建議您移轉至 AWS IoT Greengrass Version 2,這會增加重要的新功能,並支援其他平台

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

執行機器學習推論

此功能於AWS IoT Greengrass核心 v1.6 或更新版本。

有了 AWS IoT Greengrass 您可以在本機產生的資料上使用雲端訓練模型,執行 Machine Learning (ML) 推論。您可以從低延遲時間和節省執行本機推論成本中獲益,但仍同時充分利用雲端運算能力進行訓練模型和處理複雜地處理。

若要取得已執行的本機推論,請參閱 如何設定使用 AWS Management Console機器學習推論

AWS IoT Greengrass 機器學習推論如何運作

您可以在任何地方訓練推論,在本機部署它們為機器學習資源,然後從 Greengrass Lambda 函數存取。例如,您可以在SageMaker並將它們部署到您的 Greengrass 核心。然後,Lambda 函數可以使用本機模型在連接的裝置上執行推論,然後將新的訓練數據發送回雲端。

下圖說明 AWS IoT Greengrass Machine Learning 推論的工作流程。

Machine Learning 工作流程的元件和核心裝置間流通的資訊,AWS IoT Greengrass服務和雲端訓練模型。

AWS IoT Greengrass ML 推論簡化 ML 工作流程的每一個步驟,包括:

  • 建立和部署 Machine Learning 架構的原型。

  • 存取雲端訓練模型和將其部署到 Greengrass 核心裝置。

  • 建立可以存取硬體 Accelerator (例如 GPU 和 FPGA) 做為本機資源的推論應用程式。

機器學習資源

Machine Learning 資源代表部署到AWS IoT Greengrass核心。若要部署 Machine Learning 資源,首先,請您在 Greengrass 組中添加資源,然後定義 Lambda 函數在組中如何存取這些資源。在組部署期間,AWS IoT Greengrass從雲端檢索來源模型包,然後將其解壓到 Lambda 執行時間命名空間內的目錄。然後,Greengrass Lambda 函數使用本機部署模型執行推論。

若要更新本機部署模型,首先,請更新對應到 machine learning 資源的來源模型 (在雲端中),然後部署群組。在部署期間,AWS IoT Greengrass 會檢查來源是否有變更。如果有變更,則 AWS IoT Greengrass 會更新本機模型。

支援的模型來源

AWS IoT Greengrass支援 SageMaker 和 Amazon S3 模型來源。

以下要求適用於模型來源:

  • S3 存儲桶,用於存儲 SageMaker 和 Amazon S3 模型來源不得使用 SSE-C 加密。 對於使用伺服器端加密的儲存貯體,請AWS IoT Greengrass目前 ML 推論僅支援 SSE-S3 或 SSE-KMS 加密。如需伺服器端加密選項的詳細資訊,請參「」使用伺服器端加密保護資料中的Amazon Simple Storage Service 用户指南

  • 存放您的 SageMaker 和 Amazon S3 模型來源不得包括句號 (.。有關詳細信息,請參閲有關使用帶 SSL 的虛擬託管風格存儲桶的規則儲存貯體命名規則中的Amazon Simple Storage Service 用户指南

  • 服務水準AWS 區域支援必須適用於AWS IoT GreengrassSageMaker。目前,AWS IoT Greengrass支援 SageMaker 模型在下列區域:

    • US East (Ohio)

    • 美國東部 (維吉尼亞北部)

    • 美國西部 (奧勒岡)

    • 亞太區域 (孟買)

    • 亞太區域 (首爾)

    • 亞太區域 (新加坡)

    • 亞太區域 (雪梨)

    • 亞太區域 (東京)

    • 歐洲 (法蘭克福)

    • 歐洲 (愛爾蘭)

    • 歐洲 (倫敦)

  • AWS IoT Greengrass 必須有 read 存取模型來源的許可,如下列章節所述。

SageMaker

AWS IoT Greengrass支援儲存為 SageMaker 訓練任務。 SageMaker 是一種全受管的 ML 服務,您可以使用內建或自訂的演算法來建立和訓練模型。如需詳細資訊,請參閱「」什麼是 SageMaker?中的SageMaker 開發人員指南

如果您配置了 SageMaker 環境建立儲存貯體其名稱包含sagemaker,然後AWS IoT Greengrass有足夠的權限訪問您的 SageMaker 訓練任務。由政策受管的 AWSGreengrassResourceAccessRolePolicy 允許存取名稱含有 sagemaker 字串的儲存貯體。此政策附屬於 Greengrass 服務角色

否則,您將必須授與 AWS IoT Greengrass read 許可給存放訓練工作的儲存貯體。若要這樣做,請在服務角色中內嵌下列政策。您可以列出多個儲存貯體 ARN。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::my-bucket-name" ] } ] }
Amazon Simple Storage Service (Amazon S3)

AWS IoT Greengrass支援儲存在 Amazon S3 中的模型為tar.gz或者.zip檔案。

啟用AWS IoT Greengrass訪問存儲在 Amazon S3 存儲桶中的模型,則必須授予AWS IoT Greengrass read許可,以執行下列各項:

  • 存放模型於名稱含有 greengrass 的儲存貯體中。

    由政策受管的 AWSGreengrassResourceAccessRolePolicy 允許存取名稱含有 greengrass 字串的儲存貯體。此政策附屬於 Greengrass 服務角色

     

  • 在 Greengrass 服務角色中內嵌政策。

    如果您的儲存貯體名稱不包含 greengrass,請將以下內嵌政策新增到服務角色中。您可以列出多個儲存貯體 ARN。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::my-bucket-name" ] } ] }

    如需詳細資訊,請參閱「」嵌入內嵌政策中的IAM User Guide

要求

以下要求適用於建立和使用 machine learning 資源:

  • 您必須使用AWS IoT Greengrass核心 v1.6 或更新版本。

  • 用户定義的 Lambda 函數可以執行read或者read and write操作。不提供其他操作的權限。附屬 Lambda 函數的容器化模式決定您設定存取權限的方式。如需詳細資訊,請參閱 從 Lambda 函數存取機器學習資源

  • 在 Greengrass 核心裝置的作業系統中,您必須提供完整的資源路徑。

  • 資源名稱或 ID 字元達最大限制 128 個字元時,必須使用模式 [a-zA-Z0-9:_-]+

適用於 ML 推論的執行時間和程式庫

您可以搭配使用下列 ML 執行時間和程式庫與 AWS IoT Greengrass。

這些執行時間和程式庫可以安裝在 NVIDIA Jetson TX2、Intel Atom 和 Raspberry Pi 平台上。如需下載資訊,請參閱 支援的 Machine Learning 執行時間和程式庫。您可以將其直接安裝在核心裝置上。

請務必閱讀以下相容性和限制的內容。

SageMaker Neo 深度學習執行時間

您可以使用 SageMaker Neo 深度學習執行時間,在您的AWS IoT Greengrass裝置。這些模型使用 SageMaker Neo 深度學習編譯器,以改善機器學習推論預測速度。如需 SageMaker 模型最佳化的詳細資訊,請參「」SageMaker Neo 文件

注意

目前,您只能在特定 Amazon Web Services vice 區域中使用 Neo 深度學習編譯器來優化機器學習模型。不過,您可以在每個AWS 區域哪裡AWS IoT Greengrass核心支持。如需詳細資訊,請參閱如何設定最佳化的機器學習推論

MXNet 版本控制

Apache MXNet 目前不保證支援正向相容性,因此您使用較新的架構版本訓練模型時,可能會比使用舊版不順。為了避免模型訓練與模型服務階段兩者間的衝突,以及提供一致的 end-to-end 體驗,請在兩個階段使用相同的 MxNet 框架版本。

在 Raspberry Pi 中的 MXNet

訪問本機 MXNet 模型的 Greengrass Lambda 函數必須設定下列環境變量:

MXNET_ENGINE_TYPE=NativeEngine

您可以在函數程式碼中設定環境變數,或將其新增至特定群組函數的組態中。如需將其新增為組態設定的範例,請參閱步驟

注意

對於一般使用 MXNet 架構來說,如執行第三方程式碼範例,其環境變數必須設定在 Raspberry Pi 中。

在 Raspberry Pi 上的 TensorFlow 模型服務限制

以下是根據我們使用 TensorFlow 32 位元 Arm 程式庫在樹莓派平台上。這些建議僅供進階使用者參考,不具任何保證。

  • 使用 檢查點格式訓練的模型應在服務之前「凍結」為協定緩衝區格式。如需範例,請參閱 TensorFlow-Slim 映像分類模型程式庫

  • 請勿在訓練或推論程式碼中使用 TF-Estimator 和 TF-Slim 程式庫。反之,請使用 .pb 檔案模型載入模式,如下列範例所示。

    graph = tf.Graph() graph_def = tf.GraphDef() graph_def.ParseFromString(pb_file.read()) with graph.as_default(): tf.import_graph_def(graph_def)
注意

如需 TensorFlow 支援平台的詳細資訊,請參「」安裝 TensorFlow中的 TensorFlow 文件中)。