本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
手动下载并设置 Edge Manager 代理
根据您的操作系统、架构和 Amazon 区域下载 Edge Manager 代理。代理会定期更新,因此您可以选择根据发布日期和版本选择代理。获得代理后,创建JSON配置文件。指定设备 IoT 事物名称、队列名称、设备凭证和其他键值对。有关必须在配置文件中指定的密钥的完整列表,请参阅运行 Edge Manager 代理。您可以将代理作为可执行的二进制文件运行,也可以将其作为动态共享对象 (DSO) 进行链接。
代理的工作原理
代理在您的设备CPU上运行。代理在编译作业期间指定的目标设备的框架和硬件上运行推理。例如,如果您为 Jetson Nano 编译模型,则代理会在提供的深度学习运行时
对于受支持的操作系统,该代理以二进制格式发布。检查您的操作系统是否受支持并满足下表中的最低操作系统要求:
安装 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。
根据您的操作系统,使用以下命令安装构件:
您还必须下载根证书。在将模型工件加载到边缘设备 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
(布尔值):可选。这将设置调试日志。选择True
或False
。 -
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
的代理位于同一工作目录的配置文件。