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

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

运行代理

在本节中,您将使用 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表示从设备收到的最后一个信号。LatestSampleTimeLatestInference分别描述最后一个数据样本和推理的时间戳。

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