AWS Lambda PlatoBlockchain Data Intelligence에서 모델 엔드포인트를 호스팅하는 MLOps 솔루션을 배포합니다. 수직 검색. 일체 포함.

AWS Lambda에서 모델 엔드포인트를 호스팅하는 MLOps 솔루션 배포

2019년 Amazon은 기후 서약. 이 서약의 목표는 2040년까지 순 제로 탄소를 달성하는 것입니다. 이는 파리 협약에서 약술한 것보다 10년 빠른 것입니다. 등록한 회사는 정기적인 보고, 탄소 제거 및 신뢰할 수 있는 상쇄에 전념합니다. 이 글을 쓰는 시점에 377개 회사가 기후 서약에 서명했으며 그 수는 계속 증가하고 있습니다.

AWS는 클라우드 솔루션과 기계 학습(ML)을 통해 순 제로 목표를 달성하도록 지원하기 위해 최선을 다하고 있기 때문에 탄소 배출을 줄이는 많은 프로젝트가 이미 개발 및 배포되었습니다. 제조는 이러한 프로젝트에서 큰 이익을 얻을 수 있는 산업 중 하나입니다. 컴프레서 또는 칠러와 같은 제조 공장 기계의 최적화된 에너지 관리를 통해 회사는 ML을 통해 탄소 발자국을 줄일 수 있습니다.

ML 실험 단계에서 프로덕션으로 효과적으로 전환하는 것은 어려운 일입니다. 모델 교육 및 재교육 자동화, 모델 레지스트리 보유, 실험 및 배포 추적은 주요 과제 중 일부입니다. 제조 회사의 경우 또 다른 복잡성, 즉 이러한 배포된 모델이 에지에서 실행될 수 있는 방법이 있습니다.

이 게시물에서는 지속 가능한 에너지 관리 솔루션을 호스팅하는 기계 학습 작업(MLOps) 템플릿을 제공하여 이러한 문제를 해결합니다. 이 솔루션은 사용 사례에 구애받지 않으므로 모델과 데이터를 변경하여 사용 사례에 맞게 조정할 수 있습니다. 모델을 통합하는 방법을 보여줍니다. Amazon SageMaker 파이프 라인, 학습 작업을 실행하고 선택적으로 Monte Carlo Simulation을 사용하여 처리 작업을 실행하는 ML 파이프라인 구축을 위한 기본 워크플로 오케스트레이션 도구입니다. 실험은 다음에서 추적됩니다. Amazon SageMaker 실험. 모델은 추적되고 등록됩니다. Amazon SageMaker 모델 레지스트리. 마지막으로 최종 모델을 배포하기 위한 코드를 제공합니다. AWS 람다 기능.

Lambda는 서버를 관리하거나 프로비저닝하지 않고도 코드를 실행할 수 있는 컴퓨팅 서비스입니다. Lambda의 자동 조정, 요청당 지불 청구 및 사용 편의성 덕분에 데이터 과학 팀의 일반적인 배포 선택이 되었습니다. 이 게시물을 통해 데이터 과학자는 모델을 비용 효율적이고 확장 가능한 Lambda 함수로 전환할 수 있습니다. 또한 Lambda는 다음과의 통합을 허용합니다. AWS IoT 그린그래스, 지속 가능한 에너지 관리 솔루션의 경우처럼 디바이스가 생성하는 데이터의 에지에서 작동할 수 있도록 하는 소프트웨어를 구축하는 데 도움이 됩니다.

솔루션 개요

우리가 배포하는 아키텍처(다음 그림 참조)는 기계 학습에 대한 완전한 CI/CD 기반 접근 방식입니다. 하나의 모놀리식 솔루션을 사용하지 않도록 요소가 분리됩니다.

