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 Edge 管理器代理。

Prerequisites

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

  • Greengrass 的核心设备。如果没有,请参阅开始使用 Amazon IoT Greengrass V2

  • 一个Amazon Identity and Access Management(IAM) 具有管理员权限的用户。

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

    • 安装了 Python 3.8 或更高版本。

    • Amazon CLI使用您的 IAM 管理员用户证书进行安装和配置

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

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

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

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

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

    • 这些区域有:Greengrass 设备角色使用AmazonSageMakerEdgeDeviceFleetPolicyAmazonSageMakerFullAccess策略。

    • 这些区域有:卓越亚马逊电子邮件设备政策AmazonSageMakerFullAccessIAM 托管策略。

    • 这些区域有:s3:GetObject操作(包含您的组件对象),如以下 IAM 策略示例所示,所需的操作。

      { "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET1/*" ], "Effect": "Allow" } ] }
    • 允许使用的信任关系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" } ] }

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

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

创建边缘设备队列

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

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

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

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

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

    • 适用于IAM 角色中,输入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

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