手动下载并设置 Edge Manager 代理 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

手动下载并设置 Edge Manager 代理

根据您的操作系统、架构和 Amazon 区域下载 Edge Manager 代理。代理会定期更新,因此您可以选择根据发布日期和版本选择代理。获得代理后,创建JSON配置文件。指定设备 IoT 事物名称、队列名称、设备凭证和其他键值对。有关必须在配置文件中指定的密钥的完整列表,请参阅运行 Edge Manager 代理。您可以将代理作为可执行的二进制文件运行,也可以将其作为动态共享对象 (DSO) 进行链接。

代理的工作原理

代理在您的设备CPU上运行。代理在编译作业期间指定的目标设备的框架和硬件上运行推理。例如,如果您为 Jetson Nano 编译模型,则代理会在提供的深度学习运行时 (DLR) GPU 中支持。

对于受支持的操作系统,该代理以二进制格式发布。检查您的操作系统是否受支持并满足下表中的最低操作系统要求:

Linux

版本:Ubuntu 18.04

支持的二进制格式:x86-64 位(ELF二进制)和 6 ARMv8 4 位(二进制)ELF

Windows

版本:Windows 10 版本 1909

支持的二进制格式:x86-32 位 (DLL) 和 x86-64 位 () DLL

安装 Edge Manager 代理

要使用 Edge Manager 代理,您必须首先获取发布构件和根证书。发布构件存储在 us-west-2 区域的 Amazon S3 存储桶中。要下载构件,请指定您的操作系统 (<OS>) 和 <VERSION>

根据您的操作系统,将 <OS> 替换以下任一内容:

32 位 Windows 64 位 Windows Linux x86-64 Linu ARMv8
windows-x86 windows-x64 linux-x64 linux-armv8

VERSION 分为三个组成部分:<MAJOR_VERSION>.<YYYY-MM-DD>-<SHA-7>,其中:

  • <MAJOR_VERSION>:发布版本。发布版本当前设置为 1

  • <YYYY-MM-DD>:构件发布的时间戳。

  • <SHA-7>:构建发布的存储库提交 ID。

您必须以 YYYY-MM-DD 格式提供 <MAJOR_VERSION> 和时间戳。我们建议您使用最新的构件发布时间戳。

在命令行中运行以下命令以获取最新的时间戳。用您的操作系统替换 <OS>

aws s3 ls s3://sagemaker-edge-release-store-us-west-2-<OS>/Releases/ | sort -r

例如,如果您有 Windows 32 位操作系统,请运行:

aws s3 ls s3://sagemaker-edge-release-store-us-west-2-windows-x86/Releases/ | sort -r

这将返回:

2020-12-01 23:33:36 0 PRE 1.20201218.81f481f/ PRE 1.20201207.02d0e97/

此示例的返回输出显示了两个发布构件。第一个发布构件文件指出,发行版本的主要发行版本为1,时间戳为20201218( YYYY-MM-DD格式),提交 ID 为 81f481f SHA -7。

注意

前面的命令假定您已经配置了 Amazon Command Line Interface。有关如何配置用于交互的 Amazon CLI 设置的更多信息 Amazon,请参阅配置 Amazon CLI

根据您的操作系统,使用以下命令安装构件:

Windows 32-bit
aws s3 cp s3://sagemaker-edge-release-store-us-west-2-windows-x86/Releases/<VERSION>/<VERSION>.zip . aws s3 cp s3://sagemaker-edge-release-store-us-west-2-windows-x86/Releases/<VERSION>/sha256_hex.shasum .
Windows 64-bit
aws s3 cp s3://sagemaker-edge-release-store-us-west-2-windows-x64/Releases/<VERSION>/<VERSION>.zip . aws s3 cp s3://sagemaker-edge-release-store-us-west-2-windows-x64/Releases/<VERSION>/sha256_hex.shasum .
Linux x86-64
aws s3 cp s3://sagemaker-edge-release-store-us-west-2-linux-x64/Releases/<VERSION>/<VERSION>.tgz . aws s3 cp s3://sagemaker-edge-release-store-us-west-2-linux-x64/Releases/<VERSION>/sha256_hex.shasum .
Linux ARMv8
aws s3 cp s3://sagemaker-edge-release-store-us-west-2-linux-armv8/Releases/<VERSION>/<VERSION>.tgz . aws s3 cp s3://sagemaker-edge-release-store-us-west-2-linux-armv8/Releases/<VERSION>/sha256_hex.shasum .

