선택 사항: ML 검증에 맞게 디바이스 구성 - AWS IoT Greengrass

다음에 대한 설명서를 보고 있습니다.AWS IoT Greengrass Version 1.AWS IoT Greengrass Version 2의 최신 주요 버전입니다AWS IoT Greengrass. 사용에 관한 자세한 내용은 단원을 참조하십시오.AWS IoT Greengrass V2에 대한 자세한 내용은AWS IoT Greengrass Version 2개발자 안내서.

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

선택 사항: ML 검증에 맞게 디바이스 구성

AWS IoT Greengrass용 IDT는 디바이스가 클라우드 학습 모델을 사용하여 로컬에서 ML 추론을 수행할 수 있는지 검증하도록 기계 학습(ML) 검증 테스트를 제공합니다.

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

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

ML 프레임워크 종속 항목 설치

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

참고

함께 실행되는 Lambda 함수를 테스트하는 경우컨테이너화(Greengrass 컨테이너모드), 파이썬 라이브러리에 대한 심볼릭 링크 생성/usr/local/lib/python3.x는 지원되지 않습니다. 오류를 방지하려면 올바른 디렉터리 아래에 종속 항목을 설치해야 합니다.

대상 프레임워크에 대한 종속 항목을 설치하는 단계를 따르세요.

 

Apache MXNet 종속 항목 설치

이 프레임워크에 대한 IDT 검증 테스트에는 다음과 같은 종속 항목이 있습니다.

  • Python 3.6 또는 Python 3.7.

    참고

    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 설치

MXNet 설명서의 지침에 따라 MXNet을 설치합니다.

참고

Python 2.x와 Python 3.x가 모두 디바이스에 설치되어 있는 경우, 종속 항목을 설치하기 위해 실행하는 명령에서 Python 3.x를 사용합니다.

MXNet 설치 검증

다음 옵션 중 하나를 선택하여 MXNet 설치를 검증합니다.

옵션 1: 디바이스에 SSH 및 스크립트 실행

  1. 디바이스에 SSH합니다.

  2. 종속 항목이 올바르게 설치되었는지 확인하려면 다음 스크립트를 실행합니다.

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

    출력은 버전 번호를 인쇄하고 스크립트는 오류 없이 종료되어야 합니다.

옵션 2: IDT 종속 항목 테스트 실행

  1. device.json이 ML 검증에 대해 구성되어 있는지 확인합니다. 자세한 내용은 ML 검증을 위해 device.json 구성 섹션을 참조하세요.

  2. 프레임워크에 대한 종속 항목 테스트를 실행합니다.

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

    테스트 요약에 mldependencies에 대한 PASSED 결과가 표시됩니다.

 

TensorFlow 종속 항목 설치

이 프레임워크에 대한 IDT 검증 테스트에는 다음과 같은 종속 항목이 있습니다.

  • Python 3.6 또는 Python 3.7.

    참고

    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 설치

TensorFlow 설명서의 지침에 따라 pip를 통해 또는 소스에서 TensorFlow 1.x를 설치합니다.

참고

Python 2.x와 Python 3.x가 모두 디바이스에 설치되어 있는 경우, 종속 항목을 설치하기 위해 실행하는 명령에서 Python 3.x를 사용합니다.

TensorFlow 설치 검증

다음 옵션 중 하나를 선택하여 TensorFlow 설치를 검증합니다.

옵션 1: 디바이스에 SSH 및 스크립트 실행

  1. 디바이스에 SSH합니다.

  2. 종속 항목이 올바르게 설치되었는지 확인하려면 다음 스크립트를 실행합니다.

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

    출력은 버전 번호를 인쇄하고 스크립트는 오류 없이 종료되어야 합니다.

옵션 2: IDT 종속 항목 테스트 실행

  1. device.json이 ML 검증에 대해 구성되어 있는지 확인합니다. 자세한 내용은 ML 검증을 위해 device.json 구성 섹션을 참조하세요.

  2. 프레임워크에 대한 종속 항목 테스트를 실행합니다.

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

    테스트 요약에 mldependencies에 대한 PASSED 결과가 표시됩니다.

 

Amazon SageMaker Neo 딥 러닝 런타임 (DLR) 종속성을 설치합니다.

이 프레임워크에 대한 IDT 검증 테스트에는 다음과 같은 종속 항목이 있습니다.

  • Python 3.6 또는 Python 3.7.

    참고

    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 네오 DLR.

  • numpy.

DLR 테스트 종속 항목을 설치한 후에는 모델을 컴파일해야 합니다.

DLR 설치

MXNet 설명서의 지침에 따라 Neo DLR을 설치합니다.

참고

Python 2.x와 Python 3.x가 모두 디바이스에 설치되어 있는 경우, 종속 항목을 설치하기 위해 실행하는 명령에서 Python 3.x를 사용합니다.

DLR 설치 검증

다음 옵션 중 하나를 선택하여 DLR 설치를 검증합니다.

옵션 1: 디바이스에 SSH 및 스크립트 실행

  1. 디바이스에 SSH합니다.

  2. 종속 항목이 올바르게 설치되었는지 확인하려면 다음 스크립트를 실행합니다.

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

    출력은 버전 번호를 인쇄하고 스크립트는 오류 없이 종료되어야 합니다.

