기계 학습 추론 수행 - 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개발자 안내서.

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

기계 학습 추론 수행

이 기능은 다음에 사용할 수 있습니다.AWS IoT Greengrass코어 v1.6 이상입니다.

AWS IoT Greengrass을(를) 사용하여 클라우드 교육 모델을 사용하여 로컬 방식으로 생성된 데이터의 엣지에서 기계 학습(ML) 추론을 수행할 수 있습니다. 이를 통해 로컬 추론 실행의 낮은 지연 시간과 비용 절감이라는 이점을 얻을 수 있습니다. 그러면서도 모델 훈련 및 복잡한 처리에 필요한 클라우드 컴퓨팅 능력을 활용할 수 있습니다.

로컬 추론 수행을 시작하려면 AWS Management Console을 사용하여 기계 학습 추론을 구성하는 방법 단원을 참조하십시오.

AWS IoT Greengrass ML 추론 작동 방식

어디서든 추론 모델을 교육하고, 이를기계 학습 리소스그런 다음 Greengrass Lambda 함수에서 액세스할 수 있습니다. 예를 들어 에서 딥 러닝 모델을 빌드 및 교육할 수 있습니다.SageMaker당신의 Greengrass 코어에 배치하십시오. 그런 다음 Lambda 함수가 로컬 모델을 사용하여 연결된 디바이스에서 추론을 수행하고 새 교육 데이터를 클라우드로 전송할 수 있습니다.

다음 다이어그램은 AWS IoT Greengrass ML 추론 워크플로를 보여줍니다.


        기계 학습 워크플로의 구성 요소와 코어 디바이스 사이의 정보 흐름AWS IoT Greengrass서비스 및 클라우드 학습 모델을 지원합니다.

AWS IoT Greengrass ML 추론은 다음과 같은 ML 워크플로의 각 단계를 간소화합니다.

  • ML 프레임워크 프로토타입 빌드 및 배포.

  • 클라우드 교육 모델 액세스 및 Greengrass 코어 디바이스에 배포.

  • 하드웨어 액셀러레이터(GPU 및 FPGA 등)에 로컬 리소스로서 액세스할 수 있는 추론 앱 생성.

기계 학습 리소스

기계 학습 리소스는 클라우드 교육 교육 추론 모델을 나타내며,AWS IoT Greengrass코어. 기계 학습 리소스를 배포하려면 리소스를 Greengrass 그룹에 추가한 다음 그룹의 Lambda 함수가 어떻게 액세스할 수 있는지 정의합니다. 그룹 배포 중에AWS IoT Greengrass은 (는) 클라우드에서 소스 모델 패키지를 검색하고 Lambda 런타임 네임스페이스 내에 있는 디렉터리에 이를 압축 해제합니다. 그런 다음 Greengrass Lambda 함수는 로컬 방식으로 배포된 모델을 사용하여 추론을 수행합니다.

로컬 방식으로 배포된 모델을 업데이트하려면 기계 학습 리소스에 해당하는 (클라우드상의) 소스 모델을 업데이트한 다음 그룹을 배포합니다. 배포 도중 AWS IoT Greengrass은(는) 소스의 변경 사항을 확인합니다. 변경 사항이 감지되는 경우 AWS IoT Greengrass은(는) 로컬 모델을 업데이트합니다.

지원되는 모델 소스

AWS IoT Greengrass는 (는) 기계 학습 리소스에 및 Amazon S3 AGEMaker 모델을 지원합니다.

