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

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

手动下载和设置边缘管理器代理

根据您的操作系统、体系结构和Amazon区域。代理会定期更新,因此您可以根据发布日期和版本选择代理。拥有代理后,创建 JSON 配置文件。指定设备 IoT 事物名称、队列名称、设备凭据和其他键值对。请参阅运行 SageMaker 边缘管理器代理以获取完整的密钥列表,您必须在配置文件中指定。您可以将代理作为可执行二进制文件运行,也可以将其作为动态共享对象运行。

代理的工作方式

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

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

Linux

版本:Ubuntu 18.04

支持的二进制格式:x86-64 位(ELF 二进制文件)和 ARMV8 64 位(ELF 二进制文件)

Windows

版本:Windows 10 版本 1909

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

安装边缘管理器代理

要使用边缘管理器代理,首先必须获取发布对象和根证书。发布项目存储在 Amazon S3 存储桶中,位于us-west-2区域。要下载对象,请指定您的操作系统 (<OS>)和VERSION.

根据您的操作系统,将<OS>使用以下操作之一:

Windows 32 位 Windows 64 位 Linux x86-64 Linux ARMv8
Windows x86 Windows x64 Linux64 Linux-Armv8

这些区域有:VERSION分为三个组件:<MAJOR_VERSION>.<YYYY-MM-DD>-<SHA-7>,其中:

  • MAJOR_VERSION:发行版本。发行版本当前设置为1.

  • <YYYY-MM-DD>:对象释放的时间戳。

  • SHA-7:构建发行版所依据的存储库提交 ID。

您必须提供MAJOR_VERSION和时间戳<YYYY-MM-DD>格式的日期和时间。我们建议您使用最新的工件发布时间戳。使用以下命令获取最新的时间戳。

在命令行中运行以下命令以获取最新的时间戳。Replace<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> 格式)和81f481fSHA-7 提交 ID。

注意

前面的命令假定您已配置Amazon Command Line Interface. 有关如何配置设置的详细信息,请参阅Amazon CLI用于与Amazon,请参阅配置AmazonCLI.

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

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,然后将它们加载到边缘设备上。

Replace<OS>从支持的操作系统列表中对应您的平台,并将<REGION>与您的Amazon区域。

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

运行 SageMaker 边缘管理器代理

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

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

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

  • sagemaker_edge_core_device_name:设备名称。此设备名称需要与 SageMaker 边缘管理器控制台中的设备队列一起注册。

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

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

  • sagemaker_edge_core_root_certs_path:根证书的绝对文件夹路径。这用于验证设备与相关Amazonaccount.

  • sagemaker_edge_provider_aws_ca_cert_file:亚马逊根 CA 证书(卓越亚马逊证书 1.pem)的绝对路径。这用于验证设备与相关Amazonaccount.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。区域.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 的绝对路径以启用崩溃计数器度量。默认的 libsystemd 路径可以通过运行"whereis libsystemd"在设备终端中。

  • sagemaker_edge_core_capture_data_destination:上传捕获数据的目标。选择 CloudDisk。默认设置为"Disk". 设置为"Disk"将输入/输出张量和辅助数据写入首选位置的本地文件系统。当向中写入时"Cloud"使用 Amazon S3 存储桶名称,请使用sagemaker_edge_provider_s3_bucket_name配置。

  • sagemaker_edge_core_capture_data_disk_path:设置本地文件系统中的绝对路径,当"Disk"是目标。此字段在"Cloud"被指定为目标。

  • sagemaker_edge_core_folder_prefix:Amazon S3 中的父前缀,当您指定"Cloud"作为捕获数据目标 (sagemaker_edge_core_capture_data_disk_path). 捕获的数据存储在sagemaker_edge_core_capture_data_disk_pathif"Disk"设置为数据目标。

  • 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 }

发布工件中包含一个二进制可执行文件,名为sagemaker_edge_agent_binary中的/bin目录中返回。要运行二进制文件,请使用-a标志在您选择的目录中创建套接字文件描述符 (.sock),并指定您使用-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

在此示例中,将使用名为sagemaker_edge_agent_example.sock创建在/tmp目录,并指向与代理位于同一工作目录中的配置文件(名为sagemaker_edge_config.json.