튜토리얼: SageMaker 엣지 매니저 시작하기 - AWS IoT Greengrass

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

튜토리얼: SageMaker 엣지 매니저 시작하기

중요

SageMaker 엣지 매니저는 2024년 4월 26일에 단종되었습니다. 에지 장치에 모델을 계속 배포하는 방법에 대한 자세한 내용은 SageMaker Edge Manager 수명 종료를 참조하십시오.

Amazon SageMaker Edge Manager는 엣지 디바이스에서 실행되는 소프트웨어 에이전트입니다. SageMaker Edge Manager는 엣지 디바이스에 대한 모델 관리를 제공하므로 Amazon SageMaker NEO로 컴파일된 모델을 Greengrass 코어 디바이스에서 직접 패키징하고 사용할 수 있습니다. SageMaker Edge Manager를 사용하면 코어 디바이스에서 모델 입력 및 출력 데이터를 샘플링하고 모니터링 및 분석을 AWS 클라우드 위해 해당 데이터를 로 전송할 수도 있습니다. Greengrass 코어 디바이스에서 SageMaker Edge Manager가 작동하는 방식에 대한 자세한 내용은 을 참조하십시오. 그린그래스 코어 디바이스에서 Amazon SageMaker Edge Manager 사용

이 자습서에서는 기존 코어 장치에서 AWS제공된 샘플 구성 요소와 함께 SageMaker Edge Manager를 사용하여 시작하는 방법을 보여줍니다. 이러한 샘플 구성 요소는 SageMaker Edge Manager 구성 요소를 종속 항목으로 사용하여 Edge Manager 에이전트를 배포하고 Neo를 사용하여 컴파일된 사전 학습된 모델을 사용하여 추론을 수행합니다. SageMaker SageMaker Edge Manager 에이전트에 대한 자세한 내용은 Amazon SageMaker 개발자 안내서의 SageMaker Edge Manager를 참조하십시오.

기존 Greengrass 코어 디바이스에서 SageMaker Edge Manager 에이전트를 설정하고 사용하기 위해 다음과 같은 샘플 추론 및 모델 구성 요소를 생성하는 데 사용할 수 있는 예제 코드를 AWS 제공합니다.

  • 이미지 분류

    • com.greengrass.SageMakerEdgeManager.ImageClassification

    • com.greengrass.SageMakerEdgeManager.ImageClassification.Model

  • 물체 감지

    • com.greengrass.SageMakerEdgeManager.ObjectDetection

    • com.greengrass.SageMakerEdgeManager.ObjectDetection.Model

이 자습서에서는 샘플 구성 요소와 SageMaker Edge Manager 에이전트를 배포하는 방법을 보여줍니다.

사전 조건

이 자습서를 완료하려면 다음 사전 요구 사항을 충족해야 합니다.

  • 아마존 리눅스 2, 데비안 기반 리눅스 플랫폼 (x86_64 또는 Armv8) 또는 윈도우 (x86_64) 에서 실행되는 그린그래스 코어 디바이스. 계정이 없는 경우 자습서: AWS IoT Greengrass V2 시작하기 단원을 참조하세요.

  • Python 3.6 이상 (사용 중인 Python pip 버전용 포함) 이 코어 기기에 설치되어 있어야 합니다.

  • 코어 기기에 설치된 API GLX OpenGL 런타임 libgl1-mesa-glx ().

  • 관리자 권한이 있는 AWS Identity and Access Management (IAM) 사용자.

  • 다음 요구 사항을 충족하는 인터넷 지원 Windows, Mac 또는 Unix 계열 개발 컴퓨터:

    • Python 3.6 이상이 설치되었습니다.

    • AWS CLI IAM관리자 사용자 자격 증명으로 설치 및 구성되었습니다. 자세한 내용은 설치 AWS CLI구성을 참조하십시오 AWS CLI.

  • Greengrass 코어 AWS 계정 디바이스와 동일한 디바이스에서 생성된 S3 버킷은 다음과 AWS 리전 같습니다.

    • 샘플 추론 및 모델 구성 요소에 포함된 아티팩트를 저장하는 S3 버킷입니다. 이 자습서에서는 amzn-s3-demo-bucket1을 사용하여 이 버킷을 참조합니다.

    • 에지 디바이스 플릿에 연결하는 S3 버킷. SageMaker SageMaker Edge Manager에는 에지 디바이스 플릿을 생성하고 디바이스에서 추론을 실행하여 얻은 샘플 데이터를 저장하려면 S3 버킷이 필요합니다. 이 자습서에서는 amzn-s3-demo-bucket2를 사용하여 이 버킷을 참조합니다.

    S3 버킷 생성에 대한 자세한 내용은 Amazon S3 시작하기를 참조하십시오.

  • Greengrass 장치 역할은 다음과 같이 구성되었습니다.

    • 다음 IAM 정책 credentials.iot.amazonaws.com 예와 같이 역할을 허용하고 역할을 sagemaker.amazonaws.com 맡을 수 있는 신뢰 관계입니다.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "credentials.iot.amazonaws.com" }, "Action": "sts:AssumeRole" }, { "Effect": "Allow", "Principal": { "Service": "sagemaker.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    • AmazonSageMakerEdgeDeviceFleetPolicyIAM관리형 정책.

    • AmazonSageMakerFullAccessIAM관리형 정책.

    • 구성 요소 아티팩트가 포함된 S3 버킷에 대한 s3:GetObject 작업 (다음 IAM 정책 예시 참조).

      { "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1/*" ], "Effect": "Allow" } ] }

