

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

# Edge Manager エージェントを手動でダウンロードして設定する
<a name="edge-device-fleet-manual"></a>

お使いのオペレーティングシステム、アーキテクチャ、 AWS リージョンに基づいて Edge Manager エージェントをダウンロードします。このエージェントは定期的に更新されるため、リリース日とバージョンに基づいてエージェントを選択できます。エージェントを取得したら、JSON 形式の設定ファイルを作成します。デバイスの IoT モノオブジェクトの名前、フリート名、デバイスの認証情報、その他のキーバリューのペアを指定します。設定ファイルで指定する必要があるキーの完全なリストについては、「[Edge Manager エージェントを実行する](#edge-device-fleet-running-agent)」を参照してください。エージェントは、実行可能バイナリファイルとして実行することも、動的共有オブジェクト (DSO) としてリンクすることもできます。

## エージェントの仕組み
<a name="edge-device-fleet-how-agent-works"></a>

エージェントはデバイスの CPU で実行されます。エージェントはコンパイルジョブ中に指定したターゲットデバイスのフレームワークとハードウェアで推論を実行します。例えば、Jetson Nano のモデルをコンパイルした場合、エージェントは指定された[深層学習ランタイム](https://github.com/neo-ai/neo-ai-dlr) (DLR) の GPU をサポートします。

エージェントは、サポート対象のオペレーティングシステム向けに、バイナリ形式でリリースされます。お使いのオペレーティングシステムがサポートされ、次の表にある OS の最小要件を満たしていることを確認します。

------
#### [ Linux ]

**バージョン:** Ubuntu 18.04

**サポートされているバイナリ形式:** x86-64 ビット (ELF バイナリ) と ARMv8 64 ビット (ELF バイナリ)

------
#### [ Windows ]

**バージョン:** Windows 10 バージョン 1909

**サポートされているバイナリ形式:** x86-32 ビット (DLL) と x86-64 ビット (DLL)

------

## Edge Manager エージェントをインストールする
<a name="edge-device-fleet-installation"></a>

Edge Manager エージェントを使用するには、まずリリースアーティファクトとルート証明書を取得する必要があります。リリースアーティファクトは、`us-west-2` リージョンの Amazon S3 バケットに保存されています。このアーティファクトをダウンロードするには、オペレーティングシステム (`<OS>`) と `<VERSION>` を指定します。

お使いのオペレーティングシステムに基づいて、`<OS>` を以下のいずれかに置き換えます。


| Windows 32 ビット | Windows 64 ビット | Linux x86-64 | Linux ARMv8 | 
| --- | --- | --- | --- | 
| windows-x86 | windows-x64 | linux-x64 | linux-armv8 | 

`VERSION` は `<MAJOR_VERSION>.<YYYY-MM-DD>-<SHA-7>` の 3 つのコンポーネントに分かれており、それぞれ次を表します。
+ `<MAJOR_VERSION>`: リリースのバージョン。現在、リリースバージョンは `1` に設定されています。
+ `<YYYY-MM-DD>`: アーティファクトリリースのタイムスタンプ。
+ `<SHA-7>`: リリースのビルド元のリポジトリコミット ID。

`<MAJOR_VERSION>` とタイムスタンプ (`YYYY-MM-DD` の形式) で指定する必要があります。最新のタイムスタンプを持つリリースアーティファクトを使用することをお勧めします。

コマンドラインで次のコマンドを実行して、最新のタイムスタンプを取得します。`<OS>` をお使いのオペレーティングシステムに置き換えます。

```
aws s3 ls s3://sagemaker-edge-release-store-us-west-2-<OS>/Releases/ | sort -r
```

例えば、Windows 32 ビット OS を使用している場合は、以下を実行します。

```
aws s3 ls s3://sagemaker-edge-release-store-us-west-2-windows-x86/Releases/ | sort -r
```

これにより、次が返されます。

```
2020-12-01 23:33:36 0 

                    PRE 1.20201218.81f481f/
                    PRE 1.20201207.02d0e97/
```

この例で返された出力には、2 つのリリースアーティファクトが表示されています。1 つ目のリリースアーティファクトファイルには、リリースバージョンのメジャーリリースバージョン `1`、タイムスタンプ `20201218` (YYYY-MM-DD 形式)、SHA-7 コミット ID `81f481f` が示されています。

**注記**  
前述のコマンドは、 AWS Command Line Interfaceが設定済みであることを前提としています。が操作 AWS CLI に使用する設定の構成方法の詳細については、「 CLI の設定 AWS」を参照してください。 [AWS](https://docs.aws.amazon.com//cli/latest/userguide/cli-chap-configure.html)

お使いのオペレーティングシステムに基づいて次のコマンドを使い、アーティファクトをインストールします。

------
#### [ Windows 32-bit ]

```
aws s3 cp s3://sagemaker-edge-release-store-us-west-2-windows-x86/Releases/<VERSION>/<VERSION>.zip .
aws s3 cp s3://sagemaker-edge-release-store-us-west-2-windows-x86/Releases/<VERSION>/sha256_hex.shasum .
```

------
#### [ Windows 64-bit ]

```
aws s3 cp s3://sagemaker-edge-release-store-us-west-2-windows-x64/Releases/<VERSION>/<VERSION>.zip .
aws s3 cp s3://sagemaker-edge-release-store-us-west-2-windows-x64/Releases/<VERSION>/sha256_hex.shasum .
```

------
#### [ Linux x86-64 ]

```
aws s3 cp s3://sagemaker-edge-release-store-us-west-2-linux-x64/Releases/<VERSION>/<VERSION>.tgz .
aws s3 cp s3://sagemaker-edge-release-store-us-west-2-linux-x64/Releases/<VERSION>/sha256_hex.shasum .
```

------
#### [ Linux ARMv8 ]

```
aws s3 cp s3://sagemaker-edge-release-store-us-west-2-linux-armv8/Releases/<VERSION>/<VERSION>.tgz .
aws s3 cp s3://sagemaker-edge-release-store-us-west-2-linux-armv8/Releases/<VERSION>/sha256_hex.shasum .
```

------

また、ルート証明書をダウンロードする必要があります。この証明書は、エッジデバイスにロード AWS する前に、 によって署名されたモデルアーティファクトを検証します。

`<OS>` をお使いのプラットフォーム (サポートされているオペレーティングシステムのリストに記載) に応じて置き換え、`<REGION>` をお使いの AWS リージョンに置き換えます。

```
aws s3 cp s3://sagemaker-edge-release-store-us-west-2-<OS>/Certificates/<REGION>/<REGION>.pem .
```

## Edge Manager エージェントを実行する
<a name="edge-device-fleet-running-agent"></a>

SageMaker AI Edge Manager エージェントは、Executable and Linkable Format (ELF) の実行可能なバイナリファイル形式でスタンドアロンプロセスとして実行するか、エージェントに動的共有オブジェクト (.dll) としてリンクできます。Linux は、スタンドアロンの実行可能なバイナリファイルとしての実行をサポートしており、これが推奨モードです。共有オブジェクト (.dll) としての実行は Windows でサポートされています。

Linux では、初期化 (`init`) システムの一部であるサービスを使用してバイナリファイルを実行することをお勧めします。バイナリを直接実行する場合は、次の例のように、ターミナルを使います。最新の OS を使用している場合は、エージェントを実行する前に他のものをインストールする必要はありません。すべての要件が実行可能ファイルに静的に組み込まれているため、エージェントはターミナルで、サービスとして、またはコンテナ内で柔軟に実行できます。

エージェントを実行するには、まず JSON 形式の設定ファイルを作成します。次のキーバリューのペアを指定します。
+ `sagemaker_edge_core_device_name`: デバイスの名前。このデバイス名はデバイスフリートとともに、SageMaker Edge Manager コンソールで登録する必要があります。
+ `sagemaker_edge_core_device_fleet_name`: デバイスが属するフリートの名前。
+ `sagemaker_edge_core_region`: デバイス、フリート、Amazon S3 バケットに関連付けられた AWS リージョン。これは、デバイスが登録され、Amazon S3 バケットが作成されたリージョンと一致します (同じであることが予想されます)。モデルそのものは SageMaker Neo を使用して他のリージョンでコンパイルできます。この設定はモデルコンパイルのリージョンとは関係ありません。
+ `sagemaker_edge_core_root_certs_path`: ルート証明書へのフォルダの絶対パス。これは、関連する AWS アカウントでデバイスを検証するために使用されます。
+ `sagemaker_edge_provider_aws_ca_cert_file`: Amazon ルート CA 証明書 (AmazonRootCA1.PEM) への絶対パス。これは、関連する AWS アカウントでデバイスを検証するために使用されます。 `AmazonCA`は が所有する証明書です AWS。
+ `sagemaker_edge_provider_aws_cert_file`: ルート証明書 AWS IoT に署名するための絶対パス (`*.pem.crt`)。
+ `sagemaker_edge_provider_aws_cert_pk_file`: AWS IoT プライベートキーへの絶対パス。 (`*.pem.key`)。
+ `sagemaker_edge_provider_aws_iot_cred_endpoint`: AWS IoT 認証情報エンドポイント (*identifier*.iot.*region*.amazonaws.com)。このエンドポイントは、認証情報の検証に使用されます。詳細については、「[デバイスの AWS IoTへの接続](https://docs.aws.amazon.com/iot/latest/developerguide/iot-connect-devices.html)」を参照してください。
+ `sagemaker_edge_provider_provider`: これは、プロバイダーインターフェイスの実装を使用していることを示します。プロバイダーインターフェイスは、アップロード、ハートビート、登録の検証のためにエンドネットワークサービスと通信します。デフォルトでは、`"Aws"` に設定されています。プロバイダーインターフェイスのカスタム実装もできます。そのため、プロバイダーがない場合は `None` に、または関連する共有オブジェクトパスを使用するカスタム実装の場合は `Custom` に設定できます。
+ `sagemaker_edge_provider_provider_path`: プロバイダーが実装する共有オブジェクト (.so ファイルまたは.dll ファイル) への絶対パスを指定します。`"Aws"` プロバイダーの .dll または .so ファイルまたは so ファイルは、エージェントのリリースで提供されます。これは必須フィールドです。
+ `sagemaker_edge_provider_s3_bucket_name`: Amazon S3 バケットの名前 (Amazon S3 バケット URI ではありません)。バケットの名前には文字列 `sagemaker` が含まれている必要があります。
+ `sagemaker_edge_log_verbose` (ブール値): 任意。デバッグログを設定します。[`True`] または [`False`] のいずれかを選択します。
+ `sagemaker_edge_telemetry_libsystemd_path`: (Linux のみ) `systemd` はエージェントのクラッシュカウンタのメトリクスを実装します。libsystemd の絶対パスを設定して、クラッシュカウンタのメトリクスを有効にします。デフォルトの libsystemd パスは、デバイスのターミナルで `whereis libsystemd` を実行することで見つけられます。
+ `sagemaker_edge_core_capture_data_destination`: キャプチャデータをアップロードする場所 (送信先)。[`"Cloud"`] または [`"Disk"`] のいずれかを選択します。デフォルトでは `"Disk"` に設定されています。`"Disk"` に設定すると、入力および出力テンソルと補助データをローカルファイルシステムの任意の場所に書き込みます。`"Cloud"` に書き込む場合、`sagemaker_edge_provider_s3_bucket_name` 設定で指定された Amazon S3 バケット名が使用されます。
+ `sagemaker_edge_core_capture_data_disk_path`: ローカルファイルシステムの絶対パスを設定します。`"Disk"` が送信先になっている場合は、ここにキャプチャデータのファイルが書き込まれます。`"Cloud"` が送信先として指定されている場合は、このフィールドは使用されません。
+ `sagemaker_edge_core_folder_prefix`: Amazon S3 の親プレフィックス。キャプチャデータの送信先 (`sagemaker_edge_core_capture_data_disk_path)`) に `"Cloud"` を指定した場合は、ここにキャプチャデータが保存されます。`"Disk"` がデータの送信先として設定されている場合、キャプチャしたデータは `sagemaker_edge_core_capture_data_disk_path` のサブフォルダに保存されます。
+ `sagemaker_edge_core_capture_data_buffer_size` (整数値): キャプチャデータのリングバッファサイズ。これは、バッファに保存されているリクエストの最大件数を示します。
+ `sagemaker_edge_core_capture_data_batch_size` (整数値): キャプチャデータのバッチサイズ。これは、バッファで処理されるリクエストのバッチサイズを示します。この値は、`sagemaker_edge_core_capture_data_buffer_size` 以下にする必要があります。バッチサイズをバッファのサイズを最大値の半分にすることをお勧めします。
+ `sagemaker_edge_core_capture_data_push_period_seconds` (整数値): キャプチャデータのプッシュ期間 (秒)。バッファ内のリクエストのバッチは、バッファにバッチのリクエストがある場合、またはこの期間が終了したとき (どちらか早いほう) に処理されます。この設定では、その期間を設定します。
+ `sagemaker_edge_core_capture_data_base64_embed_limit`: キャプチャデータのアップロード制限 (バイト)。整数値。

設定ファイルは、次の例の形式で独自の値を指定したものです。この例では、デフォルトの AWS provider(`"Aws"`) を使用し、定期的なアップロードを指定しません。

```
{
    "sagemaker_edge_core_device_name": "device-name",
    "sagemaker_edge_core_device_fleet_name": "fleet-name",
    "sagemaker_edge_core_region": "region",
    "sagemaker_edge_core_root_certs_path": "<Absolute path to root certificates>",
    "sagemaker_edge_provider_provider": "Aws",
    "sagemaker_edge_provider_provider_path" : "/path/to/libprovider_aws.so",
    "sagemaker_edge_provider_aws_ca_cert_file": "<Absolute path to Amazon Root CA certificate>/AmazonRootCA1.pem",
    "sagemaker_edge_provider_aws_cert_file": "<Absolute path to AWS IoT signing root certificate>/device.pem.crt",
    "sagemaker_edge_provider_aws_cert_pk_file": "<Absolute path to AWS IoT private key.>/private.pem.key",
    "sagemaker_edge_provider_aws_iot_cred_endpoint": "https://<AWS IoT Endpoint Address>",
    "sagemaker_edge_core_capture_data_destination": "Cloud",
    "sagemaker_edge_provider_s3_bucket_name": "sagemaker-bucket-name",
    "sagemaker_edge_core_folder_prefix": "Amazon S3 folder prefix",
    "sagemaker_edge_core_capture_data_buffer_size": 30,
    "sagemaker_edge_core_capture_data_batch_size": 10,
    "sagemaker_edge_core_capture_data_push_period_seconds": 4000,
    "sagemaker_edge_core_capture_data_base64_embed_limit": 2,
    "sagemaker_edge_log_verbose": false
}
```

リリースアーティファクトには、`/bin` ディレクトリに `sagemaker_edge_agent_binary` という名前のバイナリ実行可能ファイルが含まれています。バイナリファイルを実行するには、`-a` フラグを使用して、選択したディレクトリにソケットファイル記述子 (.sock) を作成し、`-c` フラグを使用して作成した、エージェントの JSON 形式の設定ファイルのパスを指定します。

```
./sagemaker_edge_agent_binary -a <ADDRESS_TO_SOCKET> -c <PATH_TO_CONFIG_FILE>
```

次に、ディレクトリとファイルパスを指定したコードスニペットの例を示します。

```
./sagemaker_edge_agent_binary -a /tmp/sagemaker_edge_agent_example.sock -c sagemaker_edge_config.json
```

この例では、`/tmp` ディレクトリに `sagemaker_edge_agent_example.sock` という名前のソケットファイル記述子が作成され、エージェントと同じ作業ディレクトリにある設定ファイル `sagemaker_edge_config.json` を指定します。