

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 執行代理程式
<a name="edge-getting-started-step5"></a>

在本節中，您將使用 gRPC 以二進位檔案的形式執行代理程式，並檢查您的裝置和機群是否正常運作以及收集範例資料。

1. **啟動代理程式。**

   SageMaker Edge Manager 代理程式可以使用可執行和可連結格式 (ELF) 可執行二進位檔的形式，做為獨立處理程序執行，也可以做為動態共用物件 (.dll) 連結。作為獨立的可執行二進位文件執行是偏好模式，在 Linux 上受到支援。

   此範例使用 gRPC 來執行代理程式。gRPC 是可在任何環境中執行的開放原始碼高效能遠端程序呼叫 (RPC) 架構。如需有關 gRPC的詳細資訊，請參閱[gRPC文件](https://grpc.io/docs/)。

   若要使用gRPC，請執行下列步驟：

   1. 在 .proto 檔案中定義服務。

   1. 使用協議緩衝區編譯器生成服務器和客戶端代碼。

   1. 使用 Python (或其他 gRPC 支援的語言) gRPC API 為您的服務編寫伺服器。

   1. 使用 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
   ```

1. **檢查您的裝置。**

   檢查您的裝置是否已連線並範例資料。手動或自動進行定期檢查，可讓您檢查裝置或機群是否正常運作。

   提供裝置所屬機群的名稱以及唯一裝置識別碼。在本機機器上執行以下命令：

   ```
   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` 描述最後一個資料範例和推論的時間戳記。

1. **檢查你的艦隊。**

   檢查您的艦隊是否正在使用 `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
               }]
   }
   ```