

지원 종료 공지: 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 AWS IoT Greengrass 는 기계 학습(ML) 검증 테스트를 제공하여 디바이스가 클라우드 훈련 모델을 사용하여 로컬에서 ML 추론을 수행할 수 있는지 검증합니다.

ML 검증 테스트를 실행하려면 먼저 [IDT 테스트를 실행하도록 장치 구성](device-config-setup.md)에 설명된 대로 장치를 구성해야 합니다. 그런 다음 이 주제의 단계를 수행하여 실행할 ML 프레임워크에 대한 종속 항목을 설치합니다.

ML 검증 테스트를 실행하려면 IDT v3.1.0 이상이 필요합니다.

## ML 프레임워크 종속 항목 설치
<a name="ml-qualification-framework-dependencies"></a>

모든 ML 프레임워크 종속 항목은 `/usr/local/lib/python3.x/site-packages` 디렉터리 아래에 설치해야 합니다. 올바른 디렉터리에 설치되도록 하려면 종속 항목을 설치할 때 `sudo` 루트 권한을 사용하는 것이 좋습니다. 가상 환경은 검증 테스트에서 지원되지 않습니다.

**참고**  
[컨테이너화](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>`device.json`이 ML 검증에 대해 구성되어 있는지 확인합니다. 자세한 내용은 [ML 검증을 위해 device.json 구성](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>`device.json`이 ML 검증에 대해 구성되어 있는지 확인합니다. 자세한 내용은 [ML 검증을 위해 device.json 구성](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(Deep Learning Runtime) 종속성 설치
<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>

MXNet 설명서의 지침에 따라 [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>`device.json`이 ML 검증에 대해 구성되어 있는지 확인합니다. 자세한 내용은 [ML 검증을 위해 device.json 구성](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>

ML 검증 테스트에 DLR 모델을 사용하려면 먼저 DLR 모델을 컴파일해야 합니다. 단계에서 다음 옵션 중 하나를 선택합니다.

### 옵션 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 디렉터리에는 3개의 파일이 있습니다.](http://docs.aws.amazon.com/ko_kr/greengrass/v1/developerguide/images/idt/idt-ml-qualification-dlr-uncompiled.png)

1. `resnet18` 디렉터리에서 `synset.txt`를 이동합니다. 새 위치를 기록해 둡니다. 나중에 컴파일된 모델 디렉터리에 이 파일을 복사합니다.

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. **입력 구성**에 다음 값을 사용합니다.
      + **데이터 입력 구성**에 `{"data": [1, 3, 224, 224]}`를 입력합니다.
      + **기계 학습 프레임워크**에서 `MXNet`을 선택합니다.

   1. **출력 구성**에 다음 값을 사용합니다.
      + **S3 출력 위치**에 컴파일된 모델을 저장할 Amazon S3 버킷 또는 폴더의 경로를 입력합니다.
      + **대상 장치**에서 장치 유형을 선택합니다.

1. 지정한 출력 위치에서 컴파일된 모델을 다운로드한 다음 파일의 압축을 풉니다.

1. `synset.txt`를 컴파일된 모델 디렉터리에 복사합니다.

1. 컴파일된 모델 디렉터리의 이름을 `resnet18`로 변경합니다.

   컴파일된 모델 디렉터리는 디렉터리 구조가 다음과 같아야 합니다.  
![resnet18 컴파일된 모델 디렉터리에 4개의 파일이 포함되어 있습니다.](http://docs.aws.amazon.com/ko_kr/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 디렉터리에는 3개의 파일이 있습니다.](http://docs.aws.amazon.com/ko_kr/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 컴파일된 모델 디렉터리에 4개의 파일이 포함되어 있습니다.](http://docs.aws.amazon.com/ko_kr/greengrass/v1/developerguide/images/idt/idt-ml-qualification-dlr-compiled-tvm.png)

그런 다음 자격 [AWS 증명과 `device.json` 파일을 구성합니다](set-config.md).