

支援終止通知：2026 年 10 月 7 日 AWS 將停止 的支援 AWS IoT Greengrass Version 1。2026 年 10 月 7 日之後，您將無法再存取 AWS IoT Greengrass V1 資源。如需詳細資訊，請造訪[從 遷移 AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html)。

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

# 選用：設定您的裝置以取得 ML 資格
<a name="idt-ml-qualification"></a>

IDT for AWS IoT Greengrass 提供機器學習 (ML) 資格測試，以驗證您的裝置是否可以使用雲端訓練模型在本機執行 ML 推論。

若要執行 ML 資格測試，您必須先按照[設定您的裝置以執行 IDT 測試](device-config-setup.md)中所述設定裝置。然後，依照本主題中的步驟，安裝您想要執行之 ML 框架的相依性。

需要 IDT v3.1.0 或更高版本才能執行 ML 資格的測試。

## 安裝 ML 框架相依性
<a name="ml-qualification-framework-dependencies"></a>

所有 ML 框架相依性必須安裝在 `/usr/local/lib/python3.x/site-packages` 目錄下。為了確保它們安裝在正確的目錄下，我們建議您在安裝相依性時使用 `sudo` root 許可。資格測試不支援虛擬環境。

**注意**  
如果您要測試使用[容器化](lambda-group-config.md#lambda-containerization-considerations) （在 **Greengrass 容器**模式中） 執行的 Lambda 函數，`/usr/local/lib/python3.x`則不支援在 下為 Python 程式庫建立符號連結。若要避免錯誤，您必須在正確的目錄下安裝相依性。

按照下列步驟，安裝目標框架的相依性：
+ [安裝 MXNet 相依性](#ml-qualification-mxnet-dependencies)
+ [安裝 TensorFlow 相依性](#ml-qualification-tensorflow-dependencies)
+ [安裝 DLR 相依性](#ml-qualification-dlr-dependencies)

 

## 安裝 Apache MXNet 相依性
<a name="ml-qualification-mxnet-dependencies"></a>

<a name="test-framework-dependencies"></a>此框架的 IDT 資格測試具有以下相依性：
+ <a name="ml-qualification-python-req"></a>Python 3.6 或 Python 3.7。
**注意**  <a name="python-symlink-command"></a>
如果您使用的是 Python 3.6，則必須建立從 Python 3.7 到 Python 3.6 二進位檔的符號連結。這會設定您的裝置以符合 AWS IoT Greengrass的 Python 需求。例如：  

  ```
  sudo ln -s {{path-to-python-3.6}}/python3.6 {{path-to-python-3.7}}/python3.7
  ```
+ Apache MXNet v1.2.1 或更高版本。
+ NumPy. 該版本必須與您的 MxNet 版本相容。

### 安裝 MXNet
<a name="ml-qualification-mxnet-install"></a>

請遵循 MxNet 文件中的指示來[安裝 MxNet](https://mxnet.apache.org/get_started/?platform=linux&language=python&processor=cpu&environ=pip&)。

**注意**  
<a name="run-python3-commands"></a>如果您的裝置上同時安裝了 Python 2.x 和 Python 3.x，則請在您執行的安裝相依性命令中使用 Python 3.x。

### 驗證 MxNet 安裝
<a name="ml-qualification-mxnet-validate"></a>

選擇下列其中一個選項來驗證 MXNet 安裝。

#### 選項 1：使用 SSH 連接到您的裝置並執行指令碼
<a name="ml-qualification-validate-mxnet-option-1"></a>

1. <a name="ssh-validate-framework-install-ssh"></a>使用 SSH 連接到您的裝置。

1. <a name="ssh-validate-framework-install-run-scripts"></a>執行下列指令碼，確認相依性已正確安裝。

   ```
   sudo python3.7 -c "import mxnet; print(mxnet.__version__)"
   ```

   ```
   sudo python3.7 -c "import numpy; print(numpy.__version__)"
   ```

   <a name="ssh-passed-mldependencies"></a>輸出會列印版本號碼，指令碼應該會沒有錯誤地退出。

#### 選項 2：執行 IDT 相依性測試
<a name="ml-qualification-validate-mxnet-option-2"></a>

1. <a name="idt-validate-framework-install-check-config"></a>確定已針對 ML 資格設定 `device.json`。如需詳細資訊，請參閱[設定 device.json 以取得 ML 資格](set-config.md#device-json-ml-qualification)。

1. <a name="idt-validate-framework-install-run-test"></a>執行框架的相依性測試。

   ```
   devicetester_{{[linux | mac | win_x86-64]}} run-suite --group-id mldependencies --test-id mxnet_dependency_check
   ```

   <a name="idt-passed-mldependencies"></a>測試摘要會顯示 `mldependencies` 的 `PASSED` 結果。

 

## 安裝 TensorFlow 相依性
<a name="ml-qualification-tensorflow-dependencies"></a>

<a name="test-framework-dependencies"></a>此框架的 IDT 資格測試具有以下相依性：
+ <a name="ml-qualification-python-req"></a>Python 3.6 或 Python 3.7。
**注意**  <a name="python-symlink-command"></a>
如果您使用的是 Python 3.6，則必須建立從 Python 3.7 到 Python 3.6 二進位檔的符號連結。這會設定您的裝置以符合 AWS IoT Greengrass的 Python 需求。例如：  

  ```
  sudo ln -s {{path-to-python-3.6}}/python3.6 {{path-to-python-3.7}}/python3.7
  ```
+ TensorFlow 1.x.

### 安裝 TensorFlow
<a name="ml-qualification-tensorflow-install"></a>

按照 TensorFlow 文件中的說明，[使用 pip](https://www.tensorflow.org/install/pip) 或[從來源](https://www.tensorflow.org/install/source)安裝 TensorFlow 1.x。

**注意**  
<a name="run-python3-commands"></a>如果您的裝置上同時安裝了 Python 2.x 和 Python 3.x，則請在您執行的安裝相依性命令中使用 Python 3.x。

### 驗證 TensorFlow 安裝
<a name="ml-qualification-tensorflow-validate"></a>

選擇下列其中一個選項來驗證 TensorFlow 安裝。

#### 選項 1：使用 SSH 連接到您的裝置並執行指令碼
<a name="ml-qualification-validate-tensorflow-option-1"></a>

1. <a name="ssh-validate-framework-install-ssh"></a>使用 SSH 連接到您的裝置。

1. 執行下列指令碼，確認相依性已正確安裝。

   ```
   sudo python3.7 -c "import tensorflow; print(tensorflow.__version__)"
   ```

   <a name="ssh-passed-mldependencies"></a>輸出會列印版本號碼，指令碼應該會沒有錯誤地退出。

#### 選項 2：執行 IDT 相依性測試
<a name="ml-qualification-validate-tensorflow-option-2"></a>

1. <a name="idt-validate-framework-install-check-config"></a>確定已針對 ML 資格設定 `device.json`。如需詳細資訊，請參閱[設定 device.json 以取得 ML 資格](set-config.md#device-json-ml-qualification)。

1. <a name="idt-validate-framework-install-run-test"></a>執行框架的相依性測試。

   ```
   devicetester_{{[linux | mac | win_x86-64]}} run-suite --group-id mldependencies --test-id tensorflow_dependency_check
   ```

   <a name="idt-passed-mldependencies"></a>測試摘要會顯示 `mldependencies` 的 `PASSED` 結果。

 

## 安裝 Amazon SageMaker AI Neo 深度學習執行期 (DLR) 相依性
<a name="ml-qualification-dlr-dependencies"></a>

<a name="test-framework-dependencies"></a>此框架的 IDT 資格測試具有以下相依性：
+ <a name="ml-qualification-python-req"></a>Python 3.6 或 Python 3.7。
**注意**  <a name="python-symlink-command"></a>
如果您使用的是 Python 3.6，則必須建立從 Python 3.7 到 Python 3.6 二進位檔的符號連結。這會設定您的裝置以符合 AWS IoT Greengrass的 Python 需求。例如：  

  ```
  sudo ln -s {{path-to-python-3.6}}/python3.6 {{path-to-python-3.7}}/python3.7
  ```
+ SageMaker AI Neo DLR。
+ numpy.

安裝 DLR 測試相依性之後，您必須[編譯模型](#ml-qualification-dlr-compile-model)。

### 安裝 DLR
<a name="ml-qualification-dlr-install"></a>

請依照 DLR 文件中的指示[安裝 Neo DLR](https://neo-ai-dlr.readthedocs.io/en/latest/install.html#building-on-linux)。

**注意**  
<a name="run-python3-commands"></a>如果您的裝置上同時安裝了 Python 2.x 和 Python 3.x，則請在您執行的安裝相依性命令中使用 Python 3.x。

### 驗證 DLR 安裝
<a name="ml-qualification-dlr-validate"></a>

選擇下列其中一個選項來驗證 DLR 安裝。

#### 選項 1：使用 SSH 連接到您的裝置並執行指令碼
<a name="ml-qualification-validate-dlr-option-1"></a>

1. <a name="ssh-validate-framework-install-ssh"></a>使用 SSH 連接到您的裝置。

1. <a name="ssh-validate-framework-install-run-scripts"></a>執行下列指令碼，確認相依性已正確安裝。

   ```
   sudo python3.7 -c "import dlr; print(dlr.__version__)"
   ```

   ```
   sudo python3.7 -c "import numpy; print(numpy.__version__)"
   ```

   <a name="ssh-passed-mldependencies"></a>輸出會列印版本號碼，指令碼應該會沒有錯誤地退出。

#### 選項 2：執行 IDT 相依性測試
<a name="ml-qualification-validate-dlr-option-2"></a>

1. <a name="idt-validate-framework-install-check-config"></a>確定已針對 ML 資格設定 `device.json`。如需詳細資訊，請參閱[設定 device.json 以取得 ML 資格](set-config.md#device-json-ml-qualification)。

1. <a name="idt-validate-framework-install-run-test"></a>執行框架的相依性測試。

   ```
   devicetester_{{[linux | mac | win_x86-64]}} run-suite --group-id mldependencies --test-id dlr_dependency_check
   ```

   <a name="idt-passed-mldependencies"></a>測試摘要會顯示 `mldependencies` 的 `PASSED` 結果。

## 編譯 DLR 模型
<a name="ml-qualification-dlr-compile-model"></a>

您必須先編譯 DLR 模型，才能將其用於 ML 資格測試。針對步驟，選擇以下其中一個選項：

### 選項 1：使用 Amazon SageMaker AI 編譯模型
<a name="ml-qualification-compile-dlr-option-1"></a>

請依照下列步驟使用 SageMaker AI 編譯 IDT 提供的 ML 模型。此模式已使用 Apache MXNET 預先訓練。

1. 確認 SageMaker AI 支援您的裝置類型。如需詳細資訊，請參閱 *Amazon SageMaker AI API 參考*中的[目標裝置選項](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_OutputConfig.html#sagemaker-Type-OutputConfig-TargetDevice)。如果 SageMaker AI 目前不支援您的裝置類型，請遵循中的步驟[選項 2：使用 TVM 編譯 DLR 模型](#ml-qualification-compile-dlr-option-2)。
**注意**  
使用 SageMaker AI 編譯的模型執行 DLR 測試可能需要 4 或 5 分鐘。在這段時間內不要停止 IDT。

1. <a name="compile-dlr-download-uncompiled-model"></a>下載包含適用於 DLR 之未編譯、預先訓練 MxNet 模型的 tarball 檔案：
   + [dlr-noncompiled-model-1.0.tar.gz](https://docs.aws.amazon.com/greengrass/latest/developerguide/download-dlr-noncompiled-model-1.0.html)

1. <a name="compile-dlr-decompress-uncompiled-model"></a>解壓縮 tarball。此命令會產生以下目錄結構。  
![resnet18 目錄包含三個檔案。](http://docs.aws.amazon.com/zh_tw/greengrass/v1/developerguide/images/idt/idt-ml-qualification-dlr-uncompiled.png)

1. 將 `synset.txt` 移出 `resnet18` 目錄。記下新位置。您稍後會將此檔案複製到編譯的模型目錄中。

1. 壓縮 `resnet18` 目錄的內容。

   ```
   tar cvfz model.tar.gz resnet18v1-symbol.json resnet18v1-0000.params
   ```

1. 將壓縮檔案上傳到 中的 Amazon S3 儲存貯體 AWS 帳戶，然後遵循[編譯模型 （主控台）](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-job-compilation-console.html) 中的步驟來建立編譯任務。

   1. 對於 **Input configuration (輸入組態)**，請使用下列值：
      + 對於 **Data input configuration (資料輸入組態)**，請輸入 `{"data": [1, 3, 224, 224]}`。
      + 對於 **Machine learning framework (機器學習框架)**，請選擇 `MXNet`。

   1. 對於 **Output configuration (輸出組態)**，請使用下列值：
      + 針對 **S3 輸出位置**，輸入您要存放已編譯模型之 Amazon S3 儲存貯體或資料夾的路徑。
      + 對於 **Target device (目標裝置)**，選擇您的裝置類型。

1. 從您指定的輸出位置下載已編譯的模型，然後解壓縮檔案。

1. 將 `synset.txt` 複製到已編譯的模型目錄中。

1. 將已編譯模型目錄的名稱變更為 `resnet18`。

   您編譯的模型目錄必須具有以下目錄結構。  
![resnet18 編譯的模型目錄包含四個檔案。](http://docs.aws.amazon.com/zh_tw/greengrass/v1/developerguide/images/idt/idt-ml-qualification-dlr-compiled-sm.png)

### 選項 2：使用 TVM 編譯 DLR 模型
<a name="ml-qualification-compile-dlr-option-2"></a>

請依照下列步驟，使用 TVM 編譯 IDT 所提供的 ML 模型。此模型已使用 Apache MxNet 進行預先訓練，因此您必須在編譯模型的電腦或裝置上安裝 MxNet。若要安裝 MxNet，請依照 [MxNet 文件](https://mxnet.apache.org/get_started/?platform=linux&language=python&processor=cpu&environ=pip&)中的指示進行。

**注意**  
我們建議您在目標裝置上編譯模型。這種做法是選用的，但它可以協助確保相容性並減輕潛在問題。

 

1. <a name="compile-dlr-download-uncompiled-model"></a>下載包含適用於 DLR 之未編譯、預先訓練 MxNet 模型的 tarball 檔案：
   + [dlr-noncompiled-model-1.0.tar.gz](https://docs.aws.amazon.com/greengrass/latest/developerguide/download-dlr-noncompiled-model-1.0.html)

1. <a name="compile-dlr-decompress-uncompiled-model"></a>解壓縮 tarball。此命令會產生以下目錄結構。  
![resnet18 目錄包含三個檔案。](http://docs.aws.amazon.com/zh_tw/greengrass/v1/developerguide/images/idt/idt-ml-qualification-dlr-uncompiled.png)

1. 遵循 TVM 文件中的指示，[從您平台的來源建置和安裝 TVM](https://docs.tvm.ai/install/from_source.html)。

1. 建置 TVM 之後，請針對 resnet18 模型執行 TVM 編譯。以下步驟是以 TVM 文件中的[編譯深度學習模型的快速入門教學](https://tvm.apache.org/docs/tutorial/relay_quick_start.html#sphx-glr-tutorials-get-started-relay-quick-start-py)為基礎。

   1. 從複製的 TVM 儲存庫中開啟 `relay_quick_start.py` 檔案。

   1. 更新[在轉送中定義神經網路](https://tvm.apache.org/docs/tutorial/relay_quick_start.html#define-neural-network-in-relay)的程式碼。您可以使用下列其中一個選項：
      + 選項 1：使用 `mxnet.gluon.model_zoo.vision.get_model` 取得轉送模組和參數：

        ```
        from mxnet.gluon.model_zoo.vision import get_model
        block = get_model('resnet18_v1', pretrained=True)
        mod, params = relay.frontend.from_mxnet(block, {"data": data_shape})
        ```
      + 選項 2：從您在步驟 1 中下載的未編譯模型，將下列檔案複製到與 `relay_quick_start.py` 檔案相同的目錄中。這些檔案包含轉送模組和參數。
        + `resnet18v1-symbol.json`
        + `resnet18v1-0000.params`

   1. 更新[儲存並載入已編譯模組](https://tvm.apache.org/docs/tutorial/relay_quick_start.html#save-and-load-compiled-module)的程式碼，以使用下列程式碼。

      ```
      from tvm.contrib import util
      path_lib = "deploy_lib.so"
      #  Export the model library based on your device architecture
      lib.export_library("deploy_lib.so", cc="aarch64-linux-gnu-g++")
      with open("deploy_graph.json", "w") as fo:
          fo.write(graph)
      with open("deploy_param.params", "wb") as fo:
          fo.write(relay.save_param_dict(params))
      ```

   1. 建置模型：

      ```
      python3 tutorials/relay_quick_start.py --build-dir ./model
      ```

      此命令會產生下列檔案。
      + `deploy_graph.json`
      + `deploy_lib.so`
      + `deploy_param.params`

1. 將產生的模型檔案複製到名為 `resnet18` 的目錄中。這是您編譯的模型目錄。

1. 將編譯後的模型目錄複製到您的主機電腦。然後從您在步驟 1 中下載的未編譯模型，將 `synset.txt` 複製到已編譯的模型目錄中。

   您編譯的模型目錄必須具有以下目錄結構。  
![resnet18 編譯的模型目錄包含四個檔案。](http://docs.aws.amazon.com/zh_tw/greengrass/v1/developerguide/images/idt/idt-ml-qualification-dlr-compiled-tvm.png)

接著，[設定您的 AWS 登入資料和`device.json`檔案](set-config.md)。