다음 요구 사항은 모델 소스에 적용됩니다.

  • SageMaker 및 Amazon S3 모델 소스를 저장하는 S3 버킷은 SSE-C로 암호화하면 안 됩니다. 서버 측 암호화를 사용하는 버킷의 경우AWS IoT GreengrassML 추론은 현재 SSE-S3 또는 SSE-KMS 암호화 옵션만 지원합니다. 서버 측 암호화 옵션에 대한 자세한 내용은 단원을 참조하십시오.서버 측 암호화를 사용하여 데이터 보호Amazon Simple Storage Service 개발자 안내서.

  • SageMaker 및 Amazon S3 모델 소스를 저장하는 S3 버킷의 이름에 마침표 (.). 자세한 내용은 SSL과 함께 가상 호스팅 스타일 버킷을 사용하는 방법에 대한 규칙을 참조하십시오.버킷 이름 지정 규칙Amazon Simple Storage Service 개발자 안내서.

  • 서비스 수준AWS 리전지원은 모두 사용할 수 있어야 합니다.AWS IoT GreengrassSageMaker. 현재AWS IoT Greengrass는 다음 리전에서 SageMaker 모델을 지원합니다.

    • US East (Ohio)

    • 미국 동부(버지니아 북부)

    • 미국 서부(오리건)

    • Asia Pacific (Mumbai)

    • Asia Pacific (Seoul)

    • 아시아 태평양(싱가포르)

    • 아시아 태평양(시드니)

    • 아시아 태평양(도쿄)

    • Europe (Frankfurt)

    • 유럽(아일랜드)

    • Europe (London)

  • AWS IoT Greengrass은(는) 다음 단원에서 설명한 대로 모델 소스에 대한 read 권한을 보유해야 합니다.

SageMaker

AWS IoT Greengrass는 SageMaker 교육 작업으로 저장된 모델을 지원합니다. SageMaker 는 내장형 또는 사용자 지정 알고리즘을 사용하여 모델을 빌드 및 교육할 수 있는 완전 관리형 ML 서비스입니다. 자세한 내용은 단원을 참조하십시오.SageMaker 란 무엇인가요?SageMaker 개발자 안내서.

에 의해 SageMaker 환경을 구성한 경우버킷 생성이름에 다음을 포함하는sagemaker을 선택한 다음AWS IoT Greengrass에는 SageMaker 교육 작업에 액세스할 수 있는 충분한 권한이 있습니다. AWSGreengrassResourceAccessRolePolicy 관리형 정책을 통해 이름에 문자열 sagemaker가 포함된 버킷에 액세스할 수 있습니다. 이 정책은 Greengrass 서비스 역할에 연결됩니다.

그렇지 않으면 교육 작업이 저장된 버킷에 대한 AWS IoT Greengrass read 권한을 부여합니다. 이를 수행하려면 서비스 역할에 다음 인라인 정책을 포함시킵니다. 여러 버킷 ARN을 나열할 수 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::my-bucket-name" ] } ] }
Amazon S3

AWS IoT Greengrass는 Amazon S3 다음과 같이 저장된 모델을 지원합니다.tar.gz또는.zip파일을 생성합니다.

를 활성화하려면AWS IoT Greengrass를 사용하여 Amazon S3 버킷에 저장된 모델에 액세스할 수 있는 경우AWS IoT Greengrass read를 수행하여 버킷에 액세스할 수 있는 권한을 부여하려면1다음의 것들로 구성됩니다.

  • 이름에 greengrass가 포함된 버킷에 모델을 저장합니다.

    AWSGreengrassResourceAccessRolePolicy 관리형 정책을 통해 이름에 문자열 greengrass가 포함된 버킷에 액세스할 수 있습니다. 이 정책은 Greengrass 서비스 역할에 연결됩니다.

     

  • Greengrass 서비스 역할에 다음 인라인 정책을 포함시킵니다.

    버킷 이름에 greengrass가 포함되지 않는 경우 서비스 역할에 다음 인라인 정책을 추가합니다. 여러 버킷 ARN을 나열할 수 있습니다.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::my-bucket-name" ] } ] }

    자세한 내용은 단원을 참조하십시오.인라인 정책 포함IAM 사용 설명서.

Requirements

기계 학습 리소스 생성 및 사용에는 다음 요구 사항이 적용됩니다.

  • 다음을 사용해야 합니다.AWS IoT Greengrass코어 v1.6 이상입니다.

  • 사용자 정의 Lambda 함수는read또는read and write리소스에 대한 작업을 생성합니다. 다른 작업을 할 수 있는 권한은 제공되지 않습니다. 연결된 Lambda 함수의 컨테이너화 모드는 액세스 권한을 설정하는 방법을 결정합니다. 자세한 내용은 Lambda 함수에서 기계 학습 리소스에 액세스 섹션을 참조하세요.

  • 코어 디바이스의 운영 체제에서 리소스의 전체 경로를 제공해야 합니다.

  • 리소스 이름이나 ID는 최대 128자이며, 패턴 [a-zA-Z0-9:_-]+을 사용해야 합니다.

