제퍼넷 로고

Amazon SageMaker Pipelines를 사용한 다중 계정 모델 배포

시간

Amazon SageMaker 파이프 라인 처음으로 특별히 제작 된 CI/CD 머신 러닝 (ML)을위한 서비스입니다. 엔드 투 엔드 ML 워크 플로를 구축, 자동화, 관리 및 확장하고 CI / CD의 DevOps 모범 사례를 ML (MLOps라고도 함)에 적용하는 데 도움이됩니다.

조직의 모든 리소스를 구성하기 위해 여러 계정을 만드는 것은 좋은 DevOps 사례. 다중 계정 전략은 거버넌스를 개선 할뿐만 아니라 조직의 비즈니스를 지원하는 리소스의 보안 및 제어를 향상시키는데도 중요합니다. 이 전략을 사용하면 조직 내 여러 팀이 더 빠르게 실험, 혁신 및 통합하는 동시에 생산 환경을 안전하게 유지하고 고객에게 제공 할 수 있습니다.

파이프 라인을 사용하면 ML 모델 배포에 동일한 전략을 쉽게 적용 할 수 있습니다. 데이터 과학, 스테이징 및 프로덕션의 각 환경에 하나씩 세 개의 서로 다른 AWS 계정이있는 사용 사례를 상상해보십시오. 데이터 과학자는 언제든지 자신의 계정에서 실험을 실행하고 다양한 모델을 학습 및 최적화 할 수 있습니다. 모델이 프로덕션 환경에 배포하기에 충분할 때 데이터 과학자는 모델 승인 상태를 다음과 같이 변경하면됩니다. Approved. 그 후 자동화 된 프로세스가 스테이징 계정에 모델을 배포합니다. 여기에서 단위 테스트 또는 통합 테스트를 사용하여 모델 테스트를 자동화하거나 모델을 수동으로 테스트 할 수 있습니다. 수동 또는 자동 승인 후 모델은 실제 데이터에 대한 추론을 제공하는 데 사용되는보다 엄격하게 제어되는 환경 인 프로덕션 계정에 배포됩니다. Pipelines를 사용하면 바로 사용할 수있는 다중 계정 환경을 구현할 수 있습니다.

이 게시물에서는 Pipelines를 사용하여 고유 한 다중 계정 ML 파이프 라인을 구현하는 방법을 알아 봅니다. 먼저 환경을 구성하고 미리 정의 된 템플릿을 SageMaker 프로젝트 스테이징 및 프로덕션의 두 가지 다른 계정에서 모델을 교육하고 배포합니다. 그런 다음이 사용자 지정 템플릿이 생성 된 방법과 자체 SageMaker 프로젝트에 대한 템플릿을 생성하고 사용자 지정하는 방법을 자세히 볼 수 있습니다.

환경 준비

이 섹션에서는 세 가지 AWS 계정을 구성하고 SageMaker 스튜디오 CI / CD 파이프 라인을 데이터 과학자가 만든 ML 파이프 라인과 통합하는 프로젝트를 생성합니다. 다음 다이어그램은 SageMaker 사용자 지정 프로젝트에서 생성 한 환경의 참조 아키텍처와 AWS 조직 다른 계정을 통합합니다.

다음 다이어그램은 SageMaker 사용자 지정 프로젝트에서 생성 된 환경의 참조 아키텍처와 AWS Organizations가 다른 계정을 통합하는 방법을 보여줍니다.

다이어그램에는 조직에서 관리하는 세 개의 서로 다른 계정이 있습니다. 또한 세 가지 다른 사용자 역할 (동일한 사람 일 수 있음)이이 환경을 운영합니다.

  • ML 엔지니어 – CI / CD 파이프 라인, 모델 레지스트리 및 기타 리소스를 생성하는 SageMaker Studio 프로젝트 프로비저닝을 담당합니다.
  • 데이터 과학자 – 모델 그룹에 등록 된 훈련 된 모델로 끝나는 ML 파이프 라인 생성을 담당합니다 (또는 모델 패키지 그룹)
  • 승인자 – 스테이징 계정에 배포 된 모델 테스트 및 프로덕션 배포 승인을 담당합니다.