다이어그램의 왼쪽 상단부터 시작하겠습니다. 그만큼 처리 – 이미지 빌드 구성 요소는 CI/CD 기반 AWS 코드 커밋 빌드하고 푸시하는 데 도움이 되는 리포지토리 도커 컨테이너 Amazon Elastic Container Registry (아마존 ECR). 이 처리 컨테이너는 ML 파이프라인의 첫 번째 단계 역할을 하지만 사후 처리 단계에서도 재사용됩니다. 우리의 경우에는 몬테카를로 시뮬레이션을 후처리로 적용합니다. 그만큼 교육 – 이미지 구축 왼쪽 하단에 설명된 리포지토리는 처리 그 위에 블록. 주요 차이점은 모델 학습을 위한 컨테이너를 빌드한다는 것입니다.

주요 파이프라인, 모델 빌딩(파이프라인)는 SageMaker 파이프라인 실행을 자동화하는 또 다른 CodeCommit 리포지토리입니다. 이 파이프라인은 데이터 전처리, 모델 교육, SageMaker Experiments의 모델 지표 추적, 데이터 후처리 및 SageMaker 모델 레지스트리의 모델 카탈로그화를 자동화하고 연결합니다.

최종 구성 요소는 오른쪽 하단에 있습니다. 모델 배포. 의 예를 따르면 Amazon SageMaker 프로젝트, SageMaker 엔드포인트를 사용하여 모델을 호스팅하는 템플릿을 얻습니다. 우리의 배포 리포지토리는 대신 Lambda 함수에서 모델을 호스팅합니다. 실시간 예측을 실행할 수 있는 Lambda 함수를 배포하는 접근 방식을 보여줍니다.

사전 조건

솔루션을 성공적으로 배포하려면 다음이 필요합니다.

GitHub 리포지토리 다운로드

첫 번째 단계로 GitHub 저장소 로컬 컴퓨터에. 여기에는 다음 폴더 구조가 포함됩니다.

  • 전개 – 배포와 관련된 코드 포함
  • mllib — 사전 처리, 교육, 제공 및 시뮬레이션을 위한 ML 코드를 포함합니다.
  • 테스트 — 단위 및 통합 테스트를 포함합니다.

배포를 위한 핵심 파일은 셸 스크립트입니다. deployment/deploy.sh. 이 파일을 사용하여 계정에 리소스를 배포합니다. 쉘 스크립트를 실행하기 전에 다음 단계를 완료하십시오.

  1. 열기 deployment/app.py 아래의 bucket_name을 변경하십시오. SageMakerPipelineSourceCodeStack. 그만큼 bucket_name 전역적으로 고유해야 합니다(예: 전체 이름 추가).
  2. In deployment/pipeline/assets/modelbuild/pipelines/energy_management/pipeline.py, default_bucket 아래에 get_pipeline 1단계에서 지정한 것과 동일한 이름으로 변경합니다.

AWS CDK로 솔루션 배포

첫째, AWS CLI 구성 배포하려는 계정 및 리전으로. 그런 다음 다음 명령을 실행하여 배포 디렉터리로 변경하고, 가상 환경을 만들고, 활성화하고, 다음에 지정된 필수 pip 패키지를 설치합니다. setup.py을 실행하고 deploy.sh:

cd deployment
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
pre-commit install
chmod u+x deploy.sh
./deploy.sh

deploy.sh 다음 작업을 수행합니다.

  1. Python에서 가상 환경을 만듭니다.
  2. 가상 환경 활성화 스크립트를 소싱합니다.
  3. AWS CDK 및 에 설명된 요구 사항을 설치합니다. setup.py.
  4. 부트스트랩 환경.
  5. 다음과 같이 개발한 필수 파일을 압축하고 복사합니다. mllib 파일을 이러한 자산이 필요한 해당 폴더에 넣습니다.
  6. 실행 cdk deploy —require-approval never.
  7. 생성 AWS 클라우드 포메이션 AWS CDK를 통해 스택합니다.

