제퍼넷 로고

Amazon SageMaker Pipelines를 사용하여 ML 워크 플로 구축, 자동화, 관리 및 확장

시간

우리는 최근에 발표했습니다 Amazon SageMaker 파이프 라인, 머신 러닝 (ML)을위한 용도로 구축 된 최초의 사용하기 쉬운 지속적 통합 및 지속적 전달 (CI / CD) 서비스입니다. SageMaker Pipelines는 기본 워크 플로우 오케스트레이션 도구 직접 활용하는 ML 파이프 라인 구축 아마존 세이지 메이커 완성. 파이프 라인, 모델 레지스트리, 프로젝트의 세 가지 구성 요소는 ML 워크 플로의 운영 복원력과 재현성을 향상시킵니다. 이러한 워크 플로 자동화 구성 요소를 사용하면 프로덕션 환경에서 수백 개의 모델을 구축, 교육, 테스트 및 배포하는 능력을 쉽게 확장하고, 더 빠르게 반복하고, 수동 오케스트레이션으로 인한 오류를 줄이고, 반복 가능한 메커니즘을 구축 할 수 있습니다.

SageMaker 프로젝트는 ML 개발 수명주기에 CI / CD 기능을 활성화하는 데 필요한 기본 리소스를 자동으로 프로비저닝하는 MLOps 템플릿을 도입합니다. 여러 가지를 사용할 수 있습니다. 기본 제공 템플릿 or 나만의 맞춤 템플릿 만들기. SageMaker Pipelines를 독립적으로 사용하여 자동화 된 워크 플로를 만들 수 있습니다. 그러나 SageMaker 프로젝트와 함께 사용하면 추가 CI / CD 기능이 자동으로 제공됩니다. 다음 스크린 샷은 SageMaker 파이프 라인의 세 가지 구성 요소가 예제 SageMaker 프로젝트에서 함께 작동하는 방법을 보여줍니다.

다음 스크린 샷은 SageMaker 파이프 라인의 세 가지 구성 요소가 예제 SageMaker 프로젝트에서 함께 작동하는 방법을 보여줍니다.

이 게시물은 MLOps 템플릿을 사용하여 ML 프로젝트를 부트 스트랩하고 샘플 코드에서 CI / CD 패턴을 설정하는 데 중점을 둡니다. 기본 제공 빌드, 학습 및 배포 프로젝트 템플릿을 고객 이탈 분류 예제의 기반으로 사용하는 방법을 보여줍니다. 이 기본 템플릿을 사용하면 ML 모델 학습, 모델 아티팩트를 모델 레지스트리에 등록, 수동 승인 및 자동화 된 테스트로 모델 배포 자동화를위한 CI / CD를 사용할 수 있습니다.

모델 구축, 교육 및 배포를위한 MLOps 템플릿

이 빌드, 교육 및 배포 MLOps 템플릿이 시작될 때 어떤 AWS 서비스가 시작되는지 자세히 살펴 보는 것으로 시작합니다. 나중에 커스텀 사용 사례를 위해 스켈레톤을 수정하는 방법에 대해 설명합니다.

SageMaker 프로젝트를 시작하려면 먼저 아마존 세이지 메이커 스튜디오 콘솔. 이는 기존 사용자를 위해 또는 새 사용자를 만드는 동안 수행 할 수 있습니다. 자세한 내용은 프로젝트 사용에 필요한 SageMaker Studio 권한.

자세한 내용은 프로젝트 사용에 필요한 SageMaker Studio 권한을 참조하십시오.

SageMaker Studio에서 이제 프로젝트 메뉴에 구성 요소 및 레지스트리 메뉴를 선택합니다.

SageMaker Studio에서 이제 구성 요소 및 레지스트리 메뉴에서 프로젝트 메뉴를 선택할 수 있습니다.

프로젝트 페이지에서 사전 구성된 SageMaker MLOps 템플릿을 시작할 수 있습니다. 이 게시물에서는 모델 구축, 교육 및 배포를위한 MLOps 템플릿.

