Amazon SageMaker 모델을 다른 AWS 계정에 배포하려면 어떻게 해야 하나요?

3분 분량
0

AWS 계정에서 Amazon SageMaker 모델을 훈련시키고 있습니다. 이 모델을 다른 AWS 계정의 엔드포인트에 배포하고 싶습니다.

해결 방법

계정 A(샌드박스 계정)

  1. AWS Key Management Service(AWS KMS) 키를 생성합니다. 키 사용 권한 정의 페이지의 다른 AWS 계정 섹션에서 다른 AWS 계정 추가를 선택합니다. 그런 다음 계정 B(모델을 배포하려는 계정)의 AWS 계정 번호를 입력합니다. 이 키를 Amazon SageMaker 훈련 작업에 사용합니다. AWS KMS 키를 지정하지 않는 경우 Amazon SageMaker는 기본적으로 Amazon Simple Storage Service(Amazon S3) 서버 측 암호화 키를 사용합니다. 기본 Amazon S3 서버 측 암호화 키는 다른 AWS 계정과 공유하거나 사용할 수 없습니다.
  2. 훈련 작업을 만들지 않았다면 새로 생성합니다. 예측기 클래스에서 이전 단계에서 생성한 AWS KMS 키를 추가합니다. 다음 예시를 참조하세요.
    linear = sagemaker.estimator.Estimator(
        ...
        output_kms_key='xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
        ...  
        )

계정 B(배포 계정)

  1. 다음 정책과 유사한 두 개의 AWS Identity and Access Management(IAM) 정책을 생성합니다. 이러한 정책은 인라인 정책이므로 IAM 자격 증명(사용자, 그룹 또는 역할)에 포함됩니다.

    **인라인 정책 1:**IAM 역할이 모델 아티팩트를 포함하는 계정 A의 Amazon S3 리소스에 액세스하는 것을 허용합니다. awsdoc-example-bucket을 훈련 작업 출력이 저장되는 S3 버킷의 이름으로 바꿉니다.

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "s3:GetObject",
          "Resource": "arn:aws:s3:::awsdoc-example-bucket/sagemaker/linear-learner/output/model.tar.gz"
        }
      ]
    }

    **인라인 정책 2:**향후 IAM 역할이 계정 A의 AWS KMS 키를 사용하는 것을 허용합니다. 리소스에서 계정 A의 ID 및 키 ID를 지정합니다.

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "AllowUseOfTheKey",
          "Effect": "Allow",
          "Action": [
            "kms:Encrypt",
            "kms:Decrypt",
            "kms:ReEncrypt*",
            "kms:GenerateDataKey*",
            "kms:DescribeKey"
          ],
          "Resource": [
            "arn:aws:kms:us-east-1:AccountA:key/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
          ]
        }
      ]
    }
  2. Amazon SageMaker의 IAM 역할을 생성합니다. 이 역할에는 AmazonSageMakerFullAccess 정책이 적용됩니다.

  3. 1단계에서 생성한 두 개의 인라인 정책을 2단계에서 생성한 역할에 연결합니다. 역할에는 세 가지 정책이 적용됩니다. AmazonSageMakerFullAccess 액세스와 두 가지 인라인 정책.

계정 A(샌드박스 계정)

버킷에 대한 S3 버킷 정책을 생성하여 훈련 작업 출력을 저장합니다. 이 버킷 정책이 이전 섹션에서 생성한 역할이 모델 아티팩트에 액세스하는 것을 허용합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::AccountB:root"
      },
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::awsdoc-example-bucket/sagemaker/linear-learner/output/model.tar.gz",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalArn": "arn:aws:iam::AccountB:role/AmazonSageMaker"
        }
      }
    }
  ]
}

**참고:**이 예제에서는 AccountB를 배포 계정의 AWS 계정 ID로 바꿉니다. AmazonSageMaker를 배포 계정에서 생성한 역할 이름으로 바꿉니다. awsdoc-example-bucket을 훈련 작업 출력이 저장되는 S3 버킷으로 바꿉니다.

배포 모델 생성

  1. Amazon SageMaker 콘솔을 엽니다.
  2. 탐색 창의 추론에서 모델을 선택합니다.
  3. 모델 생성을 선택한 다음 모델 이름을 입력합니다.
  4. IAM 역할의 경우 사용자 지정 IAM 역할 ARN 입력을 선택합니다. 그런 다음, 다음과 같이 사용자 지정 ARN을 완성합니다.
    YourAccountID의 경우 계정 B의 ID를 입력합니다.
    YourRole에는 계정 B에서 생성한 IAM 역할의 이름을 입력합니다.
  5. 추론 코드 이미지 위치에는 추론 코드 이미지가 저장되는 레지스트리 경로를 입력합니다. 추론 이미지는 Amazon Elastic Container Registry(Amazon ECR) 또는 프라이빗 Docker 레지스트리에 저장됩니다.
  6. 모델 아티팩트 위치에는 모델 아티팩트가 Amazon S3에 저장되는 URL을 제공합니다.
  7. 페이지 하단에서 모델 생성을 선택합니다. 모델 생성에 대한 자세한 내용은 파이프라인 모델 생성을 참조하세요.

엔드포인트 구성 생성

  1. Amazon SageMaker 콘솔을 엽니다.
  2. 탐색 창의 추론 에서 엔드포인트 구성을 선택합니다.
  3. 엔드포인트 구성 생성을 선택합니다. 그런 다음 프로덕션 변형에서 이전 섹션에서 생성한 모델을 추가합니다.
  4. 엔드포인트 구성 생성을 선택합니다.

엔드포인트 생성

  1. Amazon SageMaker 콘솔을 엽니다.
  2. 탐색 창의 추론에서 엔드포인트를 선택합니다.
  3. 엔드포인트 생성을 선택한 다음 이전 섹션에서 생성한 엔드포인트 구성을 선택합니다.
  4. 엔드포인트 생성을 선택합니다.

이제 계정 A에서 계정 B로 모델을 배포할 준비가 되었습니다.

**참고:**암호화를 위해 Amazon SageMaker 모델을 재훈련하지 않으려는 경우, 사후 처리 단계로 객체를 암호화할 수 있습니다. 기존 객체를 암호화하려면 SSE-KMS로 암호화한 후 고객 관리 키를 사용하여 해당 객체를 그 자체로 복사합니다.

AWS 공식
AWS 공식업데이트됨 8달 전