ML 추론을 위한 런타임 및 라이브러리

AWS IoT Greengrass에서 다음 ML 런타임 및 라이브러리를 사용할 수 있습니다.

이러한 런타임 및 라이브러리는 NVIDIA Jetson TX2, Intel Atom 및 Raspberry Pi 플랫폼에 설치될 수 있습니다. 다운로드 정보는 지원되는 기계 학습 런타임 및 라이브러리 단원을 참조하십시오. 코어 디바이스에 직접 설치할 수 있습니다.

호환성 및 제한 사항에 대한 다음 정보를 참조해야 합니다.

Neo 딥 러닝 런타임

SageMaker Neo 딥 러닝 런타임을 사용하여 최적화된 기계 학습 모델로 추론을 수행할 수 있습니다.AWS IoT Greengrass디바이스입니다. 이러한 모델은 기계 학습 추론 예측 속도를 개선하기 위해 SageMaker Neo 딥 러닝 컴파일러를 사용해 최적화되었습니다. SageMaker 의 모델 최적화에 대한 자세한 정보는SageMaker Neo 설명서.

참고

현재는 특정한 Amazon Web Services 리전에서만 Neo 딥 러닝 컴파일러를 사용하여 기계 학습 모델을 최적화할 수 있습니다. 그러나 Neo 딥 러닝 런타임을 최적화된 모델과 함께 각AWS 리전여기서 각 항목은 다음과 같습니다.AWS IoT Greengrass코어가 지원됩니다. 자세한 내용은 최적화된 Machine Learning 추론을 구성하는 방법을 참조하십시오.

MXNet 버전 관리

Apache MXNet은 현재 다음 버전과의 호환성을 보장하지 않습니다. 따라서 이후 버전의 프레임워크를 사용하여 교육한 모델은 이전 버전의 프레임워크에서 제대로 작동하지 않을 수 있습니다. 모델 교육 및 모델 서비스 단계 사이의 충돌을 피하고, 일관된 종합적 경험을 제공하려면 모든 단계에서 동일한 MXNet 프레임워크 버전을 사용해야 합니다.

Raspberry Pi의 MXNet

로컬 MXNet 모델에 액세스하는 Greengrass Lambda 함수는 다음과 같은 환경 변수를 설정해야 합니다.

MXNET_ENGINE_TYPE=NativeEngine

환경 변수를 함수 코드에 설정하거나 함수의 그룹별 구성에 추가할 수 있습니다. 환경 변수를 구성 설정으로 추가하는 예는 이 단계를 참조하십시오.

참고

타사 코드 예제 실행과 같이 MXNet 프레임워크를 일반적으로 사용하는 경우에는 환경 변수를 Raspberry Pi에서 구성해야 합니다.

Raspberry Pi에서의 TensorFlow 모델 서비스 제한 사항

추론 결과 개선을 위한 다음 권장 사항은 Raspberry Pi 플랫폼에서의 TensorFlow 32비트 ARM 라이브러리를 사용한 테스트를 기반으로 합니다. 이러한 권장 사항은 고급 사용자의 참조용만을 목적으로 하며, 어떤 것도 보장되지 않습니다.

  • Checkpoint 형식을 사용하여 교육된 모델은 서비스 전에 프로토콜 버퍼에 대해 고정되어야 합니다. 예를 들어 TensorFlow-Slim 이미지 분류 모델 라이브러리를 참조하십시오.

  • 교육 또는 추론 코드에서 TF-Estimator 및 TF-Slim 라이브러리를 사용하지 마십시오. 대신 다음 예제에 표시된 .pb 파일 모델 로드 패턴을 사용하십시오.

    graph = tf.Graph() graph_def = tf.GraphDef() graph_def.ParseFromString(pb_file.read()) with graph.as_default(): tf.import_graph_def(graph_def)
참고

TensorFlow에 대해 지원되는 플랫폼에 대한 자세한 내용은 TensorFlow 설명서의 Installing TensorFlow를 참조하십시오.