运行代理 - Amazon 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 提供的时间戳表示从设备收到的最后一个信号。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 }] }