运行代理 - Amazon SageMaker

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

运行代理

在本节中,您将使用 g 以二进制形式运行代理RPC,并检查您的设备和队列是否都在工作并正在收集示例数据。

  1. 启动代理。

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

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

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

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

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

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

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

    您下载的发布工件包含一个 g RPC 应用程序,可供您运行代理。该示例位于发布构件的 /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 提供的时间戳表示从设备收到的最后一个信号。LatestSampleTimeLatestInference 分别描述最后一个数据样本和推理的时间戳。

  3. 检查您的队列。

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

    sagemaker_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 }] }