프로젝트 페이지에서 사전 구성된 SageMaker MLOps 템플릿을 시작할 수 있습니다.

이 템플릿을 시작하면 기본적으로 모델 빌드 파이프 라인이 시작되며 SageMaker Pipelines 자체를 사용하는 데는 비용이 들지 않지만 시작된 서비스에 대한 요금이 부과됩니다. 비용은 지역에 따라 다릅니다. 모델 빌드 파이프 라인의 단일 실행 us-east-1 $ 0.50 미만으로 추정됩니다. 배포 용으로 승인 된 모델에는 ml.m5.large 인스턴스를 사용하는 리전에 대한 SageMaker 엔드 포인트 (테스트 및 프로덕션) 비용이 발생합니다.

MLOps 템플릿에서 프로젝트가 생성되면 다음 아키텍처가 배포됩니다.

MLOps 템플릿에서 프로젝트가 생성되면 다음 아키텍처가 배포됩니다.

아키텍처에는 다음 AWS 서비스 및 리소스가 포함됩니다.

  • SageMaker 프로젝트를 통해 사용할 수있는 MLOps 템플릿은 AWS 서비스 카탈로그 사용자가 Studio 도메인에서 프로젝트를 활성화 할 때 자동으로 가져 오는 포트폴리오입니다.
  • 두 개의 저장소가 추가됩니다. AWS 코드 커밋:
    • 첫 번째 저장소는 데이터 처리, 모델 학습, 모델 평가 및 정확도에 따른 조건부 모델 등록 단계를 포함하는 다단계 모델 구축 파이프 라인을 생성하기위한 스캐 폴딩 코드를 제공합니다. 보시다시피 pipeline.py 이 파이프 라인은 잘 알려진 XGBoost 알고리즘을 사용하여 선형 회귀 모델을 학습시킵니다. UCI Abalone 데이터 세트. 이 저장소에는 빌드 사양 파일에 의해 사용됨 AWS 코드 파이프라인AWS 코드빌드 파이프 라인을 자동으로 실행합니다.
    • 두 번째 저장소에는 모델 배포를위한 코드 및 구성 파일과 품질 게이트를 통과하는 데 필요한 테스트 스크립트가 포함되어 있습니다. 이 리포지토리는 또한 CodePipeline 및 CodeBuild를 사용합니다. AWS 클라우드 포메이션 스테이징 및 프로덕션을위한 모델 엔드 포인트를 생성하기위한 템플릿.
  • 두 개의 CodePipeline 파이프 라인 :
    •   ModelBuild 파이프 라인은 새로운 커밋이 발생할 때마다 파이프 라인을 자동으로 트리거하고 실행합니다. ModelBuild CodeCommit 리포지토리.
    •   ModelDeploy 파이프 라인은 새 모델 버전이 모델 레지스트리에 추가되고 상태가 다음과 같이 표시 될 때마다 자동으로 트리거됩니다. Approved. 등록 된 모델 Pending or Rejected 상태는 배포되지 않습니다.
  • An 아마존 단순 스토리지 서비스 (Amazon S3) 버킷은 파이프 라인에서 생성 된 출력 모델 아티팩트에 대해 생성됩니다.
  • SageMaker Pipelines는 다음 리소스를 사용합니다.
    • 이 워크 플로에는 모델을 훈련하고 평가하는 방향성 비순환 그래프 (DAG)가 포함되어 있습니다. 파이프 라인의 각 단계는 계보를 추적하고 파이프 라인을 빠르게 재실행하기 위해 중간 단계를 캐시 할 수 있습니다. 템플릿 외부에서 다음을 수행 할 수도 있습니다. SDK를 사용하여 파이프 라인 생성.
    • SageMaker 파이프 라인 내에서 SageMaker 모델 레지스트리 생성 방법에 대한 계보 및 메타 데이터를 포함하여 모델 버전 및 각 아티팩트를 추적합니다. 다른 모델 버전은 모델 그룹 아래에 함께 그룹화되며 레지스트리에 등록 된 새 모델은 자동으로 버전이 지정됩니다. 모델 레지스트리는 또한 모델 버전에 대한 승인 워크 플로를 제공하고 다른 계정에 모델 배포를 지원합니다. 당신은 또한 수 boto3 패키지를 통해 모델 레지스트리 사용.
  • 두 개의 SageMaker 엔드 포인트 :
    • 모델이 레지스트리에서 승인되면 아티팩트가 스테이징 엔드 포인트에 자동으로 배치되고 수동 승인 단계가 이어집니다.
    • 승인되면 동일한 AWS 계정의 프로덕션 엔드 포인트에 배포됩니다.

