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

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

SageMaker 边缘管理器开始使用

要在现有的 Greengrass 核心设备上设置和使用 SageMaker 边缘管理器代理,Amazon提供了可用于创建以下示例推理和模型组件的示例代码。

  • 图像分类

    • com.greengrass.SageMakerEdgeManager.ImageClassification

    • com.greengrass.SageMakerEdgeManager.ImageClassification.Model

  • 对象检测

    • com.greengrass.SageMakerEdgeManager.ObjectDetection

    • com.greengrass.SageMakerEdgeManager.ObjectDetection.Model

本教程介绍如何部署示例组件和 SageMaker 边缘管理器代理。

Prerequisites

要完成本教程,您必须满足以下先决条件:

  • 在基于 Debian 的 Linux 平台(x86_64 或 Armv8)上运行的 Greengrass 属核心设备。如果没有,请参阅开始使用 Amazon IoT Greengrass V2

  • Python3.6 或更高版本,包含pip,安装在核心设备上的 Python 版本。

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

  • 网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的Amazon Identity and Access Management(IAM) 具有管理员权限的用户。

  • 支持互联网的 Windows、Mac 或类 Unix 的开发计算机,可满足以下要求:

  • 以下 S3 存储桶在同一Amazon Web Services 账户和Amazon Web Services 区域作为您的 Greengrass 核心设备。 :

    • 用于存储示例推理和模型组件中包含的工件的 S3 存储桶。本教程使用文档示例存储桶 1来引用此存储桶。

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

    有关创建 S3 存储桶的更多信息,请参阅。Amazon S3 入门.

  • 这些区域有:Greengrass 设备角色配置了以下内容:

    • 允许使用的信任关系credentials.iot.amazonaws.comsagemaker.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" } ] }
    • 这些区域有:卓越亚马逊电子邮件设备政策IAM 托管策略。

    • 这些区域有:AmazonSageMakerFullAccessIAM 托管策略。

    • 这些区域有:s3:GetObject操作,如以下 IAM 策略示例所示。

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

在 SageMaker 边缘管理器中设置您的 Greengrass 核心设备

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

创建边缘设备队列

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

  1. Amazon SageMaker 控制台中,选择Edge 管理器,然后选择Edge 设备队组.

  2. 在存储库的设备队组页面上,选择创建设备队组.

  3. UDER设备队列属性中,执行以下操作:

    • 适用于设备队组名称中,输入设备队列的名称。

    • 适用于IAM 角色,输入 Amazon 资源名称 (ARN)Amazon IoT角色别名,您在设置 Greengrass 核心设备时指定。

    • 禁用创建 IAM 角色别名切换。

  4. 选择 Next (下一步)

  5. UDER输出配置, 用于S3 存储桶 URI中,输入要与设备队列关联的 S3 存储桶的 URI。

  6. 选择 Submit

注册您的 Greengrass 核心设备

将您的 Greengrass 核心设备注册为边缘设备(控制台)

  1. Amazon SageMaker 控制台中,选择Edge 管理器,然后选择Edge 设备.

  2. 在存储库的Devices页面上,选择注册设备.

  3. UDER设备属性, 用于设备队组名称中,输入您创建的设备队列的名称,然后选择下一步.

  4. 选择 Next (下一步)

  5. UDER设备源, 用于设备名称,输入Amazon IoT您的 Greengrass 核心设备的事物名称。

  6. 选择 Submit

创建示例组件

为了帮助您开始使用 SageMaker 边缘管理器组件,请执行以下操作:Amazon在 GitHub 上提供了一个 Python 脚本,用于创建示例推理和模型组件,并将它们上传到Amazon Web Services 云为您。在开发计算机上完成以下步骤。

创建示例组件

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

  2. 导航到已下载的/machine-learning/sagemaker-edge-managerfolder。

    cd download-directory/machine-learning/sagemaker-edge-manager
  3. 运行以下命令来创建示例组件并将上传到Amazon Web Services 云.

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

    Replace区域与Amazon Web Services 区域创建了 Greengrass 核心设备,并将文档示例存储桶 1替换为 S3 存储组件构件的名称。

    注意

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

与 SageMaker 边缘管理器一起使用的示例推理和模型组件现在可在Amazon Web Services 账户. 要查看Amazon IoT Greengrass控制台中,选择组件,然后在My 组件,搜索以下组件:

  • com.greengrass.SageMakerEdgeManager.ImageClassification

  • com.greengrass.SageMakerEdgeManager.ImageClassification.Model

  • com.greengrass.SageMakerEdgeManager.ObjectDetection

  • com.greengrass.SageMakerEdgeManager.ObjectDetection.Model

运行样本图像分类推理

要运行影像分类推理,使用Amazon-提供的示例组件和 SageMaker 边缘管理器代理,则必须将这些组件部署到核心设备。部署这些组件会下载 SageMaker Neo 编译的预先训练的 Resnet-50 型号,并在您的设备上安装 SageMaker 边缘管理器代理。SageMaker 边缘管理器代理加载模型并将推断结果发布到gg/sageMakerEdgeManager/image-classification主题。要查看这些推断结果,请使用Amazon IoTMQTT 客户端Amazon IoT控制台订阅此主题。

订阅通知主题

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

订阅默认通知主题

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

  2. UDER订阅主题,在主题名称框中,输入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. 在存储库的选择组件页面上,执行以下操作:

    1. UDERMy 组件,选择以下组件:

      • com.greengrass.SageMakerEdgeManager.ImageClassification

      • com.greengrass.SageMakerEdgeManager.ImageClassification.Model

    2. UDER公有组件,关闭仅显示选定的组件切换,然后选择aws.greengrass.SageMakerEdgeManager组件。

    3. 选择 Next (下一步)

  5. 在存储库的配置组件页面上,选择aws.greengrass.SageMakerEdgeManager组件,然后执行以下操作。

    1. 选择配置组件.

    2. UDER配置更新, 在要合并的配置,输入以下配置。

      { "DeviceFleetName": "device-fleet-name", "BucketName": "DOC-EXAMPLE-BUCKET" }

      Replace设备队组名称替换为您创建的边缘设备队列的名称,然后将替换为文档示例存储桶替换为与您的设备队列关联的 S3 存储桶的名称。

    3. 选择确认,然后选择下一步.

  6. 在存储库的配置高级设置页面上,保留默认配置设置,然后选择下一步.

  7. 在存储库的审核页面上,选择部署

  1. 在开发计算机上,创建一个deployment.json文件来定义 SageMaker 边缘管理器组件的部署配置。此文件应类似于以下示例。

    { "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字段,替换设备队组名称替换为您创建的边缘设备队列的名称。然后,将文档示例存储桶 2替换为与您的设备队列关联的 S3 存储桶的名称。

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

  2. 运行以下命令以在设备上部署组件:

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

部署可能需要几分钟的时间才能完成。在下一步中,检查组件日志以验证部署是否成功完成并查看推断结果。

查看推断结果

部署组件后,您可以在 Greengrass 核心设备上的组件日志中查看推断结果,并在Amazon IoTMQTT 客户端Amazon IoT控制台。要订阅组件发布推理结果的主题,请参阅订阅通知主题.

  • Amazon IoTMQTT 客户端-要查看推理组件在默认通知主题,请完成以下步骤:

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

    2. UDER订阅中,选择gg/sageMakerEdgeManager/image-classification.

     

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

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

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

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

有关更多信息,请参阅机器学习推理疑难解答