您还必须下载根证书。在将模型工件加载到边缘设备 Amazon 之前,此证书会对其进行验证。

从支持的操作系统列表中替换与您的平台对应的 <OS>,然后将 <REGION> 替换为 Amazon 所在的区域。

aws s3 cp s3://sagemaker-edge-release-store-us-west-2-<OS>/Certificates/<REGION>/<REGION>.pem .

运行 Edge Manager 代理

您可以将 SageMaker Edge Manager 代理作为独立进程运行,其形式为可执行文件和可链接格式 (ELF) 可执行二进制文件,也可以将其作为动态共享对象 (.dll) 进行链接。Linux 支持将其作为独立的可执行二进制文件运行,这也是首选模式。Windows 支持将其作为共享对象 (.dll) 运行。

在 Linux 上,我们建议您通过作为初始化 (init) 系统一部分的服务来运行二进制文件。如果您希望直接运行二进制文件,可以在终端中执行此操作,如以下示例所示。如果您使用的是现代操作系统,则无需在运行代理之前进行其他安装,因为所有要求都静态内置在可执行文件中。这使您可以灵活地在终端上、作为服务或在容器内运行代理。

要运行代理,请先创建一个JSON配置文件。指定以下键/值对:

  • sagemaker_edge_core_device_name:设备名称。此设备名称需要与设备队列一起在 SageMaker Edge Manager 控制台中注册。

  • sagemaker_edge_core_device_fleet_name:设备所属队列的名称。

  • sagemaker_edge_core_region:与设备、队列和 Amazon S3 存储桶关联的 Amazon 区域。这与注册设备和创建 Amazon S3 存储桶的区域相对应(它们应该相同)。模型本身可以在不同的区域使用 SageMaker Neo 进行编译,此配置与模型编译区域无关。

  • sagemaker_edge_core_root_certs_path:根证书的绝对文件夹路径。这用于使用相关 Amazon 账户验证设备。

  • sagemaker_edge_provider_aws_ca_cert_file:Amazon 根 CA 证书 (AmazonRootCA1.pem) 的绝对路径。这用于使用相关 Amazon 账户验证设备。 AmazonCA是所有者的证书 Amazon。

  • sagemaker_edge_provider_aws_cert_file: Amazon IoT 签名根证书的绝对路径 (*.pem.crt)。

  • sagemaker_edge_provider_aws_cert_pk_file: Amazon IoT 私钥的绝对路径。 (*.pem.key)。

  • sagemaker_edge_provider_aws_iot_cred_endpoint: Amazon IoT 凭证端点 (identifier.iot。region.amazonaws.com)。此端点用于凭证验证。有关更多信息,请参阅将设备连接到 Amazon IoT

  • sagemaker_edge_provider_provider:这表示正在使用的提供程序接口的实施。提供程序接口与终端网络服务进行通信,以执行上传、检测信号和注册验证。默认情况下,该选项设置为 "Aws"。我们允许自定义实施提供程序接口。如果没有提供程序,可以将其设置为 None,也可以设置为 Custom 以使用提供的相关共享对象路径进行自定义实施。

  • sagemaker_edge_provider_provider_path:提供提供程序实施共享对象的绝对路径(.so 或 .dll 文件)。"Aws" 提供程序 .dll 或 .so 文件随代理发布一起提供。此字段是必填字段。

  • sagemaker_edge_provider_s3_bucket_name: 您的亚马逊 S3 存储桶(不是亚马逊 S3 存储桶URI)的名称。存储桶的名称中必须包含 sagemaker 字符串。

  • sagemaker_edge_log_verbose(布尔值):可选。这将设置调试日志。选择 TrueFalse

  • sagemaker_edge_telemetry_libsystemd_path:仅适用于 Linux,systemd 实施代理崩溃计数器指标。设置 libsystemd 的绝对路径以启用崩溃计数器指标。可以通过在设备终端中运行 whereis libsystemd 来找到默认的 libsystemd 路径。

  • sagemaker_edge_core_capture_data_destination:上传捕获数据的目的地。选择 "Cloud""Disk"。默认被设置为 "Disk"。将其设置为 "Disk",可将输入和输出张量以及辅助数据写入您首选位置的本地文件系统。如果写入 "Cloud",则会使用 sagemaker_edge_provider_s3_bucket_name 配置中提供的 Amazon S3 存储桶名称。

  • sagemaker_edge_core_capture_data_disk_path:在本地文件系统中设置绝对路径,如果 "Disk" 是目的地,则会将捕获数据文件写入该路径。如果将 "Cloud" 指定为目的地,则不使用此字段。

  • sagemaker_edge_core_folder_prefix:当您将 "Cloud" 指定为捕获数据目的地 (sagemaker_edge_core_capture_data_disk_path) 时,Amazon S3 中用于存储已捕获数据的路径的父前缀。如果将 "Disk" 设置为数据目的地,则会将捕获的数据存储在 sagemaker_edge_core_capture_data_disk_path 下的子文件夹中。

  • sagemaker_edge_core_capture_data_buffer_size(整数值):捕获数据循环缓冲区大小。它表示缓冲区中存储的最大请求数。

  • sagemaker_edge_core_capture_data_batch_size(整数值):捕获数据批处理大小。它表示从缓冲区处理的一批请求的大小。此值必须小于 sagemaker_edge_core_capture_data_buffer_size。对于批量大小,建议最多使用缓冲区的一半大小。

  • sagemaker_edge_core_capture_data_push_period_seconds(整数值):以秒为单位的捕获数据推送周期。当缓冲区中有批量大小请求或者该时间段结束时(以先到者为准),将会处理缓冲区中的一批请求。此配置设置了这个时间段。

  • sagemaker_edge_core_capture_data_base64_embed_limit:上传捕获数据的限制(以字节为单位)。整数值。