교육 작업, 파이프 라인, 모델 및 엔드 포인트와 같은 모든 SageMaker 리소스와이 게시물에 나열된 AWS 리소스는 프로젝트 이름과 고유 한 프로젝트 ID 태그로 자동 태그 지정됩니다.

사용자 지정 사용 사례에 대한 샘플 코드 수정

프로젝트가 생성 된 후 앞에서 설명한 아키텍처가 배포되고 파이프 라인의 시각화가 파이프 라인 SageMaker Studio 내의 드롭 다운 메뉴.

이 시작된 템플릿에서 샘플 코드를 수정하려면 먼저 CodeCommit 리포지토리를 로컬 SageMaker Studio 인스턴스에 복제해야합니다. 프로젝트 목록에서 방금 생성 한 프로젝트를 선택합니다. 에 저장소 탭에서 하이퍼 링크를 선택하여 CodeCommit 리포지토리를 로컬로 복제 할 수 있습니다.

리포지토리 탭에서 하이퍼 링크를 선택하여 CodeCommit 리포지토리를 로컬로 복제 할 수 있습니다.

ModelBuild 저장소

  ModelBuild 리포지토리에는 모델 전처리, 학습 및 평가를위한 코드가 포함되어 있습니다. 샘플 코드는 모델을 학습하고 평가합니다. UCI Abalone 데이터 세트. 이러한 파일을 수정하여 자체 고객 이탈 사용 사례를 해결할 수 있습니다. 다음 코드를 참조하십시오.

|-- codebuild-buildspec.yml
|-- CONTRIBUTING.md
|-- pipelines
| |-- abalone
| | |-- evaluate.py
| | |-- __init__.py
| | |-- pipeline.py
| | |-- preprocess.py
| |-- get_pipeline_definition.py
| |-- __init__.py
| |-- run_pipeline.py
| |-- _utils.py
| |-- __version__.py
|-- README.md
|-- sagemaker-pipelines-project.ipynb
|-- setup.cfg
|-- setup.py
|-- tests
| -- test_pipelines.py
|-- tox.ini

