Edge 디바이스에서 Neo 시작하기 - 아마존 SageMaker

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

Edge 디바이스에서 Neo 시작하기

Amazon SageMaker Neo를 시작하기 위한 이 안내서는 모델을 컴파일하고, 디바이스를 설정하고, 디바이스에서 추론을 수행하는 방법을 보여줍니다. 대부분의 코드 예제는 Boto3를 사용합니다. AWS CLI 해당하는 경우 사용하는 명령과 Neo의 사전 요구 사항을 충족하는 방법에 대한 지침을 제공합니다.

참고

로컬 컴퓨터, SageMaker 노트북, SageMaker Studio 또는 엣지 디바이스 (엣지 디바이스에 따라 다름) 에서 다음 코드 스니펫을 실행할 수 있습니다. 설정은 비슷하지만 SageMaker 노트북 인스턴스 또는 SageMaker 스튜디오 세션 내에서 이 가이드를 실행하는 경우 두 가지 주요 예외가 있습니다.

  • Boto3를 설치할 필요가 없습니다.

  • ‘AmazonSageMakerFullAccess’ IAM 정책을 추가할 필요가 없습니다.

이 가이드에서는 엣지 디바이스에서 다음 지침을 실행하고 있다고 가정합니다.

필수 조건

  1. Boto3 설치

    엣지 디바이스에서 이러한 명령을 실행하는 경우 AWS SDK for Python (Boto3)을 설치해야 합니다. Python 환경(가급적 가상 환경) 내에서 다음을 엣지 디바이스의 터미널이나 Jupyter 노트북 인스턴스 내에서 로컬로 실행합니다.

    Terminal
    pip install boto3
    Jupyter Notebook
    !pip install boto3
  2. AWS 자격 증명 설정

    Python용 SDK(Boto3)를 실행하려면 디바이스에서 Amazon Web Services 자격 증명을 설정해야 합니다. 기본적으로 AWS 자격 증명은 에지 디바이스의 파일에 ~/.aws/credentials 저장되어야 합니다. 자격 증명 파일에는 두 개의 환경 변수인 aws_access_key_idaws_secret_access_key가 표시되어야 합니다.

    터미널에서 다음을 실행합니다.

    $ more ~/.aws/credentials [default] aws_access_key_id = YOUR_ACCESS_KEY aws_secret_access_key = YOUR_SECRET_KEY

    AWS 일반 참조 안내서에는 필요한 aws_access_key_idaws_secret_access_key를 얻는 방법에 대한 지침이 있습니다. 디바이스에서 자격 증명을 설정하는 방법에 대한 자세한 내용은 Boto3 설명서를 참조하세요.

  3. IAM 역할을 설정하고 정책을 연결합니다.

    Neo는 S3 버킷 URI에 액세스해야 합니다. 실행할 수 SageMaker 있고 S3 URI에 액세스할 권한이 있는 IAM 역할을 생성합니다. Python용 SDK(Boto3), 콘솔 또는 AWS CLI를 사용하여 IAM 역할을 생성할 수 있습니다. 다음 예제는 Python용 SDK(Boto3)를 사용하여 IAM 역할을 생성하는 방법을 보여줍니다.

    import boto3 AWS_REGION = 'aws-region' # Create an IAM client to interact with IAM iam_client = boto3.client('iam', region_name=AWS_REGION) role_name = 'role-name'

    콘솔이나 AWS API를 사용하여 IAM 역할을 생성하는 방법에 대한 자세한 내용은 계정에서 IAM 사용자 생성을 참조하십시오. AWS CLI AWS

    연결하려는 IAM 정책을 설명하는 사전을 만드십시오. 이 정책은 새 IAM 역할을 생성하는 데 사용됩니다.

    policy = { 'Statement': [ { 'Action': 'sts:AssumeRole', 'Effect': 'Allow', 'Principal': {'Service': 'sagemaker.amazonaws.com'}, }], 'Version': '2012-10-17' }

    위에서 정의한 정책을 사용하여 새 IAM 역할을 생성합니다.

    import json new_role = iam_client.create_role( AssumeRolePolicyDocument=json.dumps(policy), Path='/', RoleName=role_name )

    이후 단계에서 컴파일 작업을 생성할 때 Amazon 리소스 이름(ARN)이 무엇인지 알아야 하므로 변수에도 저장하세요.

    role_arn = new_role['Role']['Arn']

    이제 새 역할을 생성했으니 Amazon SageMaker 및 Amazon S3와 상호 작용하는 데 필요한 권한을 첨부하십시오.

    iam_client.attach_role_policy( RoleName=role_name, PolicyArn='arn:aws:iam::aws:policy/AmazonSageMakerFullAccess' ) iam_client.attach_role_policy( RoleName=role_name, PolicyArn='arn:aws:iam::aws:policy/AmazonS3FullAccess' );
  4. Amazon S3 버킷을 생성하여 모델 아티팩트를 저장합니다.

    SageMaker Neo는 Amazon S3에서 모델 아티팩트에 액세스합니다.

    Boto3
    # Create an S3 client s3_client = boto3.client('s3', region_name=AWS_REGION) # Name buckets bucket='name-of-your-bucket' # Check if bucket exists if boto3.resource('s3').Bucket(bucket) not in boto3.resource('s3').buckets.all(): s3_client.create_bucket( Bucket=bucket, CreateBucketConfiguration={ 'LocationConstraint': AWS_REGION } ) else: print(f'Bucket {bucket} already exists. No action needed.')
    CLI
    aws s3 mb s3://'name-of-your-bucket' --region specify-your-region # Check your bucket exists aws s3 ls s3://'name-of-your-bucket'/
  5. 기계 훈련 모델 훈련

    Amazon을 사용하여 기계 학습 모델을 학습시키는 방법에 SageMaker 대한 자세한 내용은 Amazon을 통한 모델 학습을 참조하십시오 SageMaker. 선택적으로 로컬에서 훈련된 모델을 Amazon S3 URI 버킷에 직접 업로드할 수 있습니다.

    참고

    사용한 프레임워크에 따라 모델 형식이 올바른지 확인하세요. SageMaker Neo는 어떤 입력 데이터 셰이프를 기대합니까? 를 참조하십시오.

    아직 모델이 없는 경우, curl 명령을 사용하여 웹 사이트에서 coco_ssd_mobilenet TensorFlow 모델의 로컬 사본을 가져오세요. 방금 복사한 모델은 COCO 데이터 세트에서 훈련된 객체 감지 모델입니다. Jupyter 노트북에 다음을 입력합니다.

    model_zip_filename = './coco_ssd_mobilenet_v1_1.0.zip' !curl http://storage.googleapis.com/download.tensorflow.org/models/tflite/coco_ssd_mobilenet_v1_1.0_quant_2018_06_29.zip \ --output {model_zip_filename}

    참고로 이 예제는.zip 파일로 패키지되었습니다. 이후 단계에서 사용하기 전에 이 파일의 압축을 풀고 압축된 tarfile(.tar.gz)로 다시 패키징하세요. Jupyter 노트북에 다음을 입력합니다.

    # Extract model from zip file !unzip -u {model_zip_filename} model_filename = 'detect.tflite' model_name = model_filename.split('.')[0] # Compress model into .tar.gz so SageMaker Neo can use it model_tar = model_name + '.tar.gz' !tar -czf {model_tar} {model_filename}
  6. 훈련된 모델을 S3 버킷에 업로드

    기계 훈련 모드를 훈련시킨 후에는 S3 버킷에 저장합니다.

    Boto3
    # Upload model s3_client.upload_file(Filename=model_filename, Bucket=bucket, Key=model_filename)
    CLI

    your-model-filenameyour-S3-bucket를 Amazon S3 버킷 이름으로 바꿉니다.

    aws s3 cp your-model-filename s3://your-S3-bucket