

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# エージェントを実行する
<a name="edge-getting-started-step5"></a>

このセクションでは、gRPC を使用してエージェントをバイナリとして実行し、デバイスとフリートの両方が動作し、サンプリングデータを収集していることを確認します。

1. **エージェントを起動する。**

   SageMaker Edge Manager エージェントは、Executable and Linkable Format (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
               }]
   }
   ```