

지원 종료 공지: 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)을 참조하세요.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# IDT 테스트를 실행하도록 장치 구성
<a name="device-config-setup"></a>

디바이스를 구성하려면 AWS IoT Greengrass 종속성을 설치하고, AWS IoT Greengrass 코어 소프트웨어를 구성하고, 디바이스에 액세스하도록 호스트 컴퓨터를 구성하고, 디바이스에 대한 사용자 권한을 구성해야 합니다.

## 테스트 중인 디바이스에 대한 AWS IoT Greengrass 종속성 확인
<a name="install-gg-dependencies"></a>

용 IDT AWS IoT Greengrass 가 디바이스를 테스트하려면 먼저 [시작하기 AWS IoT Greengrass](https://docs.aws.amazon.com/greengrass/latest/developerguide/gg-gs.html)에 설명된 대로 디바이스를 설정해야 합니다. 지원되는 플랫폼에 대한 자세한 내용은 [지원되는 플랫폼](https://docs.aws.amazon.com/greengrass/latest/developerguide/what-is-gg.html#gg-platforms)을 참조하십시오.

## AWS IoT Greengrass 소프트웨어 구성
<a name="config-gg"></a>

용 IDT는 디바이스의 특정 버전과의 호환성을 AWS IoT Greengrass 테스트합니다 AWS IoT Greengrass. IDT는 디바이스 AWS IoT Greengrass 에서 테스트할 수 있는 두 가지 옵션을 제공합니다.
+ [AWS IoT Greengrass 코어 소프트웨어](what-is-gg.md#gg-core-download-tab)의 한 버전을 다운로드하여 사용합니다. IDT에서 자동으로 해당 소프트웨어를 설치합니다.
+ 디바이스에 이미 설치된 AWS IoT Greengrass 코어 소프트웨어 버전을 사용합니다.

**참고**  
의 각 버전 AWS IoT Greengrass 에는 해당 IDT 버전이 있습니다. 사용 중인 버전에 해당하는 IDT 버전을 다운로드 AWS IoT Greengrass 해야 합니다.

다음 단원에서는 이러한 옵션에 대해 설명합니다. 이러한 옵션 중 하나만 수행해야 합니다.

### 옵션 1: AWS IoT Greengrass 코어 소프트웨어 다운로드 및 이를 사용하도록 AWS IoT 디바이스 테스터 구성
<a name="download-gg"></a>

 AWS IoT Greengrass 코어 소프트웨어 다운로드 페이지에서 [AWS IoT Greengrass 코어 소프트웨어를](what-is-gg.md#gg-core-download-tab) 다운로드할 수 있습니다.

1. 올바른 아키텍처와 Linux 배포를 찾은 다음 **Download(다운로드)**를 선택합니다.

1. tar.gz 파일을 `<device-tester-extract-location>/products/greengrass/ggc`에 복사합니다.

**참고**  
 AWS IoT Greengrass tar.gz 파일의 이름을 변경하지 마십시오. 동일한 운영 체제 및 아키텍처에 대해 이 디렉터리에 여러 파일을 배치하지 마세요. 예를 들어 해당 디렉터리에 `greengrass-linux-armv7l-1.7.1.tar.gz` 파일과 `greengrass-linux-armv7l-1.8.1.tar.gz` 파일이 모두 있으면 테스트가 실패합니다.

### 옵션 2: AWS IoT 디바이스 테스터와 AWS IoT Greengrass 함께의 기존 설치 사용
<a name="existing-gg"></a>

`<device-tester-extract-location>/configs` 폴더에 있는 `device.json` 파일에 `greengrassLocation` 속성을 추가하여 디바이스에 설치된 AWS IoT Greengrass 코어 소프트웨어를 테스트하도록 IDT를 구성합니다. 예제:

```
"greengrassLocation" : "<path-to-greengrass-on-device>"
```

`device.json` 파일에 대한 자세한 내용은 [device.json 구성](set-config.md#device-config)를 참조하세요.

Linux 디바이스에서 AWS IoT Greengrass 코어 소프트웨어의 기본 위치는 입니다`/greengrass`.

**참고**  
디바이스에 시작되지 않은 AWS IoT Greengrass 코어 소프트웨어가 설치되어 있어야 합니다.  
장치에 `ggc_user` 사용자 및 `ggc_group`을 추가했는지 확인합니다. 자세한 내용은 [AWS IoT Greengrass에 대한 환경 설정](https://docs.aws.amazon.com/greengrass/latest/developerguide/module1.html)을 참조하십시오.

## 테스트 대상 장치에 액세스하도록 호스트 컴퓨터 구성
<a name="configure-host"></a>

IDT는 호스트 컴퓨터에서 실행되며, SSH를 사용하여 장치에 연결할 수 있어야 합니다. IDT가 테스트 대상 장치에 대한 SSH 액세스를 획득하도록 허용하는 옵션은 두 가지가 있습니다.

1. 여기에서 설명하는 지침에 따라 SSH 키 페어를 생성하고 해당 키가 암호를 지정하지 않고 테스트 대상 장치에 로그인할 수 있도록 권한을 부여합니다.

1. `device.json` 파일의 각 장치에 사용자 이름 및 암호를 제공합니다. 자세한 내용은 [device.json 구성](set-config.md#device-config) 단원을 참조하십시오.

임의의 SSL 구현을 사용하여 SSH 키를 생성할 수 있습니다. 다음 지침은 [SSH-KEYGEN](https://www.ssh.com/ssh/keygen/) 또는 [ PuTTYgen](https://www.ssh.com/ssh/putty/windows/puttygen)(Windows)을 사용하는 방법을 보여줍니다. 다른 SSL 구현을 사용 중인 경우 해당 구현에 대한 설명서를 참조하십시오.

IDT는 SSH 키를 사용하여 테스트 대상 장치에 인증합니다.

**SSH-KEYGEN을 사용하여 SSH 키를 생성하려면**

1. SSH 키를 생성합니다,

   공개 SSH **ssh-keygen** 명령을 사용하여 SSH 키 페어를 생성할 수 있습니다. 이미 호스트 컴퓨터에 SSH 키 페어가 있는 경우 IDT 전용 SSH 키 페어를 생성하는 것이 가장 좋습니다. 그러면 테스트를 완료한 후 호스트 컴퓨터가 더 이상 암호 없이 장치에 연결할 수 없습니다. 또한 원하는 사용자만 원격 장치에 액세스할 수 있도록 제한할 수 있습니다.
**참고**  
Windows에는 SSH 클라이언트가 설치되어 있지 않습니다. Windows에 SSH 클라이언트 설치에 대한 내용은 [SSH 클라이언트 소프트웨어](https://www.ssh.com/ssh/#sec-Download-client-software) 다운로드를 참조하십시오.

   **ssh-keygen** 명령은 키 페어 저장 이름과 경로를 입력하라는 메시지를 표시합니다. 기본적으로 키 페어 파일은 `id_rsa`(프라이빗 키) 및 `id_rsa.pub`(퍼블릭 키)로 이름 지정됩니다. macOS와 Linux에서 이러한 파일의 기본 위치는 `~/.ssh/`입니다. Windows에서 기본 위치는 `C:\Users\<user-name>\.ssh`입니다.

   메시지가 표시되면 SSH 키를 보호하기 위한 키 구문을 입력합니다. 자세한 내용은 [새 SSH 키 생성](https://www.ssh.com/ssh/keygen/)을 참조하십시오.

1. 테스트 대상 장치에 권한 있는 SSH 키를 추가합니다,

   IDT는 SSH 프라이빗 키를 사용하여 테스트 대상 장치에 로그인해야 합니다. 테스트 대상 장치에 로그인하도록 SSH 프라이빗 키를 승인하려면 호스트 컴퓨터의 **ssh-copy-id** 명령을 사용합니다. 이 명령은 테스트 대상 장치에서 `~/.ssh/authorized_keys` 파일에 퍼블릭 키를 추가합니다. 예제:

   **\$1 ssh-copy-id *<remote-ssh-user>*@*<remote-device-ip>***

   여기서 *remote-ssh-user*는 테스트 대상 장치에 로그인하는 데 사용하는 사용자 이름이고, *remote-device-ip*는 테스트를 실행할 테스트 대상 장치의 IP 주소입니다. 예제:

   **ssh-copy-id pi@192.168.1.5**

   메시지가 표시되면 **ssh-copy-id** 명령에서 지정한 사용자 이름에 대한 암호를 입력합니다.

   **ssh-copy-id**는 퍼블릭 키가 `id_rsa.pub`로 이름 지정되고 기본 위치에 저장된다고 가정합니다(macOS와 Linux에서는 `~/.ssh/`, Windows에서는 `C:\Users\<user-name>\.ssh`) 퍼블릭 키의 이름을 다르게 지정하거나 다른 위치에 저장한 경우, **ssh-copy-id**에 **-i** 옵션을 사용하여 SSH 퍼블릭 키의 정규화된 경로를 지정해야 합니다(예: **ssh-copy-id -i \$1/my/path/myKey.pub**). SSH 키 생성 및 퍼블릭 키 복사에 대한 자세한 내용은 [SSH-COPY-ID](https://www.ssh.com/ssh/copy-id)를 참조하십시오.

**PuTTYgen을 사용하여 SSH 키를 생성하려면(Windows만 해당)**

1. 테스트 대상 장치에 OpenSSH 서버 및 클라이언트가 설치되어 있는지 확인합니다. 자세한 내용은 [OpenSSH](https://www.openssh.com/)를 참조하십시오.

1. 테스트 대상 장치에 [PuTTYgen](https://www.puttygen.com/)을 설치합니다.

1. PuTTYgen을 엽니다.

1. **생성**을 선택하고 마우스를 상자 안으로 이동하여 프라이빗 키를 생성합니다.

1. **Conversions(변환)** 메뉴에서 **Export OpenSSH key(OpenSSH 키 내보내기)**를 선택하고 프라이빗 키를 `.pem` 파일 확장명으로 저장합니다.

1. 테스트 대상 장치에서 `/home/<user>/.ssh/authorized_keys` 파일에 퍼블릭 키를 추가합니다.

   1. PuTTYgen 창에서 퍼블릭 키 텍스트를 복사합니다.

   1. PuTTY를 사용하여 테스트 대상 장치에서 세션을 생성합니다.

      1. 명령 프롬프트 또는 Windows Powershell 창에서 다음 명령을 실행합니다.

         **C:/*<path-to-putty>*/putty.exe -ssh *<user>*@*<dut-ip-address>***

      1. 메시지가 표시되면 장치의 암호를 입력합니다.

      1. vi 또는 다른 텍스트 편집기를 사용하여 테스트 대상 장치의 `/home/<user>/.ssh/authorized_keys` 파일에 퍼블릭 키를 추가합니다.

1. 각 테스트 대상 장치에 대해 사용자 이름, IP 주소, 방금 호스트 컴퓨터에 저장한 프라이빗 키 파일의 경로로 `device.json` 파일을 업데이트합니다. 자세한 내용은 [device.json 구성](set-config.md#device-config) 단원을 참조하십시오. 프라이빗 키에 전체 경로 및 파일 이름을 제공하고 슬래시('/')를 사용해야 합니다. 예를 들어 Windows 경로 `C:\DT\privatekey.pem`의 경우 `device.json` 파일에 `C:/DT/privatekey.pem`을 사용합니다.

## 장치에서 사용자 권한 구성
<a name="root-access"></a>

IDT는 테스트 대상 장치에서 다양한 디렉터리와 파일에 대해 작업을 수행합니다. 이러한 작업 중 일부는 승격된 권한(**sudo** 사용)이 필요합니다. 이러한 작업을 자동화하려면 IDT for가 암호를 입력하라는 메시지 없이 sudo로 명령을 실행할 수 있어야 AWS IoT Greengrass 합니다.

암호 입력 메시지 없이 sudo 액세스를 허용하려면 테스트 대상 장치에서 다음 단계를 수행합니다.

**참고**  
`username`은 IDT가 테스트 대상 장치에 액세스하는 데 사용하는 SSH 사용자를 나타냅니다.

**sudo 그룹에 사용자를 추가하려면**

1. 테스트 대상 장치에서 `sudo usermod -aG sudo <username>`을 실행합니다.

1. 변경 사항을 적용하려면 로그아웃했다가 다시 로그인하십시오.

1. 사용자 이름이 성공적으로 추가되었는지 확인하려면 **sudo echo test**를 실행합니다. 암호 입력 메시지가 표시되지 않으면 사용자가 제대로 구성된 것입니다.

1. `/etc/sudoers` 파일을 열고 파일 끝에 다음 줄을 추가합니다.

   `<ssh-username> ALL=(ALL) NOPASSWD: ALL`

## 선택적 기능을 테스트하도록 장치 구성
<a name="optional-feature-config"></a>

다음 주제에서는 선택적 기능에 대한 IDT 테스트를 실행하도록 장치를 구성하는 방법을 설명합니다. 이러한 기능을 테스트하려는 경우에만 다음 구성 단계를 수행하세요. 그렇지 않은 경우 [AWS IoT Greengrass 검증 제품군을 실행하도록 IDT 설정 구성](set-config.md)를 계속 진행합니다.

**Topics**
+ [테스트 중인 디바이스에 대한 AWS IoT Greengrass 종속성 확인](#install-gg-dependencies)
+ [AWS IoT Greengrass 소프트웨어 구성](#config-gg)
+ [테스트 대상 장치에 액세스하도록 호스트 컴퓨터 구성](#configure-host)
+ [장치에서 사용자 권한 구성](#root-access)
+ [선택적 기능을 테스트하도록 장치 구성](#optional-feature-config)
+ [선택 사항: 용 IDT용 Docker 컨테이너 구성 AWS IoT Greengrass](docker-config-setup.md)
+ [선택 사항: ML 검증을 위해 장치 구성](idt-ml-qualification.md)

# 선택 사항: 용 IDT용 Docker 컨테이너 구성 AWS IoT Greengrass
<a name="docker-config-setup"></a>

AWS IoT Greengrass 는 Docker 컨테이너에서 AWS IoT Greengrass 코어 소프트웨어를 더 쉽게 실행할 수 있도록 Docker 이미지와 Dockerfile을 제공합니다. AWS IoT Greengrass 컨테이너를 설정한 후 IDT 테스트를 실행할 수 있습니다. 현재 AWS IoT Greengrass에서 IDT를 실행하는 데는 x86\$164 도커 아키텍처만 지원됩니다.

이 기능을 사용하려면 IDT v2.3.0 이상이 필요합니다.

IDT 테스트를 실행하도록 Docker 컨테이너를 설정하는 프로세스는에서 제공하는 Docker 이미지 또는 Dockerfile을 사용하는지 여부에 따라 달라집니다 AWS IoT Greengrass.
+ [도커 이미지 사용](#docker-config-setup-docker-image). Docker 이미지에는 AWS IoT Greengrass 코어 소프트웨어 및 종속성이 설치되어 있습니다.
+ [도커 파일 사용](#docker-config-setup-dockerfile). Dockerfile에는 사용자 지정 AWS IoT Greengrass 컨테이너 이미지를 빌드하는 데 사용할 수 있는 소스 코드가 포함되어 있습니다. 다른 플랫폼 아키텍처에서 실행하거나 이미지 크기를 줄이기 위해 이미지를 수정할 수 있습니다.
**참고**  
AWS IoT Greengrass 는 AWS IoT Greengrass 코어 소프트웨어 버전 1.11.1에 대한 Dockerfiles 또는 Docker 이미지를 제공하지 않습니다. 자체 사용자 지정 컨테이너 이미지에서 IDT 테스트를 실행하려면 이미지에에서 제공하는 Dockerfile에 정의된 종속성이 포함되어야 합니다 AWS IoT Greengrass.

Docker 컨테이너 AWS IoT Greengrass 에서를 실행할 때는 다음 기능을 사용할 수 없습니다.<a name="docker-image-unsupported-features"></a>
+ [Greengrass 컨테이너](connectors.md) 모드에서 실행되는 **커넥터** Docker 컨테이너에서 커넥터를 실행하려면 커넥터가 **컨테이너 없음** 모드로 실행되어야 합니다. **컨테이너 없음** 모드를 지원하는 커넥터를 찾으려면 [AWS에서 제공한 Greengrass 커넥터](connectors-list.md) 단원을 참조하십시오. 이러한 커넥터 중 일부에는 **컨테이너 없음**으로 설정해야 하는 격리 모드 파라미터가 있습니다.
+ [로컬 장치 및 볼륨 리소스](access-local-resources.md). Docker 컨테이너에서 실행되는 사용자 정의 Lambda 함수는 코어의 장치 및 볼륨에 직접 액세스해야 합니다.

## 에서 제공하는 Docker 이미지 구성 AWS IoT Greengrass
<a name="docker-config-setup-docker-image"></a>

다음 단계에 따라 IDT 테스트를 실행하도록 AWS IoT Greengrass Docker 이미지를 구성합니다.

**사전 조건**

이 자습서를 시작하기 전에 다음 작업을 수행해야 합니다.<a name="docker-image-prereq-list"></a>
+ 선택한 AWS Command Line Interface (AWS CLI) 버전에 따라 호스트 컴퓨터에 다음 소프트웨어 및 버전을 설치해야 합니다.

------
#### [ AWS CLI version 2 ]
  + [Docker](https://docs.docker.com/install/), 버전 18.09 이상. 이전 버전도 작동할 수 있지만 18.09 이상을 사용하는 것이 좋습니다.
  + AWS CLI 버전 2.0.0 이상.
    +  AWS CLI 버전 2를 설치하려면 [AWS CLI 버전 2 설치를 참조하세요](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html).
    + 를 구성하려면 구성을 AWS CLI참조하세요. [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) 
**참고**  
Windows 컴퓨터에서 이후 AWS CLI 버전 2로 업그레이드하려면 [MSI 설치](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2-windows.html) 프로세스를 반복해야 합니다.

------
#### [ AWS CLI version 1 ]
  + [Docker](https://docs.docker.com/install/), 버전 18.09 이상. 이전 버전도 작동할 수 있지만 18.09 이상을 사용하는 것이 좋습니다.
  + [Python](https://www.python.org/downloads/), 버전 3.6 이상.
  + [pip](https://pip.pypa.io/en/stable/installing) 버전 18.1 이상
  + AWS CLI 버전 1.17.10 이상
    +  AWS CLI 버전 1을 설치하려면 [AWS CLI 버전 1 설치를 참조하세요](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv1.html).
    + 를 구성하려면 구성을 AWS CLI참조하세요. [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) 
    +  AWS CLI 버전 1의 최신 버전으로 업그레이드하려면 다음 명령을 실행합니다.

      ```
      pip install awscli --upgrade --user
      ```
**참고**  
Windows에서 AWS CLI 버전 1의 [MSI 설치를](https://docs.aws.amazon.com/cli/latest/userguide/install-windows.html#msi-on-windows) 사용하는 경우 다음 사항에 유의하세요.  
 AWS CLI 버전 1 설치가 botocore를 설치하지 못하면 [Python 및 pip 설치를](https://docs.aws.amazon.com/cli/latest/userguide/awscli-install-windows.html#awscli-install-windows-pip) 사용해 보세요.
이후 AWS CLI 버전 1로 업그레이드하려면 MSI 설치 프로세스를 반복해야 합니다.

------
+ Amazon Elastic Container Registry(Amazon ECR) 리소스에 액세스하려면 다음 권한을 부여해야 합니다.
  + Amazon ECR을 사용하려면 사용자가 AWS Identity and Access Management (IAM) 정책을 통해 `ecr:GetAuthorizationToken` 권한을 부여해야 레지스트리에 인증하고 Amazon ECR 리포지토리에서 이미지를 푸시하거나 가져올 수 있습니다. 자세한 내용은 *Amazon Elastic Container Registry 사용 설명서*의 [Amazon ECR 리포지토리 정책 예시](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-policy-examples.html) 및 [One Amazon ECR 리포지토리 액세스](https://docs.aws.amazon.com/AmazonECR/latest/userguide/security_iam_id-based-policy-examples.html#security_iam_id-based-policy-examples-access-one-bucket)를 참조하십시오.

 

1. 도커 이미지를 다운로드하고 컨테이너를 구성합니다. [Docker Hub](https://hub.docker.com/r/amazon/aws-iot-greengrass) 또는 [Amazon Elastic Container Registry(Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)에서 사전 작성 이미지를 다운로드하고 Windows, macOS 및 Linux(x86\$164) 플랫폼에서 이 이미지를 실행할 수 있습니다.

   [1단계: Amazon ECR에서 AWS IoT Greengrass 컨테이너 이미지 가져오기](run-gg-in-docker-container.md#docker-pull-image)에서 Docker 이미지를 다운로드하려면 의 모든 단계를 완료합니다. 그런 다음 이 항목으로 돌아와 구성을 계속합니다.

1. <a name="docker-linux-non-root"></a>Linux 사용자만 해당: IDT를 실행하는 사용자에게 도커 명령을 실행할 권한이 있는지 확인하십시오. 자세한 내용은 도커 설명서의 [도커를 루트가 아닌 사용자로 관리](https://docs.docker.com/install/linux/linux-postinstall/#manage-docker-as-a-non-root-user)를 참조하십시오.

1. <a name="docker-run-gg-container"></a> AWS IoT Greengrass 컨테이너를 실행하려면 운영 체제에 대한 명령을 사용합니다.

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

   ```
   docker run --rm --init -it -d --name aws-iot-greengrass \
   -p 8883:8883 \
   -v <host-path-to-kernel-config-file>:<container-path> \
   <image-repository>:<tag>
   ```
   + *<host-path-to-kernel-config-file>*을 호스트의 커널 구성 파일 경로로 대체하고 *<container-path>*를 볼륨이 컨테이너에 탑재된 경로로 대체합니다.

     호스트의 커널 구성 파일은 일반적으로 `/proc/config.gz` 또는 `/boot/config-<kernel-release-date>`에 있습니다. `uname -r`을 실행하여 *<kernel-release-date>* 값을 확인할 수 있습니다.

     **예:** `/boot/config-<kernel-release-date>`에서 구성 파일을 탑재하려면 다음 명령을 실행합니다.

     ```
     -v /boot/config-4.15.0-74-generic:/boot/config-4.15.0-74-generic \
     ```

     **예:** `proc/config.gz`에서 구성 파일을 탑재하려면 다음 명령을 실행합니다.

     ```
     -v /proc/config.gz:/proc/config.gz \
     ```
   + 명령에서 *<image-repository>*:*<tag>*를 대상 이미지의 리포지토리 및 태그 이름으로 대체합니다.

     **예:** AWS IoT Greengrass 코어 소프트웨어의 최신 버전을 가리키는 방법

     ```
     216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest
     ```

      AWS IoT Greengrass Docker 이미지 목록을 가져오려면 다음 명령을 실행합니다.

     ```
     aws ecr list-images --region us-west-2 --registry-id 216483018798 --repository-name aws-iot-greengrass
     ```

------
#### [ macOS ]

   ```
   docker run --rm --init -it -d --name aws-iot-greengrass \
   -p 8883:8883 \
   <image-repository>:<tag>
   ```
   + 명령에서 *<image-repository>*:*<tag>*를 대상 이미지의 리포지토리 및 태그 이름으로 대체합니다.

     **예:** AWS IoT Greengrass 코어 소프트웨어의 최신 버전을 가리키는 방법

     ```
     216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest
     ```

      AWS IoT Greengrass Docker 이미지 목록을 가져오려면 다음 명령을 실행합니다.

     ```
     aws ecr list-images --region us-west-2 --registry-id 216483018798 --repository-name aws-iot-greengrass
     ```

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

   ```
   docker run --rm --init -it -d --name aws-iot-greengrass \
   -p 8883:8883 \
   <image-repository>:<tag>
   ```
   + 명령에서 *<image-repository>*:*<tag>*를 대상 이미지의 리포지토리 및 태그 이름으로 대체합니다.

     **예:** AWS IoT Greengrass 코어 소프트웨어의 최신 버전을 가리키는 방법

     ```
     216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest
     ```

      AWS IoT Greengrass Docker 이미지 목록을 가져오려면 다음 명령을 실행합니다.

     ```
     aws ecr list-images --region us-west-2 --registry-id 216483018798 --repository-name aws-iot-greengrass
     ```

------
**중요**  
IDT를 사용하여 테스트할 때는 일반적인 AWS IoT Greengrass 용도로 이미지를 실행하는 데 사용되는 `--entrypoint /greengrass-entrypoint.sh \` 인수를 포함하지 마십시오.

1. <a name="docker-config-next-steps"></a>다음 단계: [자격 AWS 증명과 `device.json` 파일을 구성합니다](set-config.md).

## 에서 제공하는 dockerfile 구성 AWS IoT Greengrass
<a name="docker-config-setup-dockerfile"></a>

다음 단계에 따라 IDT 테스트를 실행하도록 Dockerfile에서 빌드된 AWS IoT Greengrass Docker 이미지를 구성합니다.

1. [AWS IoT Greengrass Docker 소프트웨어](what-is-gg.md#gg-docker-download)에서 도커 파일 패키지를 호스트 컴퓨터에 다운로드하고 압축을 풉니다.

1. `README.md`를 엽니다. 다음 세 단계에서는 이 파일의 섹션을 참조합니다.

1. **Prerequisites(사전 조건)** 섹션의 요구 사항을 충족하는지 확인합니다.

1. Linux 사용자만 해당: **Enable Symlink and Hardlink Protection(symlink 및 hardlink 보호 활성화)** 및 **Enable IPv4 Network Forwarding(IPv4 네트워크 전달 활성화)** 단계를 완료합니다.

1. Docker 이미지를 작성하려면 **1단계. AWS IoT Greengrass Docker 이미지를 빌드합니다**. 그런 다음 이 항목으로 돌아와 구성을 계속합니다.

1. <a name="docker-run-gg-container"></a> AWS IoT Greengrass 컨테이너를 실행하려면 운영 체제에 대한 명령을 사용합니다.

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

   ```
   docker run --rm --init -it -d --name aws-iot-greengrass \
   -p 8883:8883 \
   -v <host-path-to-kernel-config-file>:<container-path> \
   <image-repository>:<tag>
   ```
   + *<host-path-to-kernel-config-file>*을 호스트의 커널 구성 파일 경로로 대체하고 *<container-path>*를 볼륨이 컨테이너에 탑재된 경로로 대체합니다.

     호스트의 커널 구성 파일은 일반적으로 `/proc/config.gz` 또는 `/boot/config-<kernel-release-date>`에 있습니다. `uname -r`을 실행하여 *<kernel-release-date>* 값을 확인할 수 있습니다.

     **예:** `/boot/config-<kernel-release-date>`에서 구성 파일을 탑재하려면 다음 명령을 실행합니다.

     ```
     -v /boot/config-4.15.0-74-generic:/boot/config-4.15.0-74-generic \
     ```

     **예:** `proc/config.gz`에서 구성 파일을 탑재하려면 다음 명령을 실행합니다.

     ```
     -v /proc/config.gz:/proc/config.gz \
     ```
   + 명령에서 *<image-repository>*:*<tag>*를 대상 이미지의 리포지토리 및 태그 이름으로 대체합니다.

     **예:** AWS IoT Greengrass 코어 소프트웨어의 최신 버전을 가리키는 방법

     ```
     216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest
     ```

      AWS IoT Greengrass Docker 이미지 목록을 가져오려면 다음 명령을 실행합니다.

     ```
     aws ecr list-images --region us-west-2 --registry-id 216483018798 --repository-name aws-iot-greengrass
     ```

------
#### [ macOS ]

   ```
   docker run --rm --init -it -d --name aws-iot-greengrass \
   -p 8883:8883 \
   <image-repository>:<tag>
   ```
   + 명령에서 *<image-repository>*:*<tag>*를 대상 이미지의 리포지토리 및 태그 이름으로 대체합니다.

     **예:** AWS IoT Greengrass 코어 소프트웨어의 최신 버전을 가리키는 방법

     ```
     216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest
     ```

      AWS IoT Greengrass Docker 이미지 목록을 가져오려면 다음 명령을 실행합니다.

     ```
     aws ecr list-images --region us-west-2 --registry-id 216483018798 --repository-name aws-iot-greengrass
     ```

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

   ```
   docker run --rm --init -it -d --name aws-iot-greengrass \
   -p 8883:8883 \
   <image-repository>:<tag>
   ```
   + 명령에서 *<image-repository>*:*<tag>*를 대상 이미지의 리포지토리 및 태그 이름으로 대체합니다.

     **예:** AWS IoT Greengrass 코어 소프트웨어의 최신 버전을 가리키는 방법

     ```
     216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest
     ```

      AWS IoT Greengrass Docker 이미지 목록을 가져오려면 다음 명령을 실행합니다.

     ```
     aws ecr list-images --region us-west-2 --registry-id 216483018798 --repository-name aws-iot-greengrass
     ```

------
**중요**  
IDT를 사용하여 테스트할 때는 일반적인 AWS IoT Greengrass 용도로 이미지를 실행하는 데 사용되는 `--entrypoint /greengrass-entrypoint.sh \` 인수를 포함하지 마십시오.

1. <a name="docker-config-next-steps"></a>다음 단계: [자격 AWS 증명과 `device.json` 파일을 구성합니다](set-config.md).

## 용 IDT에 대한 Docker 컨테이너 설정 문제 해결 AWS IoT Greengrass
<a name="docker-config-setup-troubleshooting"></a>

다음 정보를 사용하여 AWS IoT Greengrass 테스트용 IDT용 Docker 컨테이너 실행 관련 문제를 해결할 수 있습니다.

### WARNING: Error loading config file:/home/user/.docker/config.json - stat /home/<user>/.docker/config.json: permission denied
<a name="docker-config-permissions-linux"></a>

Linux에서 `docker` 명령을 실행할 때 이 오류가 발생하면 다음 명령을 실행합니다. 다음 명령에서 *<user>*를 IDT를 실행하는 사용자로 대체합니다.

```
sudo chown <user>:<user> /home/<user>/.docker -R
sudo chmod g+rwx /home/<user>/.docker -R
```

# 선택 사항: 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) 참조하세요. *Amazon SageMaker * 현재 SageMaker AI에서 디바이스 유형을 지원하지 않는 경우의 단계를 따릅니다[옵션 2: TVM을 사용하여 DLR 모델 컴파일](#ml-qualification-compile-dlr-option-2).
**참고**  
SageMaker AI에서 컴파일한 모델로 DLR 테스트를 실행하는 데 4\$15분이 걸릴 수 있습니다. 이 시간 동안 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).