本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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。
-
Python
3.6 或更高版本,包含 pip
,安装在核心设备上的 Python 版本。 -
OpenGL API GLX 运行时 (
libgl1-mesa-glx
) 安装在核心设备上。 -
网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的Amazon Identity and Access Management(IAM) 具有管理员权限的用户。
-
支持互联网的 Windows、Mac 或类 Unix 的开发计算机,可满足以下要求:
-
Python
3.6 或更高版本。 -
Amazon CLI并使用您的 IAM 管理员用户证书进行配置。有关更多信息,请参阅 。安装Amazon CLI和配置Amazon CLI.
-
-
以下 S3 存储桶在同一Amazon Web Services 账户和Amazon Web Services 区域作为您的 Greengrass 核心设备。 :
-
用于存储示例推理和模型组件中包含的工件的 S3 存储桶。本教程使用
文档示例存储桶 1
来引用此存储桶。 -
您与 SageMaker 边缘设备队列关联的 S3 存储桶。SageMaker Edge Manager 需要一个 S3 存储桶来创建边缘设备队列,并在设备上存储运行推理的示例数据。本教程使用
文档示例存储桶 2
来引用此存储桶。
有关创建 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" } ] }
-
这些区域有:卓越亚马逊电子邮件设备政策
IAM 托管策略。 -
这些区域有:AmazonSageMakerFullAccess
IAM 托管策略。 -
这些区域有:
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 核心设备。然后,您必须将核心设备注册为该队列的一部分。
创建边缘设备队列
创建边缘设备队列(控制台)
-
在Amazon SageMaker 控制台
中,选择Edge 管理器,然后选择Edge 设备队组. -
在存储库的设备队组页面上,选择创建设备队组.
-
UDER设备队列属性中,执行以下操作:
-
适用于设备队组名称中,输入设备队列的名称。
-
适用于IAM 角色,输入 Amazon 资源名称 (ARN)Amazon IoT角色别名,您在设置 Greengrass 核心设备时指定。
-
禁用创建 IAM 角色别名切换。
-
-
选择 Next (下一步)。
-
UDER输出配置, 用于S3 存储桶 URI中,输入要与设备队列关联的 S3 存储桶的 URI。
-
选择 Submit。
注册您的 Greengrass 核心设备
将您的 Greengrass 核心设备注册为边缘设备(控制台)
-
在Amazon SageMaker 控制台
中,选择Edge 管理器,然后选择Edge 设备. -
在存储库的Devices页面上,选择注册设备.
-
UDER设备属性, 用于设备队组名称中,输入您创建的设备队列的名称,然后选择下一步.
-
选择 Next (下一步)。
-
UDER设备源, 用于设备名称,输入Amazon IoT您的 Greengrass 核心设备的事物名称。
-
选择 Submit。
创建示例组件
为了帮助您开始使用 SageMaker 边缘管理器组件,请执行以下操作:Amazon在 GitHub 上提供了一个 Python 脚本,用于创建示例推理和模型组件,并将它们上传到Amazon Web Services 云为您。在开发计算机上完成以下步骤。
创建示例组件
-
下载Amazon IoT Greengrass组件示例
存储库添 GitHub 发计算机上。 -
导航到已下载的
/machine-learning/sagemaker-edge-manager
folder。cd
download-directory
/machine-learning/sagemaker-edge-manager -
运行以下命令来创建示例组件并将上传到Amazon Web Services 云.
python3 create_components.py -r
region
-bDOC-EXAMPLE-BUCKET
Replace
区域
与Amazon Web Services 区域创建了 Greengrass 核心设备,并将文档示例存储桶 1
替换为 S3 存储组件构件的名称。注意 默认情况下,脚本会为图像分类和对象检测推理创建示例组件。要仅为特定类型的推理创建组件,请指定
-i
参数。ImageClassification | ObjectDetection
与 SageMaker 边缘管理器一起使用的示例推理和模型组件现在可在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 边缘管理器代理,则必须将这些组件部署到核心设备。部署这些组件会下载 SageMaker Neo 编译的预先训练的 Resnet-50 型号,并在您的设备上安装 SageMaker 边缘管理器代理。SageMaker 边缘管理器代理加载模型并将推断结果发布到gg/sageMakerEdgeManager/image-classification
主题。要查看这些推断结果,请使用Amazon IoTMQTT 客户端Amazon IoT控制台订阅此主题。
订阅通知主题
在此步骤中,您将配置Amazon IoTMQTT 客户端Amazon IoT控制台来监视示例推理组件发布的 MQTT 消息。默认情况下,组件将推断结果发布到gg/sageMakerEdgeManager/image-classification
主题。在将组件部署到 Greengrass 核心设备之前,请先订阅本主题,以查看组件首次运行时的推断结果。
订阅默认通知主题
-
在Amazon IoT控制台
导航菜单中,选择测试,MQTT 测试客户端. -
UDER订阅主题,在主题名称框中,输入
gg/sageMakerEdgeManager/image-classification
. -
选择 Subscribe。
部署示例组件
在此步骤中,您将配置以下组件并将其部署到您的核心设备:
-
aws.greengrass.SageMakerEdgeManager
-
com.greengrass.SageMakerEdgeManager.ImageClassification
-
com.greengrass.SageMakerEdgeManager.ImageClassification.Model
-
在Amazon IoT Greengrass控制台
导航菜单中,选择部署,然后选择要修改的目标设备的部署。 -
在部署页面上,选择修订,然后选择修订部署.
-
在存储库的指定目标页面上,选择下一步.
-
在存储库的选择组件页面上,执行以下操作:
-
UDERMy 组件,选择以下组件:
-
com.greengrass.SageMakerEdgeManager.ImageClassification
-
com.greengrass.SageMakerEdgeManager.ImageClassification.Model
-
-
UDER公有组件,关闭仅显示选定的组件切换,然后选择
aws.greengrass.SageMakerEdgeManager
组件。 -
选择 Next (下一步)。
-
-
在存储库的配置组件页面上,选择
aws.greengrass.SageMakerEdgeManager
组件,然后执行以下操作。-
选择配置组件.
-
UDER配置更新, 在要合并的配置,输入以下配置。
{ "DeviceFleetName": "
device-fleet-name
", "BucketName": "
" }DOC-EXAMPLE-BUCKET
Replace
设备队组名称
替换为您创建的边缘设备队列的名称,然后将替换为
替换为与您的设备队列关联的 S3 存储桶的名称。文档示例存储桶
-
选择确认,然后选择下一步.
-
-
在存储库的配置高级设置页面上,保留默认配置设置,然后选择下一步.
-
在存储库的审核页面上,选择部署
-
在开发计算机上,创建一个
deployment.json
文件来定义 SageMaker 边缘管理器组件的部署配置。此文件应类似于以下示例。{ "targetArn":"
targetArn
", "components": { "aws.greengrass.SageMakerEdgeManager": { "componentVersion":1.0.x
, "configurationUpdate": { "merge": { "DeviceFleetName": "device-fleet-name
", "BucketName": "
" } } }, "com.greengrass.SageMakerEdgeManager.ImageClassification": { "componentVersion":DOC-EXAMPLE-BUCKET2
1.0.x
, "configurationUpdate": { } }, "com.greengrass.SageMakerEdgeManager.ImageClassification.Model": { "componentVersion":1.0.x
, "configurationUpdate": { } }, } }-
在
targetArn
字段,替换
与要进行部署的事物或事物组的 Amazon 资源名称 (ARN),采用以下格式):targetArn
-
事物:
arn:aws:iot:
region
:account-id
:thing/thingName
-
事物组:
arn:aws:iot:
region
:account-id
:thinggroup/thingGroupName
-
-
在
merge
字段,替换设备队组名称
替换为您创建的边缘设备队列的名称。然后,将
替换为与您的设备队列关联的 S3 存储桶的名称。文档示例存储桶 2
-
将每个组件的组件版本替换为最新的可用版本。
-
-
运行以下命令以在设备上部署组件:
$ aws greengrassv2 create-deployment \ --cli-input-json file://
path/to/
deployment.json
部署可能需要几分钟的时间才能完成。在下一步中,检查组件日志以验证部署是否成功完成并查看推断结果。
查看推断结果
部署组件后,您可以在 Greengrass 核心设备上的组件日志中查看推断结果,并在Amazon IoTMQTT 客户端Amazon IoT控制台。要订阅组件发布推理结果的主题,请参阅订阅通知主题.
-
Amazon IoTMQTT 客户端-要查看推理组件在默认通知主题,请完成以下步骤:
-
在Amazon IoT控制台
导航菜单中,选择测试,MQTT 测试客户端. -
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
有关更多信息,请参阅机器学习推理疑难解答。