— 开始使用 SageMaker Edge Manager - Amazon IoT Greengrass
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

— 开始使用 SageMaker Edge Manager

Amazon SageMaker Edge Manager 是一款在边缘设备上运行的软件代理。 SageMaker Edge Manager 为边缘设备提供模型管理,因此您可以直接在 Greengrass 核心设备上打包和使用 Amazon SageMaker NEO 编译的模型。通过使用 SageMaker Edge Manager,您还可以对来自核心设备的模型输入和输出数据进行采样,并将这些数据发送到Amazon Web Services 云进行监控和分析。有关 SageMaker Edge Manager 如何在 Greengrass 核心设备上运行的更多信息,请参阅在 Greengrass 核心设备上使用亚马逊 SageMaker 边缘管理器

本教程向您展示如何在现有核心设备上开始使用带有Amazon提供的示例组件的 SageMaker Edge Manager。这些示例组件使用 SageMaker Edge Manager 组件作为依赖项来部署 Edge Manager 代理,并使用使用 SageMaker Neo 编译的预训练模型进行推理。有关 SageMaker Edge Manager 代理的更多信息,请参阅《亚马逊 SageMaker 开发者指南》中的 SageMaker Edge Manager

要在现有 Green SageMaker grass 核心设备上设置和使用 Edge Manager 代理,请Amazon提供示例代码,您可以使用这些代码来创建以下示例推理和模型组件。

  • 图像分类

    • com.greengrass.SageMakerEdgeManager.ImageClassification

    • com.greengrass.SageMakerEdgeManager.ImageClassification.Model

  • 物体检测

    • com.greengrass.SageMakerEdgeManager.ObjectDetection

    • com.greengrass.SageMakerEdgeManager.ObjectDetection.Model

本教程向您展示如何部署示例组件和 SageMaker Edge Manager 代理。

先决条件

,:

  • 在亚马逊 Linux 2、基于 Debian 的 Linux 平台(x86_64 或 Armv8)或 Windows(x86_64)上运行的 Greengrass 核心设备。如果没有,请参阅教程:Amazon IoT Greengrass V2 入门

  • Python 3.6 或更高版本,包括pip适用于你的 Python 版本,安装在你的核心设备上。

  • OpenGL API GLX 运行时 (libgl1-mesa-glx) 安装在你的核心设备上。

  • Amazon Identity and Access Management(IAM)。

  • 符合以下要求的支持互联网的 Windows、Mac 或类似 Unix 的开发计算机:

  • 以下 S3 存储分段Amazon Web Services 账户与Amazon Web Services 区域您的 Greengrass 核心设备相同:

    • 一个 S3 存储桶,用于存储示例推理和模型组件中包含的工件。DOC-EXAMPLE-BUCKET1

    • 您与 SageMaker 边缘设备队列关联的 S3 存储桶。 SageMaker Edge Manager 需要 S3 存储桶来创建边缘设备队列,并在您的设备上存储来自运行推理的示例数据。本教程使用 DOC-EXAMPLE-BUCKET2 来引用此存储桶。

    Amazon 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" } ] }
    • I AmazonSageMakerEdgeDeviceFleetPolicyAM 托管策略。

    • I AmazonSageMakerFullAccessAM 托管策略。

    • 对包含您的组件构件的 S3 存储桶执行的s3:GetObject操作,如以下 IAM 策略示例所示。

      { "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET1/*" ], "Effect": "Allow" } ] }

在 Edge Manager 中设置 Green SageMaker grass 核心设备

Edge Manager 中的 SageMaker 边缘设备队列是逻辑分组设备的集合。要将 SageMaker Edge Manager 与一起Amazon IoT Greengrass使用,必须创建边缘设备队列,该队列使用与部署 Edge Manager 代理的 Green SageMaker grass 核心设备相同的Amazon IoT角色别名。然后,您必须将核心设备注册为该队列的一部分。

创建边缘设备队列

创建边缘设备队列(控制台)

  1. 亚马逊 SageMaker 控制台中,选择 Edge Manager,然后选择 Edge 设备队列

  2. 设备队列页面上,选择创建设备队列

  3. De vice Fre este (),:

    • 设备队列名称中,输入设备队列的名称。

    • I AM,Amazon ResourAmazon IoT ce Name Name (ARN)。

    • 禁用 “创建 IAM 角色别名” 开关。

  4. 选择 Next(下一步)

  5. 在 “输出配置” 下,对于 S3 存储桶 UR I,输入要与设备队列关联的 S3 存储桶的 URI。

  6. 选择 Submit(提交)

注册你的 Greengrass 核心设备

将您的 Greengrass 核心设备注册为边缘设备(主机)

  1. 亚马逊 SageMaker 控制台中,选择 Edge Manager,然后选择 Edge 设备

  2. 在 “设备” 页面上,选择 “注册设备”。

  3. 在 “设备属性” 下的 “设备队列名称” 中,输入您创建的设备队列的名称,然后选择 “下一步”。

  4. 选择 Next(下一步)

  5. 在 “设备来源” 下的 “设备名称” 中Amazon IoT,输入 Greengrass 核心设备的设备名称。

  6. 选择 Submit(提交)

