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

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

教程: SageMaker 边缘管理器入门

重要

SageMaker Edge Manager 将于 2024 年 4 月 26 日停产。有关继续将模型部署到边缘设备的更多信息,请参阅 Edg SageMaker e Manager 生命周期终止

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

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

要在现有 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 入门

  • 安装在核心设备上的 Pyth@@ on 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 来引用此存储桶。

    有关创建 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 中设置你的 Greengrass 核心设备 SageMaker

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

创建边缘设备队列

创建边缘设备队列(控制台)
  1. 亚马逊 SageMaker 控制台中,选择边缘管理器,然后选择边缘设备队列

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

  3. 在 “设备队列属性” 下,执行以下操作:

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

    • 对于 IAM 角色,请输入您在设置 Greengrass 核心设备时指定的Amazon IoT角色别名的亚马逊资源名称 (ARN)。

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

  4. 请选择 Next(下一步)

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

  6. 选择提交

注册你的 Greengrass 核心设备

将您的 Greengrass 核心设备注册为边缘设备(主机)
  1. 亚马逊 SageMaker 控制台中,选择边缘管理器,然后选择边缘设备

  2. 设备页面上,选择注册设备

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

  4. 请选择 Next(下一步)

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

  6. 选择提交

创建示例组件

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

创建示例组件
  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 代理运行图像分类推理,必须将这些组件部署到核心设备。部署这些组件会下载 SageMaker Neo 编译的预训练的 Resnet-50 模型,并在您的设备上安装 SageMaker Edge Manager 代理。边 SageMaker 缘管理器代理加载模型并发布有关该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. 选择订阅

部署示例组件

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

  • aws.greengrass.SageMakerEdgeManager

  • com.greengrass.SageMakerEdgeManager.ImageClassification

  • com.greengrass.SageMakerEdgeManager.ImageClassification.Model

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

      device-fleet-name替换为您创建的边缘设备队列的名称,将 DOC-EXAMPLE-B UCKET 替换为与您的设备队列关联的 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 替换为与您的设备队列关联的 S3 存储桶的名称。

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

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

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

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

查看推理结果

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

  • 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核心软件日志文件。此文件包含来自 Greengrass 核心设备部署服务的日志。

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

有关更多信息,请参阅 对机器学习推理进行故障排除