手动下载并设置 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 二进制文件)和 ARMv8 64 位(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 Linux 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 格式)和 81f481f SHA-7 提交 ID。

注意

前面的命令假定您已经配置了 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 代理

您可以以可执行和可链接格式 (ELF) 可执行二进制文件的形式将 Ed SageMaker ge Manager 代理作为独立进程运行,也可以将其作为动态共享对象 (.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:通往亚马逊 Root CA 证书 (c AmazonRoot a1.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 凭证端点(标识符 .iot. 区域 .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:Amazon S3 存储桶的名称(不是 Amazon 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),并指定使用 -c 标志创建的代理 JSON 配置文件的路径。

./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 的代理位于同一工作目录的配置文件。