배포의 초기 단계는 5분 미만이 소요됩니다. 이제 아키텍처 다이어그램에 설명된 대로 AWS CLI를 통해 지정한 리전의 CodeCommit에 XNUMX개의 리포지토리가 있어야 합니다. 그만큼 AWS 코드 파이프라인 파이프라인이 동시에 실행됩니다. 그만큼 modelbuildmodeldeploy 파이프라인은 처리 및 학습 이미지 빌드의 성공적인 실행에 따라 달라집니다. 그만큼 modeldeploy 파이프라인은 성공적인 모델 구축에 달려 있습니다. 모델 배포는 1.5시간 이내에 완료되어야 합니다.

Studio에서 모델 리포지토리 복제

Studio UI에서 AWS CDK 배포를 통해 생성된 SageMaker 파이프라인을 사용자 지정하려면 먼저 리포지토리를 Studio로 복제해야 합니다. Studio에서 시스템 터미널을 시작하고 프로젝트 이름과 ID를 제공한 후 다음 명령을 실행합니다.

git clone https://git-codecommit.REGION.amazonaws.com/v1/repos/sagemaker-PROJECT_NAME-PROJECT_ID-modelbuild
git clone https://git-codecommit.REGION.amazonaws.com/v1/repos/sagemaker-PROJECT_NAME-PROJECT_ID-modeldeploy
git clone https://git-codecommit.REGION.amazonaws.com/v1/repos/sagemaker-PROJECT_NAME-PROJECT_ID-processing-imagebuild
git clone https://git-codecommit.REGION.amazonaws.com/v1/repos/sagemaker-PROJECT_NAME-PROJECT_ID-training-imagebuild

리포지토리를 복제한 후 리포지토리에 커밋을 푸시할 수 있습니다. 이러한 커밋은 관련 파이프라인에 대한 CodePipeline 실행을 트리거합니다.

로컬 컴퓨터에서 솔루션을 조정하고 선호하는 IDE에서 작업할 수도 있습니다.

SageMaker 파이프라인 및 SageMaker 실험 UI 탐색

SageMaker 파이프라인은 다음을 사용하여 정의되는 일련의 상호 연결된 단계입니다. Amazon SageMaker Python SDK. 이 파이프라인 정의는 JSON 정의로 내보낼 수 있는 DAG(Directed Acyclic Graph)를 사용하여 파이프라인을 인코딩합니다. 이러한 파이프라인의 구조에 대한 자세한 내용은 다음을 참조하세요. SageMaker 파이프라인 개요.

로 이동 SageMaker 리소스 창을 클릭하고 보려는 파이프라인 리소스를 선택합니다. 아래에 성함, 넌 봐야 해 PROJECT_NAME-PROJECT_ID. 실행 UI에는 1시간 조금 넘게 걸릴 것으로 예상되는 성공적인 실행이 있어야 합니다. 파이프라인은 다음 스크린샷과 같이 표시되어야 합니다.

Amazon SageMaker 파이프라인

실행은 AWS CDK 스택이 배포된 후 자동으로 트리거되었습니다. 다음을 선택하여 실행을 수동으로 호출할 수 있습니다. 만들기 실행. 여기에서 처리 및 교육 단계에 대한 인스턴스 유형 및 인스턴스 수와 같은 고유한 파이프라인 매개변수를 선택할 수 있습니다. 또한 실행에 이름과 설명을 지정할 수 있습니다. 파이프라인은 파이프라인 정의 전체에서 참조하고 정의할 수 있는 파이프라인 매개변수를 통해 고도로 구성 가능합니다.

원하는 대로 매개변수를 사용하여 다른 파이프라인 실행을 자유롭게 시작할 수 있습니다. 그런 다음 SageMaker 리소스 창을 다시 선택하고 실험과 시련. 거기에서 다음과 같은 이름이 있는 줄이 다시 표시되어야 합니다. PROJECT_NAME-PROJECT_ID. 실험으로 이동하여 임의 ID가 있는 유일한 실행을 선택합니다. 여기에서 SageMaker 교육 작업을 선택하여 교육 작업과 관련된 지표를 탐색합니다.