이제 프로젝트에 액세스 할 수있는 데이터 세트가 필요합니다.

  1. Studio 내에서 새 SageMaker 노트북을 열고 다음 셀을 실행합니다.
    !wget http://dataminingconsultant.com/DKD2e_data_sets.zip
    !unzip -o DKD2e_data_sets.zip
    !mv "Data sets" Datasets import os
    import boto3
    import sagemaker
    prefix = 'sagemaker/DEMO-xgboost-churn'
    region = boto3.Session().region_name
    default_bucket = sagemaker.session.Session().default_bucket()
    role = sagemaker.get_execution_role() RawData = boto3.Session().resource('s3')
    .Bucket(default_bucket).Object(os.path.join(prefix, 'data/RawData.csv'))
    .upload_file('./Datasets/churn.txt') print(os.path.join("s3://",default_bucket, prefix, 'data/RawData.csv'))

  1. 전복 디렉토리의 이름을 다음으로 변경하십시오. customer_churn. 이를 위해서는 내부 경로를 수정해야합니다. 코드빌드-buildspec.yml 샘플 저장소에 표시된대로. 다음 코드를 참조하십시오.
    run-pipeline --module-name pipelines.customer-churn.pipeline 

  1. 교체 preprocess.py 고객 이탈 코드 샘플 저장소에있는 전처리 스크립트.
  2. 교체 pipeline.py 고객 이탈 코드 샘플 저장소에있는 파이프 라인 스크립트.
    1. "InputDataUrl”3 단계에서 얻은 Amazon S1 URL이 포함 된 기본 파라미터입니다.
      input_data = ParameterString( name="InputDataUrl", default_value=f"s3://YOUR_BUCKET/RawData.csv",
      )

    2. 분류 모델을 평가하기 위해 조건부 단계를 업데이트합니다.
      # Conditional step for evaluating model quality and branching execution
      cond_lte = ConditionGreaterThanOrEqualTo( left=JsonGet(step=step_eval, property_file=evaluation_report, json_path="binary_classification_metrics.accuracy.value"), right=0.8
      )

    마지막으로 주목할 것은 기본값입니다. ModelApprovalStatusPendingManualApproval. 모델의 정확도가 80 % 이상이면 모델 레지스트리에 추가되지만 수동 승인이 완료 될 때까지 배포되지 않습니다.

  1. 교체 evaluate.py 고객 이탈 코드 샘플 저장소에있는 평가 스크립트. 우리가 지적하고 싶은 코드 중 하나는 분류 모델을 평가하고 있기 때문에 평가하고 훈련 된 모델과 연결하는 메트릭을 업데이트해야한다는 것입니다.
    report_dict = { "binary_classification_metrics": { "accuracy": { "value": acc, "standard_deviation" : "NaN" }, "auc" : { "value" : roc_auc, "standard_deviation": "NaN" }, },
    } evaluation_output_path = '/opt/ml/processing/evaluation/evaluation.json'
    with open(evaluation_output_path, 'w') as f: f.write(json.dumps(report_dict))

이러한 측정 항목의 JSON 구조는 다음 형식과 일치해야합니다. sagemaker.model_metrics 모델 레지스트리와의 완전한 통합을 위해. 

ModelDeploy 저장소

  ModelDeploy 리포지토리에는 배포 파이프 라인에 대한 AWS CloudFormation 빌드 사양이 포함되어 있습니다. 이 코드는 고객 이탈 사용 사례에 충분하므로 수정하지 않습니다. 이 저장소에 모델 테스트를 추가하여 모델 배포를 게이트 할 수 있다는 점은 주목할 가치가 있습니다. 다음 코드를 참조하십시오.

├── build.py
├── buildspec.yml
├── endpoint-config-template.yml
├── prod-config.json
├── README.md
├── staging-config.json
└── test ├── buildspec.yml └── test.py

파이프 라인 실행 트리거

이러한 변경 사항을 CodeCommit 리포지토리 (Studio 소스 제어 탭에서 쉽게 수행)에 커밋하면 새 파이프 라인 실행이 트리거됩니다. 아마존 이벤트 브리지 커밋을위한 이벤트 모니터. 잠시 후 SageMaker 프로젝트 내에서 파이프 라인을 선택하여 실행을 모니터링 할 수 있습니다.

잠시 후 SageMaker 프로젝트 내에서 파이프 라인을 선택하여 실행을 모니터링 할 수 있습니다. 다음 스크린 샷은 파이프 라인 세부 정보를 보여줍니다.다음 스크린 샷은 파이프 라인 세부 정보를 보여줍니다. 파이프 라인 실행을 선택하면 모니터링 할 수있는 파이프 라인의 단계가 표시됩니다.

파이프 라인 실행을 선택하면 모니터링 할 수있는 파이프 라인의 단계가 표시됩니다.

파이프 라인이 완료되면 다음으로 이동할 수 있습니다. 모델 그룹 SageMaker 프로젝트 내에서 탭하고 모델 아티팩트에 연결된 메타 데이터를 검사합니다.

파이프 라인이 완료되면 SageMaker 프로젝트 내의 모델 그룹 탭으로 이동하여 모델 아티팩트에 연결된 메타 데이터를 검사 할 수 있습니다.