원하는 경우 조직없이 유사한 솔루션을 실행할 수 있습니다 (권장되지는 않음). 그러나 수동으로 계정 간의 권한 및 신뢰 관계를 준비하고 템플릿을 수정하여 조직 종속성을 제거해야합니다. 또한 여러 AWS 계정 및 팀이있는 기업인 경우 다음을 사용하는 것이 좋습니다. AWS 관제탑 계정 및 조직을 프로비저닝합니다. AWS Control Tower는 새롭고 안전한 다중 계정 AWS 환경을 설정하고 관리하는 가장 쉬운 방법을 제공합니다. 이 게시물에서는 조직과 함께 솔루션 구현에 대해서만 논의합니다.

그러나 계속 진행하기 전에 다음 섹션에서 자세히 설명하는 다음 단계를 완료해야합니다.

  1. 데이터 과학자가 사용할 AWS 계정 (데이터 과학 계정)을 생성합니다.
  2. 만들기 및 구성 SageMaker Studio 도메인 데이터 과학 계정에 있습니다.
  3. 프로덕션 및 스테이징을위한 두 개의 추가 계정을 만듭니다.
  4. 조직을 사용하여 조직 구조를 만든 다음 추가 계정을 초대하고 통합합니다.
  5. 파이프 라인을 실행하고 외부 계정에 모델을 배포하는 데 필요한 권한을 구성합니다.
  6. 여러 계정에 모델을 배포하기 위해 SageMaker 프로젝트 템플릿을 가져와 SageMaker Studio에서 사용할 수 있도록합니다.

계정에서 SageMaker Studio 구성

파이프 라인은 다음에 대한 기본 지원을 제공합니다. MLOps 템플릿 ML 프로젝트에 CI / CD를 쉽게 사용할 수 있습니다. 이러한 MLOps 템플릿은 다음과 같이 정의됩니다. 아마존 클라우드포메이션 템플릿 및 게시 AWS 서비스 카탈로그. 이는 ML 용 IDE 인 SageMaker Studio를 통해 데이터 과학자에게 제공됩니다. 계정에서 Studio를 구성하려면 다음 단계를 완료하십시오.

  1. SageMaker Studio 도메인 준비.
  2. 이 계정 및 Studio 사용자에 대해 SageMaker 프로젝트 템플릿 및 SageMaker JumpStart 활성화.

기존 도메인이있는 경우 도메인 또는 개별 사용자에 대한 설정을 편집하여이 옵션을 활성화 할 수 있습니다. 이 옵션을 활성화하면 두 개의 서로 다른 AWS 자격 증명 및 계정 관리 (IAM) AWS 계정의 역할 :

  • AmazonSageMakerServiceCatalogProductsLaunchRole – SageMaker에서 프로젝트 템플릿을 실행하고 필요한 인프라 리소스를 생성하는 데 사용됩니다.
  • AmazonSageMakerServiceCatalog제품사용역할 – CI / CD 파이프 라인에서 작업을 실행하고 대상 계정에 모델을 배포하는 데 사용됩니다.

re : Invent 2020 이전에 SageMaker Studio 도메인을 생성 한 경우 진행중인 모든 작업을 저장하여 환경을 새로 고치는 것이 좋습니다. 에 입양 부모로서의 귀하의 적합성을 결정하기 위해 미국 이민국에 메뉴, 선택 종료선택을 확인하십시오.

  1. 아직 준비하지 않은 경우 스테이징 및 프로덕션을위한 두 개의 다른 AWS 계정을 만들고 준비합니다.

조직 구성

조직의 구조에 데이터 과학 계정과 두 개의 추가 계정을 추가해야합니다. Organizations는 AWS 리소스를 확장하고 확장함에 따라 환경을 중앙에서 관리하고 관리하는 데 도움이됩니다. 무료이며 거버넌스 전략에 도움이됩니다.

각 계정은 다른 계정에 추가되어야합니다. 조직 단위 (OU).

  1. 조직 콘솔에서 다음과 같은 OU 구조를 만듭니다.
  • 뿌리
    • multi-account-deploymen티(OU)
      • 111111111111 (데이터 과학 계정-SageMaker Studio)
      • production (OU)
        • 222222222222 (AWS 계정)
      • staging (OU)
        • 333333333333 (AWS 계정)

