运行代理 - 亚马逊 SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

运行代理

在本节中,您将使用 gRPC 以二进制文件形式运行代理,并检查您的设备和队列是否正常运行并正在收集样本数据。

  1. 启动代理。

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

    此示例使用 gRPC 运行代理。gRPC 是一个开源的高性能远程过程调用 (RPC) 框架,可以在任何环境中运行。有关 gRPC 的更多信息,请参阅 gRPC 文档

    要使用 gRPC,请执行以下步骤:

    1. 在.proto 文件中定义服务。

    2. 使用协议缓冲区编译器生成服务器和客户端代码。

    3. 使用 Python(或 gRPC 支持的其他语言)gRPC API 为您的服务编写服务器。

    4. 使用 Python(或 gRPC 支持的其他语言)gRPC API 为您的服务编写客户端。

    您下载的发布项目包含一个 gRPC 应用程序,可供您运行代理。该示例位于您的发布工件的/bin目录中。sagemaker_edge_agent_binary二进制可执行文件位于此目录中。

    要使用此示例运行代理,请提供您的套接字文件 (.sock) 和 JSON .config 文件的路径:

    ./bin/sagemaker_edge_agent_binary -a /tmp/sagemaker_edge_agent_example.sock -c sagemaker_edge_config.json
  2. 检查您的设备。

    检查您的设备是否已连接并采样数据。通过手动或自动进行定期检查,您可以检查您的设备或机群是否正常运行。

    提供设备所属队组的名称和唯一设备标识符。在本地计算机上运行以下命令:

    sagemaker_client.describe_device( DeviceName=device_name, DeviceFleetName=device_fleet_name )

    对于给定模型,您可以看到名称、模型版本、最新采样时间以及上次推断的时间。

    { "DeviceName": "sample-device", "DeviceFleetName": "demo-device-fleet", "IoTThingName": "sample-thing-name-1", "RegistrationTime": 1600977370, "LatestHeartbeat": 1600977370, "Models":[ { "ModelName": "mobilenet_v2.tar.gz", "ModelVersion": "1.1", "LatestSampleTime": 1600977370, "LatestInference": 1600977370 } ] }

    提供的时间戳LastetHeartbeat表示从设备接收到的最后一个信号。 LatestSampleTime并分别LatestInference描述上次数据样本和推断的时间戳。

  3. 检查你的舰队。

    检查您的舰队是否正在使用GetDeviceFleetReport。提供设备所属的队列的名称。

    sagemaer_client.get_device_fleet_report( DeviceFleetName=device_fleet_name )

    对于给定模型,您可以查看名称、模型版本、最新采样时间和上次推断的时间,以及存储数据样本的 Amazon S3 存储桶 URI。

    # Sample output { "DeviceFleetName": "sample-device-fleet", "DeviceFleetArn": "arn:aws:sagemaker:us-west-2:9999999999:device-fleet/sample-fleet-name", "OutputConfig": { "S3OutputLocation": "s3://fleet-bucket/package_output", }, "AgentVersions":[{"Version": "1.1", "AgentCount": 2}]} "DeviceStats": {"Connected": 2, "Registered": 2}, "Models":[{ "ModelName": "sample-model", "ModelVersion": "1.1", "OfflineDeviceCount": 0, "ConnectedDeviceCount": 2, "ActiveDeviceCount": 2, "SamplingDeviceCount": 100 }] }