您的配置文件应类似于以下示例(已指定您的特定值)。此示例使用默认 Amazon 提供程序 ("Aws"),但未指定定期上传。

{ "sagemaker_edge_core_device_name": "device-name", "sagemaker_edge_core_device_fleet_name": "fleet-name", "sagemaker_edge_core_region": "region", "sagemaker_edge_core_root_certs_path": "<Absolute path to root certificates>", "sagemaker_edge_provider_provider": "Aws", "sagemaker_edge_provider_provider_path" : "/path/to/libprovider_aws.so", "sagemaker_edge_provider_aws_ca_cert_file": "<Absolute path to Amazon Root CA certificate>/AmazonRootCA1.pem", "sagemaker_edge_provider_aws_cert_file": "<Absolute path to Amazon IoT signing root certificate>/device.pem.crt", "sagemaker_edge_provider_aws_cert_pk_file": "<Absolute path to Amazon IoT private key.>/private.pem.key", "sagemaker_edge_provider_aws_iot_cred_endpoint": "https://<Amazon IoT Endpoint Address>", "sagemaker_edge_core_capture_data_destination": "Cloud", "sagemaker_edge_provider_s3_bucket_name": "sagemaker-bucket-name", "sagemaker_edge_core_folder_prefix": "Amazon S3 folder prefix", "sagemaker_edge_core_capture_data_buffer_size": 30, "sagemaker_edge_core_capture_data_batch_size": 10, "sagemaker_edge_core_capture_data_push_period_seconds": 4000, "sagemaker_edge_core_capture_data_base64_embed_limit": 2, "sagemaker_edge_log_verbose": false }

发布构件包含位于 /bin 目录中的名为 sagemaker_edge_agent_binary 的二进制可执行文件。要运行二进制文件,请使用该-a标志在您选择的目录中创建套接字文件描述符 (.sock),并指定使用该标志创建的代理JSON配置文件的路径。-c

./sagemaker_edge_agent_binary -a <ADDRESS_TO_SOCKET> -c <PATH_TO_CONFIG_FILE>

以下示例显示了指定目录和文件路径的代码片段:

./sagemaker_edge_agent_binary -a /tmp/sagemaker_edge_agent_example.sock -c sagemaker_edge_config.json

在此示例中,在 /tmp 目录中创建了一个名为 sagemaker_edge_agent_example.sock 的套接字文件描述符,该描述符指向与名为 sagemaker_edge_config.json 的代理位于同一工作目录的配置文件。