조직을 구성한 후 각 계정 소유자는 초대를받습니다. 소유자는 초대를 수락해야합니다. 그렇지 않으면 계정이 조직에 포함되지 않습니다.

  1. 이제 너는 ~해야 해. AWS 조직에서 신뢰할 수있는 액세스 활성화 ( "모든 기능 활성화"및 "StackSets에서 신뢰할 수있는 액세스 활성화").

이 프로세스를 통해 데이터 과학 계정이 대상 계정의 리소스를 프로비저닝 할 수 있습니다. 그렇게하지 않으면 배포 프로세스가 실패합니다. 또한이 기능 세트는 조직과 작업하는 데 선호되는 방법이며 청구 기능 통합이 포함됩니다.

  1. 다음으로 조직 콘솔에서 계정 구성.
  2. 왼쪽 메뉴에서 각색.
  3. OU ID를 기록해 둡니다.
  4. 이 과정을 반복하십시오. production 오.

프로덕션 OU에 대해이 프로세스를 반복합니다.

권한 구성

각 추가 계정에서 SageMaker 실행 역할을 생성해야합니다. 이러한 역할은 AmazonSageMakerServiceCatalogProductsUseRole 데이터 과학 계정에서 대상 계정에 엔드 포인트를 배포하고 테스트합니다.

  1. 에 로그인 AWS 관리 콘솔 스테이징 계정으로.
  2. 다음을 실행하십시오 CloudFormation 템플릿.

이 템플릿은 새 SageMaker 역할을 생성합니다.

  1. 다음 매개 변수를 제공하십시오.
    1. SageMakerRoleSuffix – 다음 접두사 뒤에 역할 이름에 추가되는 짧은 문자열 (공백이나 영숫자없이 최대 10 개의 소문자) : sagemaker-role-. 최종 역할 이름은 sagemaker-role-<<sagemaker_role_suffix>>.
    2. 파이프라인 실행 역할Arn – 생성중인 SageMaker 역할을 수임하는 데이터 과학 계정의 역할 ARN. ARN을 찾으려면 데이터 과학 계정으로 콘솔에 로그인하십시오. IAM 콘솔에서 역할 및 검색 AmazonSageMakerServiceCatalogProductsUseRole. 이 역할을 선택하고 ARN (arn:aws:iam::<<data_science_acccount_id>>:role/service-role/AmazonSageMakerServiceCatalogProductsUseRole).
  2. 스테이징 계정에서이 역할을 생성 한 후 프로덕션 계정에 대해이 프로세스를 반복합니다.

이제 데이터 과학 계정에서 다음과 같은 정책을 구성합니다. 아마존 단순 스토리지 서비스 (Amazon S3) 훈련 된 모델을 저장하는 데 사용되는 버킷. 이 게시물에서는 현재 리전의 기본 SageMaker 버킷을 사용합니다. 이름 형식은 다음과 같습니다. sagemaker-<<region>>-<<aws_account_id>>.

  1. Amazon S3 콘솔에서이 버킷을 검색하여 사용중인 리전과 데이터 과학 계정의 ID를 제공합니다.