모든 것이 좋아 보이면 모델을 수동으로 승인 할 수 있습니다.

이 승인은 ModelDeploy 파이프 라인을 트리거하고 실시간 추론을위한 엔드 포인트를 노출합니다.

이 승인은 ModelDeploy 실시간 추론을 위해 엔드 포인트를 노출합니다.

이 승인은 ModelDeploy 파이프 라인을 트리거하고 실시간 추론을위한 엔드 포인트를 노출합니다. 

결론

SageMaker Pipelines를 통해 팀은 ML 워크 플로 내에서 모범 사례 CI / CD 방법을 활용할 수 있습니다. 이 게시물에서는 데이터 과학자가 자체 모델링 사용 사례에 맞게 미리 구성된 MLOps 템플릿을 수정하는 방법을 보여주었습니다. 많은 이점 중 하나는 소스 코드의 변경 사항을 추적 할 수 있고, 관련 메타 데이터를 배포 승인을 위해 훈련 된 모델에 연결할 수 있으며, 반복되는 파이프 라인 단계를 캐시하여 재사용 할 수 있다는 것입니다. SageMaker 파이프 라인에 대해 자세히 알아 보려면 웹 사이트 그리고 선적 서류 비치. 지금 자신의 워크 플로에서 SageMaker Pipelines를 사용해보십시오.


저자에 관하여

션 모건션 모건 AWS의 AI / ML 솔루션 아키텍트입니다. 그는 이전에 반도체 산업에서 일하면서 컴퓨터 비전을 사용하여 제품 수율을 개선했습니다. 그는 나중에 DoD 연구소로 옮겨 적대적 ML 방어 및 네트워크 보안을 전문으로했습니다. 여가 시간에 Sean은 적극적인 오픈 소스 기고자 및 유지 관리자이며 TensorFlow Addons의 특별 이익 그룹 책임자입니다.

할리 크로스비할리 와이샨 MLOps에 대한 선도적 인 글로벌 표준에 중점을 둔 AWS의 AI / ML 전문가 솔루션 아키텍트입니다. 이전에는 Google Cloud Platform에서 ML 전문가로 일했습니다. 그녀는 제품, 엔지니어링 및 주요 고객과 협력하여 반복 가능한 아키텍처를 구축하고 제품 로드맵을 주도합니다. 그녀는 기계 학습 사용 사례 및 기술을 발전시키고 확장하기위한 지침과 실무 작업을 제공합니다. PoC에서 전체 배포로 통합 할 수 있도록 주요 문제를 해결하고 기존 아키텍처를 평가하는 것이 그녀의 강점입니다.

쉘비 아이겐브로드쉘비 아이겐브로드 AWS의 AI / ML Specialist Solutions Architect입니다. 그녀의 현재 깊이 영역에는 ML / AI와 결합 된 DevOps가 포함됩니다. 그녀는 23 년 동안 기술 분야에 종사했으며 다양한 역할과 기술을 담당했습니다. 다양한 기술 영역에서 35 개가 넘는 특허가 부여 된 그녀의 지속적인 혁신에 대한 열정과 모든 데이터에 대한 애정이 그녀의 초점을 데이터 과학 분야로 전환했습니다. 그녀의 현재 열정은 데이터, DevOps 및 기계 학습에 대한 배경을 결합하여 고객이 데이터 과학을 수용 할뿐만 아니라 MLOps 관행을 채택하여 모든 모델이 생산 경로를 갖출 수 있도록 돕고 있습니다. 여가 시간에는 모피 가족 (일명 개) 및 친구를 포함한 가족과 함께 책을 읽고 시간을 보내는 것을 즐깁니다.

출처 : https://aws.amazon.com/blogs/machine-learning/building-automating-managing-and-scaling-ml-workflows-using-amazon-sagemaker-pipelines/

spot_img

최신 인텔리전스

spot_img

우리와 함께 채팅

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