엣지 매니저에서 SageMaker Greengrass 코어 디바이스를 설정합니다.

SageMaker Edge Manager의 에지 디바이스 플릿은 논리적으로 그룹화된 디바이스 모음입니다. 에서 SageMaker Edge Manager를 사용하려면 Edge Manager 에이전트를 SageMaker 배포하는 Greengrass 코어 장치와 동일한 AWS IoT 역할 별칭을 사용하는 에지 장치 집합을 만들어야 합니다. AWS IoT Greengrass그런 다음 코어 디바이스를 해당 플릿의 일부로 등록해야 합니다.

에지 디바이스 플릿 생성

에지 디바이스 플릿을 만들려면 (콘솔)
  1. Amazon SageMaker 콘솔에서 Edge Manager를 선택한 다음 Edge 디바이스 플릿을 선택합니다.

  2. 디바이스 플릿 페이지에서 디바이스 플릿 생성을 선택합니다.

  3. 디바이스 플릿 속성에서 다음을 수행하십시오.

    • 디바이스 플릿 이름에 디바이스 플릿의 이름을 입력합니다.

    • IAM역할에는 Greengrass 코어 디바이스를 설정할 때 지정한 AWS IoT 역할 별칭의 Amazon 리소스 이름 (ARN) 을 입력합니다.

    • IAM역할 별칭 생성 토글을 비활성화합니다.

  4. Next(다음)를 선택합니다.

  5. 출력 구성에서 S3 URI 버킷에 대해 디바이스 플릿과 연결할 S3 버킷을 입력합니다. URI

  6. 제출을 선택합니다.

그린그래스 코어 디바이스 등록

Greengrass 코어 디바이스를 엣지 디바이스 (콘솔) 로 등록하려면
  1. Amazon SageMaker 콘솔에서 Edge Manager를 선택한 다음 Edge 디바이스를 선택합니다.

  2. 디바이스 페이지에서 디바이스 등록을 선택합니다.

  3. 장치 속성에서 장치 집합 이름에 생성한 장치 집합의 이름을 입력하고 다음을 선택합니다.

  4. Next(다음)를 선택합니다.

  5. 디바이스 소스에서 디바이스 이름에 Greengrass 코어 디바이스의 AWS IoT 사물 이름을 입력합니다.

  6. 제출을 선택합니다.

샘플 구성 요소를 생성합니다.

SageMaker Edge Manager 구성 요소 사용을 시작하는 데 도움이 되도록 샘플 추론 및 모델 구성 요소를 만들고 이를 자동으로 업로드하는 Python 스크립트를 AWS 제공합니다. GitHub AWS 클라우드 개발 컴퓨터에서 다음 단계를 완료하세요.