찾을 수없는 경우이 이름 형식에 따라 새 버킷을 만듭니다.

  1. 권한 탭에서 다음 정책을 추가하십시오.
    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::<<staging_account_id>>:root", "arn:aws:iam::<<production_account_id>>:root" ] }, "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::sagemaker-<<region>>-<<aws_account_id>>", "arn:aws:s3:::sagemaker-<<region>>-<<aws_account_id>>/*" ] } ]
    }

  1. 설정을 저장하십시오.

이제 대상 계정에는 배포 중에 학습 된 모델을 읽을 수있는 권한이 있습니다.

다음 단계는 역할에 새 권한을 추가하는 것입니다. AmazonSageMakerServiceCatalogProductsUseRoleAmazonSageMakerServiceCatalogProductsLaunchRole.

  1. 데이터 과학 계정의 IAM 콘솔에서 역할.
  2. 찾기 AmazonSageMakerServiceCatalogProductsUseRole 역할을 선택하십시오.
  3. 새 정책을 추가하고 다음을 입력하십시오. JSON 코드.
  4. 변경 사항을 저장하십시오.
  5. 이제 AmazonSageMakerServiceCatalogProductsLaunchRole 역할을 선택하고 다음 내용으로 새 정책을 추가하십시오.
    { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::aws-ml-blog/artifacts/sagemaker-pipeline-blog-resources/*" } ]
    }

  1. 변경 사항을 저장하십시오.

그게 다야! 환경이 거의 준비되었습니다. 한 단계 만 더 필요하며 다른 계정에서 모델 학습 및 배포를 시작할 수 있습니다.

사용자 지정 SageMaker Studio 프로젝트 템플릿 가져 오기

이 단계에서는 사용자 지정 프로젝트 템플릿을 가져옵니다.

  1. 데이터 과학 계정으로 콘솔에 로그인합니다.
  2. AWS Service Catalog 콘솔의 행정실선택한다. 포트폴리오.
  3. 왼쪽 메뉴에서 새 포트폴리오 만들기.
  4. 포트폴리오 이름 SageMaker Organization Templates.
  5. 다음 다운로드 이 템플릿 귀하의 컴퓨터에.
  6. 새로운 포트폴리오를 선택하십시오.
  7. 왼쪽 메뉴에서 새 제품 업로드.
  8. 럭셔리 제품명시작하다 Multi Account Deployment.
  9. 럭셔리 상품 설명, 입력 Multi account deployment project.
  10. 럭셔리 소유자, 당신의 이름을 입력.
  11. $XNUMX Million 미만 버전 세부 정보에 대한 방법선택한다. 템플릿 파일 사용.
  12. 왼쪽 메뉴에서 템플릿 업로드.
  13. 다운로드 한 템플릿을 업로드하십시오.
  14. 럭셔리 버전 제목선택한다. 1.0.

나머지 매개 변수는 선택 사항입니다.

  1. 왼쪽 메뉴에서 검토.
  2. 설정을 검토하고 제품 생성.
  3. 왼쪽 메뉴에서 새로 고침 새 제품을 나열합니다.
  4. 방금 만든 제품을 선택하십시오.
  5. 태그 탭에서 다음 태그를 제품에 추가하십시오.
    1. - sagemaker:studio-visibility
    2. 가치관 - True

포트폴리오 세부 정보로 돌아 가면 다음 스크린 샷과 유사한 내용 (다른 ID 포함)이 표시됩니다.

포트폴리오 세부 정보로 돌아 가면 다음 스크린 샷과 유사한 내용 (다른 ID 포함)이 표시됩니다.

  1. 제약 탭에서 제약 만들기.
  2. 럭셔리 프로덕트선택한다. 다중 계정 배포 (방금 만든 제품).
  3. 럭셔리 구속 유형선택한다. 실행.
  4. $XNUMX Million 미만 제약 시작에 대한 방법선택한다. IAM 역할 선택.
  5. 왼쪽 메뉴에서 AmazonSageMakerServiceCatalogProductsLaunchRole.
  6. 왼쪽 메뉴에서 만들기.
  7. 그룹, 역할 및 사용자 탭에서 그룹, 역할, 사용자 추가.
  8. 역할 탭에서 SageMaker Studio 도메인을 구성 할 때 사용한 역할을 선택합니다.
  9. 왼쪽 메뉴에서 액세스 추가.

선택한 역할이 기억 나지 않는 경우 데이터 과학 계정에서 SageMaker 콘솔로 이동하여 아마존 세이지 메이커 스튜디오. 스튜디오에서 요약 섹션, 속성 찾기 실행 역할. 이전 단계에서이 역할의 이름을 검색하십시오.

끝났습니다! 이제이 템플릿을 사용하여 프로젝트를 만들 차례입니다.

프로젝트 만들기

이전 섹션에서는 다중 계정 환경을 준비했습니다. 다음 단계는 새 템플릿을 사용하여 프로젝트를 만드는 것입니다.

  1. 데이터 과학 계정으로 콘솔에 로그인합니다.
  2. SageMaker 콘솔에서 사용자와 함께 SageMaker Studio를 엽니 다.
  3. 선택 구성 요소 및 레지스트리
  4. 드롭 다운 메뉴에서 프로젝트.
  5. 왼쪽 메뉴에서 프로젝트 만들기.

프로젝트 생성을 선택합니다.

프로젝트 만들기 페이지 SageMaker 템플릿 기본적으로 선택됩니다. 이 옵션은 기본 제공 템플릿을 나열합니다. 그러나 다중 계정 배포를 위해 준비한 템플릿을 사용하려고합니다.

  1. 왼쪽 메뉴에서 조직 템플릿.
  2. 왼쪽 메뉴에서 다중 계정 배포.
  3. 왼쪽 메뉴에서 프로젝트 템플릿 선택.

템플릿이 보이지 않으면 이전 섹션의 모든 단계를 올바르게 완료했는지 확인하세요.

템플릿이 보이지 않으면 이전 섹션의 모든 단계를 올바르게 완료했는지 확인하세요.

  1. . 프로젝트 세부 정보 섹션 성함, iris-multi-01을 입력합니다.

프로젝트 이름은 15 자 이하 여야합니다.

  1. . 프로젝트 템플릿 매개 변수, 각 대상 계정 (스테이징 및 프로덕션)에서 만든 역할의 이름을 사용하고 다음 속성을 제공합니다.
    1. SageMakerExecutionRoleStagingName
    2. SageMakerExecutionRoleProdName
  2. 준비 및 프로덕션 OU에 대해 이전에 생성 한 OU ID를 검색하고 다음 속성을 제공합니다.
    1. OrganizationalUnitStagingId
    2. OrganizationalUnitProdId
  3. 왼쪽 메뉴에서 프로젝트 만들기.

프로젝트 생성을 선택합니다.

모든 리소스를 프로비저닝하는 데 몇 분이 걸리며 그 후 프로젝트가 프로젝트 부분. 프로젝트를 선택하면 프로젝트의 메타 데이터가 포함 된 탭이 열립니다. 그만큼 모델 그룹 탭은 프로젝트와 이름이 같은 모델 그룹을 제공합니다. 또한 프로젝트 프로비저닝 중에 생성되었습니다.

모든 리소스를 프로비저닝하는 데 몇 분이 걸리며 그 후 프로젝트가 프로젝트 섹션에 나열됩니다.

이제 데이터 과학자가 모델 학습을 시작할 수있는 환경이 준비되었습니다.

모델 훈련

이제 프로젝트가 준비되었으므로 모델을 학습 할 차례입니다.

  1. 를 다운로드 노트북 예 이 연습에 사용합니다.
  2. 선택 폴더 아이콘을 클릭하여 작업 영역을 파일 관리로 변경합니다.
  3. 선택 폴더 만들기
  4. 폴더 이름을 입력하십시오.
  5. 폴더 이름을 선택하십시오.
  6. 선택 파일을 업로드
  7. 다운로드 한 Jupyter 노트북을 선택하고 새 디렉토리에 업로드합니다.
  8. 노트북을 선택하여 새 탭을 엽니 다.

노트북을 선택하여 새 탭을 엽니 다.

커널을 선택하라는 메시지가 표시됩니다.

  1. 왼쪽 메뉴에서 Python3 (데이터 과학).
  2. 왼쪽 메뉴에서 선택.

선택을 선택합니다.

  1. 노트북의 두 번째 셀에서 project_name 프로젝트에 지정한 이름으로 변수 (이 게시물의 경우 iris-multi-01).

이제 Jupyter 노트북을 실행할 수 있습니다. 이 노트북은 모델 학습 및 등록이라는 두 단계만으로 매우 간단한 파이프 라인을 생성합니다. 그것은 홍채 데이터 셋 그리고 XGBoost 내장 컨테이너 알고리즘으로.

  1. 전체 노트북을 실행합니다.

이 프로세스는 다음 코드가 포함 된 셀을 실행 한 후 약간의 시간이 걸립니다.

start_response = pipeline.start(parameters={ "TrainingInstanceCount": "1"
})

이렇게하면 학습 작업이 시작되며 완료하는 데 약 3 분이 걸립니다. 훈련이 완료된 후 Jupyter 노트북의 다음 셀은 모델 레지스트리에서 최신 버전의 모델을 가져 와서 다음과 같이 표시합니다. Approved. 또는 SageMaker Studio UI에서 모델을 승인 할 수 있습니다. 에 모델 그룹 탭에서 모델 그룹과 원하는 버전을 선택합니다. 고르다 업데이트 상태승인 저장하기 전에.

저장하기 전에 상태 업데이트 및 승인을 선택하십시오.

이것은 데이터 과학자의 임무는 끝났지 만 CI / CD 파이프 라인 실행의 시작입니다.

아마존 이벤트 브리지 모델 레지스트리를 모니터링합니다. 리스너는 프로비저닝 된 새 배포 작업을 시작합니다. AWS 코드 파이프라인 워크 플로 (SageMaker Studio 프로젝트를 시작할 때 생성됨).

  1. CodePipeline 콘솔에서 접두사로 시작하는 파이프 라인을 선택합니다. sagemaker-, 프로젝트 이름.

CodePipeline 콘솔에서 접두사 sagemaker-로 시작하는 파이프 라인을 선택하고 그 뒤에 프로젝트 이름을 선택합니다.

모델을 승인 한 직후 배포 파이프 라인이 실행되기 시작합니다. 파이프 라인이 상태에 도달 할 때까지 기다립니다. DeployStaging. 이 단계를 완료하는 데 약 10 분이 소요될 수 있습니다. 스테이징 계정에 첫 번째 엔드 포인트를 배포 한 후 파이프 라인을 테스트 한 후 다음 단계로 이동합니다. ApproveDeployment. 이 단계에서는 수동 승인을 기다립니다.

  1. 왼쪽 메뉴에서 검토.
  2. 텍스트 상자에 승인 이유를 입력합니다.
  3. 왼쪽 메뉴에서 승인.

이제 모델이 프로덕션 계정에 배포되었습니다.

또한 AWS CloudFormation 콘솔에서 파이프 라인을 모니터링하여 파이프 라인이 대상 계정에 엔드 포인트를 배포하기 위해 생성하는 스택 및 스택 세트를 볼 수 있습니다. 각 계정에 대해 배포 된 엔드 포인트를 보려면 SageMaker 콘솔에 스테이징 계정 또는 프로덕션 계정으로 로그인하고 종점 탐색 창에서.

청소

이 예제에서 프로비저닝 한 모든 리소스를 정리하려면 다음 단계를 완료하십시오.

  1. 기본 계정으로 콘솔에 로그인합니다.
  2. AWS CloudFormation 콘솔에서 StackSets 및 삭제 다음 항목 (엔드 포인트) :
    1. 자극하다 - sagemaker-<<sagemaker-project-name>>-<<project-id>>-deploy-prod
    2. 준비 - sagemaker-<<sagemaker-project-name>>-<<project-id>>-deploy-staging
  3. 노트북 또는 워크 스테이션 터미널에서 AWS 명령 줄 인터페이스 (AWS CLI)를 클릭하고 다음 코드를 입력하여 프로젝트를 삭제합니다.
    aws sagemaker delete-project --project-name iris-multi-01

사용 중인지 확인하십시오 최신 버전의 AWS CLI.

자체 SageMaker 프로젝트 용 템플릿 빌드 및 사용자 지정

SageMaker 프로젝트SageMaker MLOps 프로젝트 템플릿 ML 모델을 교육, 최적화, 평가 및 배포하는 데 필요한 전체 인프라를 자동으로 생성하고 구성하는 데 사용할 수있는 강력한 기능입니다. SageMaker 프로젝트는 엔드 투 엔드 ML 솔루션을 쉽게 생성 할 수있는 AWS Service Catalog 프로비저닝 제품입니다. 자세한 내용은 AWS Service Catalog 관리자 안내서.

제품은 AWS Service Catalog에서 관리하는 CloudFormation 템플릿입니다. 템플릿 및 해당 요구 사항에 대한 자세한 내용은 AWS CloudFormation 템플릿 형식.

ML 엔지니어는 IaC (Infrastructure as Code) 개념을 사용하여 여러 환경을 설계하고이 설정의 모든 세부 정보를 CloudFormation 템플릿으로 표현할 수 있습니다. CI / CD 파이프 라인을 사용하여 이러한 다양한 환경과 작업을 통합 할 수도 있습니다. SageMaker 프로젝트는 다른 ML 엔지니어와 데이터 과학자가 여러 번 시작할 수있는 간단한 프로젝트 형식으로 인프라 복잡성을 감싸는 쉽고 안전하며 직접적인 방법을 제공합니다.

다음 다이어그램은 사용자 지정 SageMaker 프로젝트 템플릿을 생성하고 게시하기 위해 완료해야하는 주요 단계를 보여줍니다.

다음 다이어그램은 사용자 지정 SageMaker 프로젝트 템플릿을 생성하고 게시하기 위해 완료해야하는 주요 단계를 보여줍니다.

이러한 단계는 섹션에서 자세히 설명했습니다. 사용자 지정 SageMaker Studio 프로젝트 템플릿 가져 오기프로젝트 만들기.

ML 엔지니어는 설계하고 새 CloudFormation 템플릿 생성 프로젝트를 위해 AWS Service Catalog 포트폴리오를 준비하고 여기에 새 제품을 추가합니다.

데이터 과학자와 ML 엔지니어 모두 SageMaker Studio를 사용하여 사용자 지정 템플릿으로 새 프로젝트를 만들 수 있습니다. SageMaker는 AWS Service Catalog를 호출하고 CloudFormation 템플릿에 설명 된 인프라 프로비저닝을 시작합니다.

이제 데이터 과학자는 모델 학습을 시작할 수 있습니다. 모델 레지스트리에 등록하면 CI / CD 파이프 라인이 자동으로 실행되고 대상 계정에 모델을 배포합니다.

이 게시물의 CloudFormation 템플릿을 텍스트 편집기에서 보면이 게시물에서 설명하는 아키텍처를 구현하고 있음을 알 수 있습니다.

다음 코드는 템플릿의 스 니펫입니다.

Description: Toolchain template which provides the resources needed to represent infrastructure as code. This template specifically creates a CI/CD pipeline to deploy a given inference image and pretrained Model to two stages in CD -- staging and production.
Parameters: SageMakerProjectName: Type: String SageMakerProjectId: Type: String
…
<<other parameters>>
…
Resources: MlOpsArtifactsBucket: Type: AWS::S3::Bucket DeletionPolicy: Retain Properties: BucketName: …
… ModelDeployCodeCommitRepository: Type: AWS::CodeCommit::Repository Properties: RepositoryName: … RepositoryDescription: … Code: S3: Bucket: … Key: …
… ModelDeployBuildProject: Type: AWS::CodeBuild::Project
… ModelDeployPipeline: Type: AWS::CodePipeline::Pipeline
…

템플릿에는 두 가지 주요 섹션이 있습니다. Parameters (템플릿의 입력 매개 변수) 및 Resources. SageMaker 프로젝트 템플릿을 사용하려면 템플릿에 두 개의 입력 매개 변수를 추가해야합니다. SageMakerProjectNameSageMakerProjectId. 이러한 매개 변수는 SageMaker Studio에서 내부적으로 사용됩니다. 필요한 경우 다른 매개 변수를 추가 할 수 있습니다.

스 니펫의 리소스 섹션에서 다음을 생성하는 것을 확인할 수 있습니다.

  • 한 단계에서 다른 단계로 전달 된 중간 아티팩트를 저장하기 위해 CI / CD 파이프 라인에서 사용하는 새 S3 버킷입니다.
  • An AWS 코드 커밋 배포 및 테스트 단계에서 사용되는 아티팩트를 저장하는 저장소
  • An AWS 코드빌드 프로젝트에서 아티팩트를 가져오고 프로젝트에 대해 유효성을 검사하고 구성합니다. 다중 계정 템플릿에서이 프로젝트는 CI / CD 파이프 라인에서 새 모델을 배포하는 데 사용되는 새 모델 레지스트리도 만듭니다.
  • CI / CD 파이프 라인의 모든 단계를 오케스트레이션하는 CodePipeline 워크 플로입니다.

모델 레지스트리에 새 모델을 등록하거나 새 아티팩트를 CodeCommit 리포지토리에 푸시 할 때마다이 CodePipeline 워크 플로가 시작됩니다. 이러한 이벤트는 EventBridge 규칙, 동일한 템플릿으로 프로비저닝됩니다. CI / CD 파이프 라인에는 다음 단계가 포함됩니다.

  • 출처 – CodeCommit 리포지토리에서 아티팩트를 읽고 다른 단계와 공유합니다.
  • 짓다 – CodeBuild 프로젝트를 실행하여 다음을 수행합니다.
    • 모델 레지스트리가 이미 생성되었는지 확인하고 필요한 경우 생성합니다.
    • 다음 두 배포 단계에서 사용할 새 CloudFormation 템플릿을 준비합니다.
  • 배포 – 다음 구성 요소를 포함합니다.
    • DeployResources스테이징 – 준비된 CloudFormation 템플릿을 가져옵니다. Build 단계를 수행하고 새 스택을 배포합니다. 이 스택은 대상 계정에 새 SageMaker 엔드 포인트를 배포합니다.
    • 테스트 스테이징 – 배포 된 엔드 포인트를 테스트하는 사용자 지정 Python 스크립트를 실행하는 두 번째 CodeBuild 프로젝트를 호출합니다.
    • 배포 승인 – 수동 승인 단계. 승인되면 다음 단계로 이동하여 프로덕션에 엔드 포인트를 배포하거나 승인되지 않은 경우 워크 플로를 종료합니다.
  • 배포프로드 - 비슷하다 DeployStaging, 동일한 CloudFormation 템플릿을 사용하지만 입력 매개 변수가 다릅니다. 프로덕션 계정에 새 SageMaker 엔드 포인트를 배포합니다. 

새 교육 프로세스를 시작하고 SageMaker 프로젝트와 연결된 모델 레지스트리에 모델을 등록 할 수 있습니다. 이 게시물에 제공된 Jupyter 노트북을 사용하여 자신 만의 ML 파이프 라인 데이터 세트를 준비하고 배포하기 전에 모델을 학습, 최적화 및 테스트합니다. 이러한 기능에 대한 자세한 내용은 SageMaker 프로젝트로 MLOps 자동화. 더 많은 파이프 라인 예제는 GitHub 레포.

결론 및 다음 단계

이 게시물에서는 SageMaker Pipelines를 사용하여 여러 AWS 계정에서 ML 모델을 교육하고 배포하기위한 자체 환경을 준비하는 방법을 살펴 보았습니다.

SageMaker 프로젝트를 사용하면 ML 프로젝트를 SageMaker 프로젝트 템플릿의 라이브러리로 관리하기 시작하면 환경의 거버넌스 및 보안이 크게 향상 될 수 있습니다.

다음 단계로 SageMaker 프로젝트 템플릿을 수정하고 조직의 요구 사항에 맞게 사용자 지정합니다. 원하는만큼 단계를 추가하고 CI / CD 이벤트를 캡처하고 사용자에게 알리거나 다른 서비스를 호출하여 포괄적 인 솔루션을 구축 할 수 있음을 명심하십시오.


저자에 관하여

사미르 아라우조 AWS의 AI / ML 솔루션 아키텍트입니다. 그는 AI / ML 솔루션을 만드는 고객이 AWS 플랫폼을 사용하여 비즈니스 과제를 해결하도록 돕습니다. 그는 컴퓨터 비전, 자연어 처리, 예측, 엣지에서의 ML 등과 관련된 여러 AI / ML 프로젝트를 진행하고 있습니다. 그는 여가 시간에 하드웨어 및 자동화 프로젝트를 가지고 노는 것을 좋아하며 로봇 공학에 특히 관심이 있습니다.

출처 : https://aws.amazon.com/blogs/machine-learning/multi-account-model-deployment-with-amazon-sagemaker-pipelines/

spot_img

최신 인텔리전스

spot_img

우리와 함께 채팅

안녕하세요! 어떻게 도와 드릴까요?