SageMaker Experiments의 목표는 가능한 한 간단하게 실험을 생성하고 시도로 채우고 시도와 실험에 걸쳐 분석을 실행하는 것입니다. SageMaker Pipelines는 SageMaker Experiments와 밀접하게 통합되어 있으며 기본적으로 각 실행에 대해 실험, 평가판 및 평가판 구성 요소가 없는 경우 생성합니다.

모델 레지스트리에서 Lambda 배포 승인

다음 단계로 아래의 모델 레지스트리로 이동합니다. SageMaker 리소스. 여기에서 다음과 같은 이름을 가진 줄을 다시 찾을 수 있습니다. PROJECT_NAME-PROJECT_ID. 존재하는 유일한 모델로 이동하여 승인합니다. 이렇게 하면 Lambda의 컨테이너에 모델 아티팩트가 자동으로 배포됩니다.

모델 레지스트리에서 모델을 승인한 후 아마존 이벤트 브리지 이벤트 규칙이 트리거됩니다. 이 규칙은 끝이 있는 CodePipeline 파이프라인을 실행합니다. *-modeldeploy. 이 섹션에서는 이 솔루션이 승인된 모델을 사용하고 이를 Lambda 함수에서 호스팅하는 방법에 대해 설명합니다. CodePipeline은 역시 다음으로 끝나는 기존 CodeCommit 리포지토리를 사용합니다. *-modeldeploy 해당 코드를 사용하여 CodeBuild에서 실행합니다. CodeBuild의 기본 항목은 buildspec.yml 파일. 이것을 먼저 살펴보자:

version: 0.2

env:
  shell: bash

phases:
  install:
    runtime_versions:
      python: 3.8
    commands:
      - python3 -m ensurepip --upgrade
      - python3 -m pip install --upgrade pip
      - python3 -m pip install --upgrade virtualenv
      - python3 -m venv .venv
      - source .venv/bin/activate
      - npm install -g aws-cdk@2.26.0
      - pip install -r requirements.txt
      - cdk bootstrap
  build:
    commands:
      - python build.py --model-package-group-name "$SOURCE_MODEL_PACKAGE_GROUP_NAME"
      - tar -xf model.tar.gz
      - cp model.joblib lambda/digital_twin
      - rm model.tar.gz
      - rm model.joblib
      - cdk deploy --require-approval never

설치 단계에서 Python 라이브러리가 최신인지 확인하고, 가상 환경을 생성하고, AWS CDK v2.26.0을 설치하고, aws-cdk 요구 사항 파일을 사용하는 다른 사람들과 함께 Python 라이브러리. 또한 우리 AWS 계정 부트스트랩. 빌드 단계에서 우리는 build.py, 다음에 논의합니다. 해당 파일은 다음에서 승인된 최신 SageMaker 모델 아티팩트를 다운로드합니다. 아마존 단순 스토리지 서비스 (Amazon S3)를 로컬 CodeBuild 인스턴스에 연결합니다. 이것 .tar.gz 파일의 압축이 풀리고 그 내용이 기본 Lambda 코드도 포함된 폴더에 복사됩니다. Lambda 함수는 AWS CDK를 사용하여 배포되며 코드는 Amazon ECR의 Docker 컨테이너에서 실행됩니다. 이는 AWS CDK에서 자동으로 수행됩니다.

XNUMXD덴탈의 build.py file은 주로 다음을 사용하는 Python 파일입니다. Python 용 AWS SDK (Boto3) 사용 가능한 모델 패키지를 나열합니다.

기능 get_approved_package 앞에서 설명한 대로 다운로드된 아티팩트의 Amazon S3 URI를 반환합니다.

모델을 성공적으로 배포한 후 다음을 수행할 수 있습니다. test 배포하기로 선택한 리전의 Lambda 콘솔에서 직접 실행합니다. 함수 이름에는 다음이 포함되어야 합니다. DigitalTwinStack-DigitalTwin*. 함수를 열고 다음으로 이동합니다. Test 탭. 다음 이벤트를 사용하여 테스트 호출을 실행할 수 있습니다.