创建示例组件

为了帮助您开始使用 SageMaker Edge Manager 组件,Amazon提供了一 GitHub 个 Python 脚本,Amazon Web Services 云用于创建示例推理和模型组件,并将它们上传到。Devise Unester (),:

创建示例组件

  1. Amazon IoT Greengrass组件示例存储库下载 GitHub 到您的开发计算机上。

  2. /machine-learning/sagemaker-edge-manager

    cd download-directory/machine-learning/sagemaker-edge-manager
  3. Amazon Web Services 云。

    python3 create_components.py -r region -b DOC-EXAMPLE-BUCKET

    区域替换为创建 Greengrass 核心设备Amazon Web Services 区域的位置,并将 DOC-EXAMPLE-BUCKET1 替换为 S3 存储桶的名称以存储您的组件构件。

    注意

    默认情况下,该脚本会为图像分类和对象检测推理创建示例组件。要仅为特定类型的推断创建组件,请指定-i ImageClassification | ObjectDetection参数。

现在,已在您的中创建了用于 SageMaker Edge Manager 的示例推理和模型组件Amazon Web Services 账户。要在Amazon IoT Greengrass控制台中查看示例组件,请选择组件,然后在 “我的组件” 下搜索以下组件:

  • com.greengrass.SageMakerEdgeManager.ImageClassification

  • com.greengrass.SageMakerEdgeManager.ImageClassification.Model

  • com.greengrass.SageMakerEdgeManager.ObjectDetection

  • com.greengrass.SageMakerEdgeManager.ObjectDetection.Model

运行样本图像分类推断

要使用Amazon提供的示例组件和 SageMaker Edge Manager 代理运行图像分类推断,必须将这些组件部署到核心设备。部署这些组件会下载 NEO SageMaker 编译的预训练的 Resnet-50 模型,并在您的设备上安装 SageMaker Edge Manager 代理。E SageMaker dge Manager 代理加载模型并发布有关该gg/sageMakerEdgeManager/image-classification主题的推理结果。要查看这些推理结果,请使用Amazon IoT控制台中的Amazon IoT MQTT 客户端订阅此主题。

在此步骤中,您在Amazon IoT控制台中配置Amazon IoT MQTT 客户端,以查看示例推理组件发布的 MQTT 消息。默认情况下,该组件发布有关该gg/sageMakerEdgeManager/image-classification主题的推理结果。在将组件部署到 Greengrass 核心设备之前,请订阅本主题,以查看组件首次运行时的推理结果。

订阅默认通知主题

  1. Amazon IoT控制台导航菜单中,选择测试、MQTT 测试客户端

  2. 在 “订阅主题” 下的 “主题名称” 框中,输入gg/sageMakerEdgeManager/image-classification

  3. 选择 Subscribe

部署示例组件

在此步骤中,您将配置以下组件并将其部署到您的核心设备:

  • aws.greengrass.SageMakerEdgeManager

  • com.greengrass.SageMakerEdgeManager.ImageClassification

  • com.greengrass.SageMakerEdgeManager.ImageClassification.Model

  1. Amazon IoT Greengrass控制台导航菜单中,选择部署,然后为要修改的目标设备选择部署。

  2. 在部署页面上,选择 “修订”,然后选择 “修改部署”。

  3. 在 “指定目标” 页上,选择 “下一步”。

  4. Sel ect Co mment (),:

    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": "DOC-EXAMPLE-BUCKET" }

      device-fleet-name替换为您创建的边缘设备队列的名称,将 DOC-EXAMPLE-BUC KET 替换为与您的设备队列关联的 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\":\"DOC-EXAMPLE-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替换为您创建的边缘设备队列的名称。DOC-EXAMPLE-BUCKET2

    • 将每个组件的组件版本替换为最新的可用版本。

  2. ,:

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

。在下一步中,检查组件日志以验证部署是否成功完成并查看推理结果。

查看推理结果

部署组件后,您可以在 Greengrass 核心设备的组件日志和Amazon IoT控制台的Amazon IoT MQTT 客户端中查看推理结果。要订阅组件发布推理结果所依据的主题,请参阅

  • Amazon IoTMQTT 客户端 —要查看推理组件在默认通知主题上发布的结果,请完成以下步骤:

    1. Amazon IoT控制台导航菜单中,选择测试、MQTT 测试客户端

    2. 在 “订阅” 下,选择gg/sageMakerEdgeManager/image-classification

     

  • 组件日志 —要查看组件日志中的推理结果,请在 Greengrass 核心设备上运行以下命令。

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

如果您无法在组件日志或 MQTT 客户端中看到推理结果,则表明部署失败或未到达核心设备。如果您的核心设备未连接到互联网或没有运行该组件的正确权限,则可能会发生这种情况。在核心设备上运行以下命令以查看Amazon IoT Greengrass Core 软件日志文件。此文件包含来自 Greengrass 核心设备部署服务的日志。

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

有关更多信息,请参阅Troubleshooting machine learning inference