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

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

手动下载并设置 Edge Manager 代理

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

代理程序的工作方式

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

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

Linux

版本:Ubuntu 18.04

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

Windows

版本:Windows 10 版本 1909

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

安装边缘管理器代理

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

根据你的操作系统,替换<OS>具有以下操作之一:

32 位 Windows Windows 64 位 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。

您必须提供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>式)和 a81f481fSHA-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 Edge Manager Agent

您可以运行 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与设备、队列和 Amazon S3 存储桶关联的区域。这对应于注册设备的区域和 Amazon S3 存储桶的创建地区(预计它们将是相同的)。模型本身可以用来编译 SageMaker Neo 在另一个区域,这种配置与模型编译区域无关。

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

  • sagemaker_edge_provider_aws_ca_cert_file:获取亚马逊根 CA 证书(AmazonrootCA1.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凭据终端节点 (标识符.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_path如果"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.