샘플 구성 요소를 만들려면
  1. AWS IoT Greengrass 구성 요소 예제 저장소를 개발 컴퓨터에 다운로드하십시오. GitHub

  2. 다운로드한 /machine-learning/sagemaker-edge-manager 폴더로 이동합니다.

    cd download-directory/machine-learning/sagemaker-edge-manager
  3. 다음 명령을 실행하여 샘플 구성 요소를 만들고 에 AWS 클라우드업로드합니다.

    python3 create_components.py -r region -b amzn-s3-demo-bucket

    Replace region Greengrass 코어 디바이스를 생성한 AWS 리전 위치로 이동하고, amzn-s3-demo-bucket1을 S3 버킷 이름으로 바꾸어 구성 요소 아티팩트를 저장합니다.

    참고

    기본적으로 스크립트는 이미지 분류와 객체 감지 추론을 위한 샘플 구성 요소를 생성합니다. 특정 유형의 추론에만 사용할 구성 요소를 만들려면 인수를 지정하십시오. -i ImageClassification | ObjectDetection

이제 SageMaker Edge Manager와 함께 사용할 샘플 추론 및 모델 구성 요소가 에서 생성되었습니다. AWS 계정AWS IoT Greengrass 콘솔에서 샘플 구성 요소를 보려면 구성 요소를 선택한 다음 내 구성 요소에서 다음 구성 요소를 검색하십시오.

  • com.greengrass.SageMakerEdgeManager.ImageClassification

  • com.greengrass.SageMakerEdgeManager.ImageClassification.Model

  • com.greengrass.SageMakerEdgeManager.ObjectDetection

  • com.greengrass.SageMakerEdgeManager.ObjectDetection.Model

샘플 이미지 분류 추론 실행

AWS제공된 샘플 구성 요소와 SageMaker Edge Manager 에이전트를 사용하여 이미지 분류 추론을 실행하려면 이러한 구성 요소를 코어 장치에 배포해야 합니다. 이러한 구성 요소를 배포하면 SageMaker NEO로 컴파일된 사전 학습된 Resnet-50 모델이 다운로드되고 장치에 Edge Manager 에이전트가 설치됩니다. SageMaker SageMaker Edge Manager 에이전트는 모델을 로드하고 주제에 대한 추론 결과를 게시합니다. gg/sageMakerEdgeManager/image-classification 이러한 추론 결과를 보려면 AWS IoT 콘솔의 AWS IoT MQTT 클라이언트를 사용하여 이 주제를 구독하십시오.

알림 주제를 구독하세요.

이 단계에서는 샘플 추론 구성 요소가 게시한 MQTT 메시지를 감시하도록 AWS IoT 콘솔에서 AWS IoT MQTT 클라이언트를 구성합니다. 기본적으로 구성 요소는 주제에 대한 추론 결과를 게시합니다. gg/sageMakerEdgeManager/image-classification Greengrass 코어 디바이스에 구성 요소를 배포하기 전에 이 항목을 구독하여 구성 요소가 처음 실행될 때의 추론 결과를 확인하십시오.

기본 알림 주제를 구독하려면
  1. AWS IoT 콘솔 탐색 메뉴에서 테스트, MQTT 테스트 클라이언트를 선택합니다.

  2. 주제 구독의 주제 이름 상자에 를 입력합니다gg/sageMakerEdgeManager/image-classification.

  3. 구독을 선택합니다.

샘플 구성 요소 배포