옵션 2: IDT 종속 항목 테스트 실행

  1. device.json이 ML 검증에 대해 구성되어 있는지 확인합니다. 자세한 내용은 ML 검증을 위해 device.json 구성 섹션을 참조하세요.

  2. 프레임워크에 대한 종속 항목 테스트를 실행합니다.

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

    테스트 요약에 mldependencies에 대한 PASSED 결과가 표시됩니다.

DLR 모델 컴파일

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

옵션 1: Amazon SageMaker 를 사용하여 모델 컴파일

다음 단계에 따라 SageMaker 를 사용하여 IDT에서 제공하는 ML 모델을 컴파일합니다. 이 모델은 Apache MXNet을 사용하여 사전 교육되어 있습니다.

  1. SageMaker 에서 디바이스 유형을 지원하는지 확인합니다. 자세한 내용은 단원을 참조하십시오.대상 디바이스 옵션 the Amazon SageMaker API Reference. 디바이스 유형이 SageMaker 에서 현재 지원되지 않는 경우옵션 2: TVM을 사용하여 DLR 모델 컴파일.

    참고

    SageMaker 에서 컴파일한 모델로 DLR 테스트를 실행하려면 4분에서 5분 정도 걸릴 수 있습니다. 이 시간 동안 IDT를 중지하지 마시기 바랍니다.

  2. DLR용 컴파일되지 않은 사전 교육된 MXNet 모델이 포함된 tarball 파일을 다운로드합니다.

  3. tarball의 압축을 풉니다. 이 명령은 다음과 같은 디렉터리 구조를 생성합니다.

    
          resnet18 디렉터리에는 3개의 파일이 있습니다.
  4. resnet18 디렉터리에서 synset.txt를 이동합니다. 새 위치를 기록해 둡니다. 나중에 컴파일된 모델 디렉터리에 이 파일을 복사합니다.

  5. resnet18 디렉터리의 내용을 압축합니다.

    tar cvfz model.tar.gz resnet18v1-symbol.json resnet18v1-0000.params
  6. Amazon S3 버킷에 압축된 파일을 업로드합니다.AWS 계정단원을 수행한 다음 이 단계를 수행하십시오.모델 컴파일 (콘솔)컴파일 작업을 생성 할 수 있습니다.

    1. 입력 구성에 다음 값을 사용합니다.

      • 데이터 입력 구성{"data": [1, 3, 224, 224]}를 입력합니다.

      • 기계 학습 프레임워크에서 MXNet을 선택합니다.

    2. 출력 구성에 다음 값을 사용합니다.

      • S3 출력 위치에서 컴파일된 모델을 저장할 Amazon S3 버킷 또는 폴더의 경로를 입력합니다.

      • 대상 디바이스에서 디바이스 유형을 선택합니다.

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

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

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

    컴파일된 모델 디렉터리는 디렉터리 구조가 다음과 같아야 합니다.

    
                            resnet18 컴파일된 모델 디렉터리에 4개의 파일이 포함되어 있습니다.

옵션 2: TVM을 사용하여 DLR 모델 컴파일

다음 단계에 따라 TVM을 사용하여 IDT에서 제공하는 ML 모델을 컴파일합니다. 이 모델은 Apache MXNet을 사용하여 사전 교육되어 있으므로 모델을 컴파일하는 컴퓨터나 디바이스에 MXNet을 설치해야 합니다. MXNet을 설치하려면 MXNet 설명서의 지침을 따르세요.

참고

대상 디바이스에서 모델을 컴파일하는 것이 좋습니다. 이 방법은 선택 사항이지만 호환성을 보장하고 잠재적인 문제를 완화하는 데 도움이 될 수 있습니다.

 

  1. DLR용 컴파일되지 않은 사전 교육된 MXNet 모델이 포함된 tarball 파일을 다운로드합니다.

  2. tarball의 압축을 풉니다. 이 명령은 다음과 같은 디렉터리 구조를 생성합니다.

    
          resnet18 디렉터리에는 3개의 파일이 있습니다.
  3. TVM 설명서의 지침에 따라 플랫폼에 대한 소스에서 TVM을 빌드하고 설치합니다.

  4. TVM이 빌드된 후 resnet18 모델에 대한 TVM 컴파일을 실행합니다. 다음 단계는 TVM 설명서의 딥 러닝 모델 컴파일을 위한 빠른 시작 자습서를 기반으로 합니다.

    1. 복제된 TVM 리포지토리에서 relay_quick_start.py 파일을 엽니다.

    2. 릴레이의 신경망을 정의하는 코드를 업데이트합니다. 다음 옵션 중 하나를 사용할 수 있습니다.

      • 옵션 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

    3. 다음 코드를 사용하도록 컴파일된 모듈을 저장하고 로드하는 코드를 업데이트합니다.

      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))
    4. 모델을 빌드합니다.

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

      이 명령은 다음과 같은 파일을 생성합니다.

      • deploy_graph.json

      • deploy_lib.so

      • deploy_param.params

  5. 생성된 모델 파일을 resnet18이라는 디렉터리에 복사합니다. 이 디렉터리는 컴파일된 모델 디렉터리입니다.

  6. 컴파일된 모델 디렉터리를 호스트 컴퓨터에 복사합니다. 그런 다음 1단계에서 다운로드한 컴파일되지 않은 모델에서 synset.txt를 컴파일된 모델 디렉터리에 복사합니다.

    컴파일된 모델 디렉터리는 디렉터리 구조가 다음과 같아야 합니다.

    
                            resnet18 컴파일된 모델 디렉터리에 4개의 파일이 포함되어 있습니다.

다음,구성AWS자격 증명 및device.jsonfile.