SageMaker AI 제공 프로젝트 템플릿 사용 - Amazon SageMaker AI

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

SageMaker AI 제공 프로젝트 템플릿 사용

중요

2024년 10월 28일부터 AWS CodeCommit 템플릿이 제거되었습니다. 새 프로젝트의 경우 타사 Git 리포지토리를 사용하는 사용 가능한 프로젝트 템플릿 중에서 선택하세요.

Amazon SageMaker AI는 ML 모델의 지속적 통합 및 지속적 배포(CI/CD)를 위한 MLOps 솔루션을 생성하는 데 필요한 인프라를 생성하는 프로젝트 템플릿을 제공합니다. 이러한 템플릿을 사용하여 데이터를 처리하고, 기능을 추출하고, 모델을 훈련 및 테스트하고, 모델을 SageMaker 모델 레지스트리에 등록하고, 추론을 위해 모델을 배포합니다. 요구 사항에 맞게 시드 코드와 구성 파일을 사용자 지정할 수 있습니다.

참고

프로젝트 템플릿을 사용하려면 추가 역할이 필요합니다. 필수 역할의 전체 목록과 역할 생성 방법에 대한 지침은 프로젝트를 사용하는 데 필요한 SageMaker Studio 권한 부여섹션을 참조하세요. 새 역할이 없는 경우 새 프로젝트를 생성하려고 할 때 CodePipeline arn:aws:iam::xxx: 역할 AssumeRole 에서를 수행할 권한이 없다는role/service-role/AmazonSageMakerServiceCatalogProductsCodePipelineRole 오류 메시지가 표시됩니다.

SageMaker AI 프로젝트 템플릿은 다음과 같은 코드 리포지토리, 워크플로 자동화 도구 및 파이프라인 단계를 제공합니다.

  • 코드 리포지토리: GitHub 및 Bitbucket과 같은 타사 Git 리포지토리

  • CI/CD 워크플로 자동화: AWS CodePipeline 또는 Jenkins

  • 파이프라인 단계: 모델 구축 및 훈련, 모델 배포 또는 둘 다

다음 설명에서는 SageMaker AI 프로젝트를 생성할 때 선택할 수 있는 각 템플릿의 개요를 제공합니다. 프로젝트 생성 연습에 따라 Studio(또는 Studio Classic)에서 사용 가능한 템플릿을 볼 수도 있습니다. https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-projects-walkthrough.html

실제 프로젝트를 생성하는 방법에 대한 지침은 step-by-step 프로젝트 연습 중 하나를 따르세요.

