

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

# 手動下載並設定 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。

代理程式會以二進位格式發行，以支援作業系統。請檢查您的作業系統是否受支援，並符合下表中的最低作業系統需求：

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

**版本：**Ubuntu 18.04

**支援的二進位格式：**x86-64 位元 (ELF 二進位) 和 ARMv8 64 位元 (ELF 二進位)

------
#### [ 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 | 亞麻 8 | 

`VERSION` 分為三個組成部分：`<MAJOR_VERSION>.<YYYY-MM-DD>-<SHA-7>`，其中：
+ `<MAJOR_VERSION>`：發行版本。目前設定給 `1` 的發行版本。
+ `<YYYY-MM-DD>`：成品發行的時間戳記。
+ `<SHA-7>`：從中構建發行版本的儲存庫提交 ID。

您必須以 `YYYY-MM-DD` 格式提供 `<MAJOR_VERSION>` 和時間戳記。我們建議您使用最新的成品發佈時間戳記。

在命令列中執行以下命令以獲取最新的時間戳記。將 `<OS>` 取代為您的作業系統：

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

例如，如果您使用的是 Windows 32 位元作業系統，請執行：

```
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/
```

此範例中的傳回輸出會顯示兩個發行成品。初次發行成品檔案會注意到發行版本具有 `1` 的主要發行版本、`20201218` 的時間戳記 (採用 YYYY-MM-DD 格式)，以及 `81f481f` SHA-7 遞交 ID。

**注意**  
上述命令假設您已經配置了 AWS Command Line Interface。如需如何設定 AWS CLI 用於互動的設定的詳細資訊 AWS，請參閱[設定 AWS CLI](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 代理程式可以使用可執行和可連結格式 (ELF) 可執行二進位檔的形式，做為獨立處理程序執行，或您可以將其做為動態共用物件 (.dll) 連結。Linux 支援將其做為獨立的可執行二進位文件執行，並且為偏好模式。視窗支援將其作為共享物件 (.dll) 執行。

在 Linux 上，我們建議您透過初始化 (`init`) 系統一部分的服務來執行二進位檔。如果您希望直接執行二進位檔案，您可以在終端機中這麼做，如以下範例所示。如果您有現代化的作業系統，則在執行代理程式之前不需要其他安裝，因為所有需求都是以靜態方式建置在可執行檔中。這使您可以靈活地在終端機上，作為服務或在容器中執行代理程式。

若要執行代理程式，請先建立 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 檔案隨代理程式版本一起提供。此欄位是必要的。
+ `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 的絕對路徑，以開啟當機計數器量度。您可以透過在裝備終端機中執行 `whereis libsystemd` 來尋找預設的 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 中的父項首碼，當您指定 `"Cloud"` 為擷取資料目的地時，會存放擷取的資料 (`sagemaker_edge_core_capture_data_disk_path)`。如果 `"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` 代理程式位於相同工作目錄中的組態檔案。