{
  "flow": "[280, 300]",
  "pressure": "[69, 70]",
  "simulations": "10",
  "no_of_trials": "10",
  "train_error_weight": "1.0"
}

테스트 이벤트를 실행한 후 다음 스크린샷에 표시된 것과 유사한 응답을 받습니다.

AWS Lambda 함수 테스트

더 많은 시뮬레이션이나 시험을 실행하려면 Lambda 제한 시간을 늘리고 코드를 실험할 수 있습니다! 또는 생성된 데이터를 선택하여 아마존 퀵 사이트. 아래는 예시입니다. 이제 당신의 차례입니다!

아마존 퀵 사이트

정리

추가 요금이 부과되지 않도록 하려면 다음 단계를 완료하세요.

  • AWS CloudFormation 콘솔에서 다음을 삭제합니다. EnergyOptimization 스택.
    이것은 전체 솔루션을 삭제합니다.
  • 스택 삭제 DigitalTwinStack, Lambda 함수를 배포했습니다.

결론

이 게시물에서는 각 단계를 분리한 상태로 유지하는 에너지 관리 솔루션의 CI/CD 기반 MLOps 파이프라인을 보여 주었습니다. Studio UI에서 ML 파이프라인 및 실험을 추적할 수 있습니다. 또한 다른 배포 접근 방식을 시연했습니다. 모델 레지스트리에서 모델이 승인되면 승인된 모델을 호스팅하는 Lambda 함수가 CodePipeline을 통해 자동으로 구축됩니다.

AWS의 MLOps 파이프라인 또는 지속 가능한 에너지 관리 솔루션을 탐색하는 데 관심이 있는 경우 다음을 확인하십시오. GitHub 저장소 자신의 AWS 환경에 스택을 배포하십시오!


저자에 관하여

AWS Lambda PlatoBlockchain Data Intelligence에서 모델 엔드포인트를 호스팅하는 MLOps 솔루션을 배포합니다. 수직 검색. 일체 포함.로렌스 반 데르 마스 AWS Professional Services의 데이터 과학자입니다. 그는 AWS에서 기계 학습 솔루션을 구축하는 고객과 긴밀히 협력하며 기계 학습이 우리가 알고 있는 세상을 어떻게 변화시키고 있는지에 대해 열정적입니다.

AWS Lambda PlatoBlockchain Data Intelligence에서 모델 엔드포인트를 호스팅하는 MLOps 솔루션을 배포합니다. 수직 검색. 일체 포함.왕캉캉 AWS Professional Services의 AI/ML 컨설턴트입니다. 그녀는 의료 및 생명과학 분야에서 AI/ML 솔루션을 배포한 광범위한 경험을 가지고 있습니다. 또한 기업 고객이 확장 가능한 AI/ML 플랫폼을 구축하여 데이터 과학자의 클라우드 여정을 가속화하도록 돕는 것을 즐깁니다.

AWS Lambda PlatoBlockchain Data Intelligence에서 모델 엔드포인트를 호스팅하는 MLOps 솔루션을 배포합니다. 수직 검색. 일체 포함.셀레나 타바라 AWS Professional Services의 데이터 과학자입니다. 그녀는 AWS 플랫폼에서 혁신을 통해 비즈니스 성과를 달성하기 위해 고객과 매일 협력합니다. 여가 시간에는 피아노 연주, 하이킹, 농구 관람을 즐깁니다.

마이클 월너 마이클 월너 AWS Professional Services의 AI/ML에 중점을 둔 선임 컨설턴트입니다. Michael은 클라우드 여정에서 고객이 AWSome이 되도록 지원하는 데 열정적입니다. 그는 제조업에 열광하며 데이터를 통해 제조업 공간을 변화시키는 일을 즐깁니다.

타임 스탬프 :

더보기 AWS 기계 학습