이 단계에서는 다음 구성 요소를 구성하고 코어 장치에 배포합니다.

  • aws.greengrass.SageMakerEdgeManager

  • com.greengrass.SageMakerEdgeManager.ImageClassification

  • com.greengrass.SageMakerEdgeManager.ImageClassification.Model

  1. AWS IoT Greengrass 콘솔 탐색 메뉴에서 [Deployments] 를 선택한 다음 수정하려는 대상 장치의 배포를 선택합니다.

  2. 배포 페이지에서 수정을 선택한 다음 배포 개정을 선택합니다.

  3. 대상 지정 페이지에서 다음을 선택합니다.

  4. 구성 요소 선택 페이지에서 다음을 수행합니다.

    1. 내 구성 요소에서 다음 구성 요소를 선택합니다.

      • com.greengrass.SageMakerEdgeManager.ImageClassification

      • com.greengrass.SageMakerEdgeManager.ImageClassification.Model

    2. 공용 구성 요소에서 선택한 구성 요소만 표시 토글을 끄고 aws.greengrass.SageMakerEdgeManager 구성 요소를 선택합니다.

    3. Next(다음)를 선택합니다.

  5. 구성 요소 구성 페이지에서 구성 aws.greengrass.SageMakerEdgeManager 요소를 선택하고 다음을 수행합니다.

    1. 구성 요소 구성을 선택합니다.

    2. 구성 업데이트 아래에 있는 병합할 구성에 다음 구성을 입력합니다.

      { "DeviceFleetName": "device-fleet-name", "BucketName": "amzn-s3-demo-bucket" }

      Replace device-fleet-name 생성한 에지 디바이스 플릿의 이름을 사용하여 교체합니다.amzn-s3-demo-bucket 디바이스 플릿과 연결된 S3 버킷의 이름과 함께.

    3. 확인을 선택하고 다음을 선택합니다.

  6. 고급 설정 구성 페이지에서 기본 구성 설정을 유지하고 다음을 선택합니다.

  7. 검토 페이지에서 [Deploy] 를 선택합니다.

  1. 개발 컴퓨터에서 SageMaker Edge Manager 구성 요소의 배포 구성을 정의하는 deployment.json 파일을 만듭니다. 이 파일은 다음 예제와 비슷합니다.

    { "targetArn":"targetArn", "components": { "aws.greengrass.SageMakerEdgeManager": { "componentVersion": "1.0.x", "configurationUpdate": { "merge": "{\"DeviceFleetName\":\"device-fleet-name\",\"BucketName\":\"amzn-s3-demo-bucket2\"}" } }, "com.greengrass.SageMakerEdgeManager.ImageClassification": { "componentVersion": "1.0.x", "configurationUpdate": { } }, "com.greengrass.SageMakerEdgeManager.ImageClassification.Model": { "componentVersion": "1.0.x", "configurationUpdate": { } }, } }
    • targetArn필드에서 배포 대상으로 지정할 사물 또는 사물 그룹의 Amazon Resource Name (ARN) 을 다음 형식으로 targetArn 대체합니다.

      • 사물: arn:aws:iot:region:account-id:thing/thingName

      • 사물 그룹: arn:aws:iot:region:account-id:thinggroup/thingGroupName

    • merge필드에서 다음을 대체하십시오.device-fleet-name 생성한 에지 디바이스 플릿의 이름으로. 그런 다음 교체하십시오.amzn-s3-demo-bucket2 디바이스 플릿과 연결된 S3 버킷의 이름을 입력합니다.

    • 각 구성 요소의 구성 요소 버전을 사용 가능한 최신 버전으로 바꿉니다.

  2. 다음 명령을 실행하여 디바이스에 구성 요소를 배포합니다.

    aws greengrassv2 create-deployment \ --cli-input-json file://path/to/deployment.json

배포를 완료하는 데 몇 분 정도 걸릴 수 있습니다. 다음 단계에서는 구성 요소 로그를 확인하여 배포가 정상적으로 완료되었는지 확인하고 추론 결과를 확인합니다.

추론 결과 보기

구성 요소를 배포한 후에는 Greengrass 코어 디바이스의 구성 요소 로그와 콘솔의 클라이언트에서 AWS IoT 추론 결과를 볼 수 있습니다. AWS IoT MQTT 구성 요소가 추론 결과를 게시하는 주제를 구독하려면 을 참조하십시오. 알림 주제를 구독하세요.

  • AWS IoT MQTT클라이언트 - 추론 구성 요소가 기본 알림 주제에 게시하는 결과를 보려면 다음 단계를 완료하십시오.

    1. AWS IoT 콘솔 탐색 메뉴에서 테스트, MQTT 테스트 클라이언트를 선택합니다.

    2. 구독에서 을 선택합니다gg/sageMakerEdgeManager/image-classification.

     

  • 구성 요소 로그 - 구성 요소 로그에서 추론 결과를 보려면 Greengrass 코어 장치에서 다음 명령을 실행합니다.

    sudo tail -f /greengrass/v2/logs/com.greengrass.SageMakerEdgeManager.ImageClassification.log

구성 요소 로그나 MQTT 클라이언트에서 추론 결과를 볼 수 없다면 배포가 실패했거나 코어 디바이스에 도달하지 못한 것입니다. 이는 코어 기기가 인터넷에 연결되어 있지 않거나 구성 요소를 실행할 수 있는 적절한 권한이 없는 경우 발생할 수 있습니다. 코어 장치에서 다음 명령을 실행하여 AWS IoT Greengrass Core 소프트웨어 로그 파일을 확인합니다. 이 파일에는 Greengrass 코어 기기 배포 서비스의 로그가 포함되어 있습니다.

sudo tail -f /greengrass/v2/logs/greengrass.log

자세한 내용은 머신 러닝 추론 문제 해결 단원을 참조하십시오.