주제
    • 코드 리포지토리: 타사 Git입니다.

      참고

      AWS 계정에서 GitHub 사용자 또는 조직으로의 AWS CodeStar 연결을 설정합니다. 키sagemaker와 값이 있는 태그를이 AWS CodeStar 연결true에 추가합니다.

    • CI/CD 워크플로 자동화: AWS CodePipeline

    모델 구축 및 훈련

    이 템플릿은 다음 리소스를 제공합니다.

    • 고객 지정 Git 리포지토리 하나와의 연결. 리포지토리에는 Python 코드에서 Amazon SageMaker AI 파이프라인을 생성하는 샘플 코드가 포함되어 있으며 SageMaker AI 파이프라인을 생성하고 업데이트하는 방법을 보여줍니다. 이 리포지토리에는 Studio(또는 Studio Classic)에서 열고 실행할 수 있는 샘플 Python 노트북도 있습니다.

    • 소스 및 빌드 단계가 있는 AWS CodePipeline 파이프라인입니다. 소스 단계는 타사 Git 리포지토리를 가리킵니다. 빌드 단계는 해당 리포지토리에서 코드를 가져오고, SageMaker AI 파이프라인을 생성 및 업데이트하고, 파이프라인 실행을 시작하고, 파이프라인 실행이 완료될 때까지 기다립니다.

    • Git 리포지토리를 시드 코드 정보로 채우는 AWS CodeBuild 프로젝트입니다. 이렇게 하려면에서 Git 리포지토리 호스트의 계정으로 AWS CodeStar 연결해야 AWS 계정 합니다.

    • CodePipeline 및 아티팩트를 포함한 CodeBuild 아티팩트와 SageMaker AI 파이프라인에서 생성된 모든 아티팩트를 저장하는 Amazon S3 버킷이 실행됩니다.

    모델 배포

    이 템플릿은 다음 리소스를 제공합니다.

    • 고객 지정 Git 리포지토리 하나와의 연결. 리포지토리에는 스테이징 및 프로덕션 환경의 엔드포인트에 모델을 배포하는 샘플 코드가 포함되어 있습니다.

    • 소스 deploy-to-staging, 빌드 및 deploy-to-production 단계가 있는 AWS CodePipeline 파이프라인입니다. 소스 단계는 타사 Git 리포지토리를 가리키고 빌드 단계는 해당 리포지토리에서 코드를 가져와서 배포할 AWS CloudFormation 스택을 생성합니다. deploy-to-staging 및 deploy-to-production 단계는 AWS CloudFormation 스택을 해당 환경에 배포합니다. 스테이징 단계와 프로덕션 빌드 단계 사이에는 수동 승인 단계가 있으므로 MLOps 엔지니어가 모델을 프로덕션에 배포하기 전에 승인해야 합니다.

    • Git 리포지토리를 시드 코드 정보로 채우는 AWS CodeBuild 프로젝트입니다. 이렇게 하려면에서 Git 리포지토리 호스트의 계정으로 AWS CodeStar 연결해야 AWS 계정 합니다.

    • CodePipeline 및 아티팩트를 포함한 CodeBuild 아티팩트와 SageMaker AI 파이프라인에서 생성된 모든 아티팩트를 저장하는 Amazon S3 버킷이 실행됩니다.

    모델 구축, 훈련 및 배포

    이 템플릿은 다음 리소스를 제공합니다.

    • 하나 이상의 고객 지정 Git 리포지토리와의 연결.

    • 소스 deploy-to-staging, 빌드 및 deploy-to-production 단계가 있는 AWS CodePipeline 파이프라인입니다. 소스 단계는 타사 Git 리포지토리를 가리키고 빌드 단계는 해당 리포지토리에서 코드를 가져와서 배포할 스택을 생성합니다 CloudFormation. deploy-to-staging 및 deploy-to-production 단계는 CloudFormation 스택을 해당 환경에 배포합니다. 스테이징 단계와 프로덕션 빌드 단계 사이에는 수동 승인 단계가 있으므로 MLOps 엔지니어가 모델을 프로덕션에 배포하기 전에 승인해야 합니다.

    • Git 리포지토리를 시드 코드 정보로 채우는 AWS CodeBuild 프로젝트입니다. 이렇게 하려면 AWS 계정에서 Git 리포지토리 호스트의 계정으로 AWS CodeStar 연결해야 합니다.

    • CodePipeline 및 아티팩트를 포함한 CodeBuild 아티팩트와 SageMaker AI 파이프라인에서 생성된 모든 아티팩트를 저장하는 Amazon S3 버킷이 실행됩니다.

    앞서 언급한 것처럼 이 템플릿을 사용하여 실제 프로젝트를 만드는 데모는 타사 Git 리포지토리를 사용한 프로젝트 안내서를 참조하세요.

    • 코드 리포지토리: 타사 Git입니다.

      참고

      AWS 계정에서 GitHub 사용자 또는 조직으로의 AWS CodeStar 연결을 설정합니다. 키sagemaker와 값이 있는 태그를이 AWS CodeStar 연결true에 추가합니다.

    • CI/CD 워크플로 자동화: AWS CodePipeline

    다음 템플릿에는 다음과 같은 유형의 모니터링을 제공하는 추가 Amazon SageMaker Model Monitor 템플릿이 포함되어 있습니다.

    모델 구축, 훈련, 배포 및 Amazon SageMaker Model Monitor

    이 템플릿은를 사용하여 Git 리포지토리를 사용하여 모델 구축, 훈련 및 배포하기 위한 MLOps 템플릿의 확장입니다 CodePipeline. 여기에는 템플릿의 모델 구축, 훈련 및 배포 구성 요소와 다음 유형의 모니터링을 제공하는 추가 Amazon SageMaker Model Monitor 템플릿이 모두 포함됩니다.

    배포된 모델 모니터링

    솔루션에이 템플릿을 사용하여 Amazon SageMaker AI 데이터 품질, 모델 품질, 모델 편향 및 모델 설명 가능성 모니터 중 하나 이상을 MLOps 배포하여 SageMaker AI 추론 엔드포인트에서 배포된 모델을 모니터링할 수 있습니다. 이 템플릿은 다음 리소스를 제공합니다.

    • 하나 이상의 고객 지정 Git 리포지토리와의 연결. 리포지토리에는 Amazon SageMaker 모델 레지스트리에서 모니터가 사용하는 기준을 가져오고 스테이징 및 프로덕션 환경에 대한 템플릿의 파라미터를 업데이트하는 샘플 Python 코드가 포함되어 있습니다. 또한 Amazon SageMaker 모델 모니터를 생성하기 위한 AWS CloudFormation 템플릿도 포함되어 있습니다.

    • 소스, 빌드 및 배포 단계가 있는 AWS CodePipeline 파이프라인입니다. 소스 단계는 CodePipeline 리포지토리를 가리킵니다. 빌드 단계는 해당 리포지토리에서 코드를 가져오고, 모델 레지스트리에서 기준을 가져오고, 스테이징 및 프로덕션 환경을 위한 템플릿 파라미터를 업데이트합니다. 배포 단계에서는 구성된 모니터를 스테이징 및 프로덕션 환경에 배포합니다. DeployStaging 단계 내의 수동 승인 단계에서는 승인 및 DeployProd 단계로 이동하기 InService 전에 프로덕션 SageMaker AI 엔드포인트가 있는지 확인해야 합니다.

    • Git 리포지토리를 시드 코드 정보로 채우는 AWS CodeBuild 프로젝트입니다. 이렇게 하려면에서 Git 리포지토리 호스트의 계정으로 AWS CodeStar 연결해야 AWS 계정 합니다.

    • 템플릿은 모델 구축, 훈련 및 배포를 위해 MLOps 템플릿에서 생성한 것과 동일한 Amazon S3 버킷을 사용하여 모니터의 출력을 저장합니다.

    • 두 개의 Amazon EventBridge 이벤트 규칙은 스테이징 SageMaker AI 엔드포인트가 업데이트될 AWS CodePipeline 때마다 Amazon SageMaker 모델 모니터를 시작합니다.

    • 코드 리포지토리: 타사 Git입니다.

      참고

      AWS 계정에서 GitHub 사용자 또는 조직으로의 AWS CodeStar 연결을 설정합니다. 키sagemaker와 값이 있는 태그를이 AWS CodeStar 연결true에 추가합니다.

    • CI/CD 워크플로 자동화: Jenkins

    모델 구축, 훈련 및 배포

    이 템플릿은 다음 리소스를 제공합니다.

    • 하나 이상의 고객 지정 Git 리포지토리와의 연결.

    • 소스, 빌드, deploy-to-staging및 deploy-to-production 단계가 있는 Jenkins 파이프라인을 생성하는 시드 코드입니다. 소스 단계는 고객 지정 Git 리포지토리를 가리킵니다. 빌드 단계는 해당 리포지토리에서 코드를 가져와 두 개의 CloudFormation 스택을 생성합니다. 배포 단계는 CloudFormation 스택을 각 환경에 배포합니다. 스테이징 단계와 프로덕션 단계 사이에는 승인 단계가 있습니다.

    • Git 리포지토리를 시드 코드 정보로 채우는 AWS CodeBuild 프로젝트입니다. 이렇게 하려면 AWS 계정에서 Git 리포지토리 호스트의 계정으로 AWS CodeStar 연결해야 합니다.

    • AI 프로젝트 및 SageMaker AI SageMaker 파이프라인의 아티팩트를 저장하는 Amazon S3 버킷입니다.

    템플릿은 프로젝트와 소스 제어 리포지토리 간의 연결을 생성하지만 AWS 계정과 Jenkins 간의 통신을 설정하려면 추가 수동 단계를 수행해야 합니다. 자세한 단계는 타사 소스 제어 및 Jenkins를 사용하여 Amazon SageMaker 프로젝트 생성을 참조하세요.

    지침은 다음 다이어그램에 표시된 아키텍처를 빌드하는 데 도움이 됩니다.이 예제에서는를 소스 제어 리포지토리 GitHub 로 사용합니다. 그림과 같이 Git 리포지토리를 프로젝트에 연결하여 코드 버전을 체크인하고 관리합니다. Jenkins는 Git 리포지토리에서 모델 빌드 코드의 변경 사항을 감지하면 모델 빌드 파이프라인을 시작합니다. 또한 프로젝트를 Jenkins에 연결하여 모델 배포 단계를 오케스트레이션합니다.모델 배포 단계는 모델 레지스트리에 등록된 모델을 승인하거나 Jenkins가 모델 배포 코드의 변경 사항을 감지할 때 시작됩니다.

    프로젝트 템플릿을 사용하여 빌드된 파이프라인의 워크플로입니다.

    요약하면 단계는 다음 작업을 통해 안내합니다.

    1. AWS 와 GitHub 계정 간에 연결을 설정합니다.

    2. Jenkins 계정을 만들고 필요한 플러그인을 가져옵니다.

    3. Jenkins IAM 사용자 및 권한 정책을 생성합니다.

    4. Jenkins 서버에서 Jenkins IAM 사용자의 AWS 자격 증명을 설정합니다.

    5. Jenkins 서버와의 통신을 위한 API 토큰을 생성합니다.

    6. CloudFormation 템플릿을 사용하여 새로 승인된 모델의 모델 레지스트리를 모니터링하는 EventBridge 규칙을 설정합니다.

    7. 모델 빌드 및 배포 코드를 사용하여 GitHub 리포지토리를 시드하는 SageMaker AI 프로젝트를 생성합니다.

    8. 모델 빌드 시드 코드를 사용하여 Jenkins 모델 빌드 파이프라인을 생성합니다.

    9. 모델 배포 시드 코드를 사용하여 Jenkins 모델 배포 파이프라인을 생성합니다.

    이 템플릿은 MLOps를 사용하여 타사 Git을 사용하여 모델 구축, 훈련 및 배포하기 위한 템플릿 CodePipeline의 확장입니다. 여기에는 해당 템플릿의 모델 구축, 훈련 및 배포 구성 요소와 다음 옵션이 모두 포함됩니다.

    • 처리 이미지–파이라인 구축 포함

    • 훈련 이미지–파이라인 구축 포함

    • 추론 이미지–파이라인 구축 포함

    템플릿을 사용하여 프로젝트 생성 중에 선택한 각 구성 요소에 대해 다음이 생성됩니다.

    • Amazon ECR리포지토리

    • SageMaker AI 이미지

    • 사용자 지정할 수 있는 Dockerfile이 포함된 CodeCommit 리포지토리

    • CodePipeline 리포지토리 변경으로 시작 CodePipeline 되는

    • Docker 이미지를 빌드하여 Amazon ECR리포지토리에 등록하는 CodeBuild 프로젝트

    • 일정에 CodePipeline 따라를 시작하는 EventBridge 규칙

    CodePipeline 이 시작되면 새 Docker 컨테이너를 빌드하고 Amazon ECR리포지토리에 등록합니다. Amazon ECR리포지토리에 새 컨테이너가 등록되면 SageMaker AI 이미지에 새 ImageVersion 컨테이너가 추가됩니다. 그러면 모델 구축 파이프라인이 시작되고, 배포 파이프라인이 시작됩니다.

    새로 생성된 이미지는 해당하는 경우 워크플로의 모델 구축, 훈련 및 배포 부분에 사용됩니다.

    AmazonSageMakerServiceCatalogProductsUseRole 역할에 연결된 관리형 정책은 타사 Git 템플릿과 함께 사용할 수 있도록 2021년 7월 27일에 업데이트되었습니다. 이 날짜 이후에 Amazon SageMaker Studio(또는 Studio Classic)에 온보딩하고 프로젝트 템플릿을 활성화하는 사용자는 새 정책을 사용합니다. 이 날짜 이전에 온보딩한 사용자는 이러한 템플릿을 사용하려면 정책을 업데이트해야 합니다. 다음 중 하나를 사용하여 정책을 업데이트합니다.

    • 역할 삭제 및 Studio(또는 Studio Classic) 설정 전환

      1. IAM 콘솔에서를 삭제합니다AmazonSageMakerServiceCatalogProductsUseRole.

      2. Studio(또는 Studio Classic) 컨트롤 패널에서 설정 편집을 선택합니다.

      3. 두 설정을 모두 전환한 다음 제출을 선택합니다.

    • IAM 콘솔에서에 다음 권한을 추가합니다AmazonSageMakerServiceCatalogProductsUseRole.

      { "Effect": "Allow", "Action": [ "codestar-connections:UseConnection" ], "Resource": "arn:aws:codestar-connections:*:*:connection/*", "Condition": { "StringEqualsIgnoreCase": { "aws:ResourceTag/sagemaker": "true" } } }, { "Effect": "Allow", "Action": [ "s3:PutObjectAcl" ], "Resource": [ "arn:aws:s3:::sagemaker-*" ] }