VMware가 GitLab, Amazon MWAA 및 Amazon SageMaker를 사용하여 처음부터 MLOps 파이프라인을 구축한 방법

VMware가 GitLab, Amazon MWAA 및 Amazon SageMaker를 사용하여 처음부터 MLOps 파이프라인을 구축한 방법

소스 노드 : 2009167

이 게시물은 VMware Carbon Black의 머신 러닝 엔지니어인 Mahima Agarwal과 선임 엔지니어링 관리자인 Deepak Mettem과 공동으로 작성되었습니다.

VMware 카본 블랙 최신 사이버 공격의 전체 스펙트럼에 대한 보호를 제공하는 유명한 보안 솔루션입니다. 제품에서 생성된 테라바이트의 데이터를 사용하여 보안 분석 팀은 기계 학습(ML) 솔루션을 구축하여 중요한 공격을 표면화하고 소음에서 새로운 위협을 집중 조명합니다.

VMware Carbon Black 팀은 ML 수명 주기에서 워크플로를 오케스트레이션 및 자동화하고 모델 교육, 평가 및 배포를 지원하는 사용자 지정 종단 간 MLOps 파이프라인을 설계하고 구축하는 것이 중요합니다.

이 파이프라인을 구축하는 두 가지 주요 목적이 있습니다. 후기 단계 모델 개발을 위해 데이터 과학자를 지원하고, 대량 및 실시간 프로덕션 트래픽에서 모델을 제공하여 제품에서 표면 모델 예측을 지원합니다. 따라서 VMware Carbon Black과 AWS는 다음을 사용하여 사용자 지정 MLOps 파이프라인을 구축하기로 결정했습니다. 아마존 세이지 메이커 사용 용이성, 다용성 및 완벽하게 관리되는 인프라 때문입니다. 다음을 사용하여 ML 교육 및 배포 파이프라인을 조율합니다. Apache Airflow용 Amazon 관리형 워크플로 (Amazon MWAA) 덕분에 자동 확장 또는 인프라 유지 관리에 대해 걱정할 필요 없이 프로그래밍 방식으로 워크플로 및 파이프라인을 작성하는 데 더 집중할 수 있습니다.

이 파이프라인을 사용하면 한때 Jupyter 노트북 기반 ML 연구였던 것이 이제는 데이터 과학자의 수동 개입이 거의 없이 프로덕션에 모델을 배포하는 자동화된 프로세스가 되었습니다. 이전에는 모델을 훈련, 평가 및 배포하는 프로세스에 하루 이상 걸릴 수 있었습니다. 이 구현으로 모든 것이 트리거에 불과하며 전체 시간이 몇 분으로 단축되었습니다.

이 게시물에서 VMware Carbon Black과 AWS 설계자는 다음을 사용하여 맞춤형 ML 워크플로를 구축하고 관리하는 방법에 대해 논의합니다. Gitlab, Amazon MWAA 및 SageMaker. 지금까지 달성한 ​​성과, 파이프라인의 추가 개선 사항, 그 과정에서 얻은 교훈에 대해 논의합니다.

솔루션 개요

다음 다이어그램은 ML 플랫폼 아키텍처를 보여줍니다.

높은 수준의 솔루션 설계

높은 수준의 솔루션 설계

이 ML 플랫폼은 다양한 코드 리포지토리의 다양한 모델에서 사용하도록 구상 및 설계되었습니다. 우리 팀은 GitLab을 소스 코드 관리 도구로 사용하여 모든 코드 저장소를 유지 관리합니다. 모델 리포지토리 소스 코드의 모든 변경 사항은 다음을 사용하여 지속적으로 통합됩니다. 깃랩 CI, 파이프라인에서 후속 워크플로(모델 교육, 평가 및 배포)를 호출합니다.

다음 아키텍처 다이어그램은 종단 간 워크플로 및 MLOps 파이프라인과 관련된 구성 요소를 보여줍니다.

엔드투엔드 워크플로우

엔드투엔드 워크플로우

ML 모델 교육, 평가 및 배포 파이프라인은 Amazon MWAA를 사용하여 오케스트레이션됩니다. 방향성 비순환 그래프 (가리비). DAG는 실행 방법을 알려주는 종속성 및 관계로 구성된 태스크 모음입니다.

높은 수준에서 솔루션 아키텍처에는 세 가지 주요 구성 요소가 포함됩니다.

  • ML 파이프라인 코드 저장소
  • ML 모델 교육 및 평가 파이프라인
  • ML 모델 배포 파이프라인

이러한 서로 다른 구성 요소를 관리하는 방법과 서로 상호 작용하는 방법에 대해 논의해 보겠습니다.

ML 파이프라인 코드 저장소

모델 리포지토리가 MLOps 리포지토리를 다운스트림 파이프라인으로 통합하고 데이터 과학자가 모델 리포지토리에서 코드를 커밋하면 GitLab 실행기가 해당 리포지토리에 정의된 표준 코드 유효성 검사 및 테스트를 수행하고 코드 변경 사항을 기반으로 MLOps 파이프라인을 트리거합니다. Gitlab의 다중 프로젝트 파이프라인을 사용하여 여러 리포지토리에서 이 트리거를 활성화합니다.

MLOps GitLab 파이프라인은 특정 단계 세트를 실행합니다. pylint를 사용하여 기본 코드 유효성 검사를 수행하고 Docker 이미지 내에서 모델의 교육 및 추론 코드를 패키징하고 컨테이너 이미지를 게시합니다. Amazon Elastic Container Registry (아마존 ECR). Amazon ECR은 고성능 호스팅을 제공하는 완전관리형 컨테이너 레지스트리이므로 어디에서나 애플리케이션 이미지와 아티팩트를 안정적으로 배포할 수 있습니다.

ML 모델 교육 및 평가 파이프라인

이미지가 게시된 후 교육 및 평가를 트리거합니다. 아파치 에어 플로우 통해 파이프라인 AWS 람다 기능. Lambda는 서버를 프로비저닝하거나 관리하지 않고도 거의 모든 유형의 애플리케이션 또는 백엔드 서비스에 대한 코드를 실행할 수 있는 서버리스 이벤트 기반 컴퓨팅 서비스입니다.

파이프라인이 성공적으로 트리거되면 교육 및 평가 DAG를 실행하여 SageMaker에서 모델 교육을 시작합니다. 이 훈련 파이프라인의 끝에서 식별된 사용자 그룹은 다음을 통해 이메일을 통해 훈련 및 모델 평가 결과가 포함된 알림을 받습니다. 아마존 단순 알림 서비스 (아마존 SNS)와 슬랙. Amazon SNS는 A2A 및 A2P 메시징을 위한 완전관리형 게시/구독 서비스입니다.

평가 결과를 면밀히 분석한 후 데이터 과학자 또는 ML 엔지니어는 새로 학습된 모델의 성능이 이전 버전보다 더 나은 경우 새 모델을 배포할 수 있습니다. 모델의 성능은 모델별 메트릭(예: F1 점수, MSE 또는 혼동 매트릭스)을 기반으로 평가됩니다.

ML 모델 배포 파이프라인

배포를 시작하기 위해 사용자는 동일한 Lambda 함수를 통해 배포 DAG를 트리거하는 GitLab 작업을 시작합니다. 파이프라인이 성공적으로 실행되면 새 모델로 SageMaker 엔드포인트를 생성하거나 업데이트합니다. 또한 Amazon SNS 및 Slack을 사용하여 이메일을 통해 엔드포인트 세부 정보가 포함된 알림을 보냅니다.

파이프라인 중 하나에서 오류가 발생하면 동일한 통신 채널을 통해 사용자에게 알림이 전송됩니다.

SageMaker는 지연 시간이 짧고 처리량이 높은 추론 워크로드에 이상적인 실시간 추론을 제공합니다. 이러한 엔드포인트는 완벽하게 관리되고 로드 밸런싱되며 자동 확장되며 고가용성을 위해 여러 가용 영역에 배포할 수 있습니다. 파이프라인은 모델이 성공적으로 실행된 후 모델에 대해 이러한 엔드포인트를 생성합니다.

다음 섹션에서는 다양한 구성 요소를 확장하고 세부 정보를 살펴봅니다.

GitLab: 패키지 모델 및 트리거 파이프라인

우리는 GitLab을 코드 리포지토리로 사용하고 모델 코드를 패키징하고 다운스트림 Airflow DAG를 트리거하는 파이프라인에 사용합니다.

다중 프로젝트 파이프라인

상위 파이프라인(업스트림)이 모델 저장소이고 하위 파이프라인(다운스트림)이 MLOps 저장소인 다중 프로젝트 GitLab 파이프라인 기능이 사용됩니다. 각 리포지토리는 .gitlab-ci.yml을 유지하며 업스트림 파이프라인에서 활성화된 다음 코드 블록은 다운스트림 MLOps 파이프라인을 트리거합니다.

trigger: project: path/to/ml-ops branch: main strategy: depend

업스트림 파이프라인은 모델 코드를 패키징 및 CI 게시 작업이 트리거되는 다운스트림 파이프라인으로 보냅니다. 모델 코드를 컨테이너화하고 Amazon ECR에 게시하는 코드는 MLOps 파이프라인에서 유지 관리합니다. ACCESS_TOKEN과 같은 변수를 전송합니다(아래에서 생성 가능). 설정, 접속하다), JOB_ID(업스트림 아티팩트 액세스용) 및 $CI_PROJECT_ID(모델 리포지토리의 프로젝트 ID) 변수를 통해 MLOps 파이프라인이 모델 코드 파일에 액세스할 수 있습니다. 와 더불어 작업 아티팩트 다운스트림 리포지토리는 다음 명령을 사용하여 원격 아티팩트에 액세스합니다.

curl --output artifacts.zip --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/jobs/42/artifacts"

모델 저장소는 다음을 사용하여 트리거하는 단계를 확장하여 동일한 저장소의 여러 모델에 대한 다운스트림 파이프라인을 사용할 수 있습니다. 확장하다 다른 단계에서 동일한 구성을 재사용할 수 있는 GitLab의 키워드입니다.

모델 이미지를 Amazon ECR에 게시한 후 MLOps 파이프라인은 Lambda를 사용하여 Amazon MWAA 교육 파이프라인을 트리거합니다. 사용자 승인 후 동일한 Lambda 함수를 사용하여 모델 배포 Amazon MWAA 파이프라인을 트리거합니다.

시맨틱 버전 관리 및 다운스트림 버전 전달

버전 ECR 이미지 및 SageMaker 모델에 대한 사용자 지정 코드를 개발했습니다. MLOps 파이프라인은 모델 코드가 컨테이너화되는 단계의 일부로 이미지 및 모델에 대한 시맨틱 버전 관리 논리를 관리하고 버전을 이후 단계에 아티팩트로 전달합니다.

재교육

재교육은 ML 수명 주기의 중요한 측면이므로 파이프라인의 일부로 재교육 기능을 구현했습니다. SageMaker list-models API를 사용하여 모델 재교육 버전 번호 및 타임스탬프를 기반으로 재교육 여부를 식별합니다.

다음을 사용하여 재교육 파이프라인의 일일 일정을 관리합니다. GitLab의 일정 파이프라인.

Terraform: 인프라 설정

Amazon MWAA 클러스터, ECR 리포지토리, Lambda 함수 및 SNS 주제 외에도 이 솔루션은 다음을 사용합니다. AWS 자격 증명 및 액세스 관리 (IAM) 역할, 사용자 및 정책 아마존 단순 스토리지 서비스 (Amazon S3) 버킷 및 아마존 클라우드 워치 로그 전달자.

파이프라인 전체에 관련된 서비스에 대한 인프라 설정 및 유지 관리를 간소화하기 위해 다음을 사용합니다. 테라 폼 인프라를 코드로 구현합니다. 인프라 업데이트가 필요할 때마다 코드 변경은 우리가 설정한 GitLab CI 파이프라인을 트리거하여 변경 사항을 검증하고 다양한 환경에 배포합니다(예: dev, stage 및 prod 계정의 IAM 정책에 대한 권한 추가).

Amazon ECR, Amazon S3 및 Lambda: 파이프라인 촉진

파이프라인을 촉진하기 위해 다음과 같은 주요 서비스를 사용합니다.

  • 아마존 ECR – 모델 컨테이너 이미지를 유지하고 편리하게 검색할 수 있도록 시맨틱 버전으로 태그를 지정하고 다음에 따라 설정된 ECR 리포지토리에 업로드합니다. ${project_name}/${model_name} 테라폼을 통해 이를 통해 서로 다른 모델 간에 우수한 격리 계층을 사용할 수 있으며 사용자 지정 알고리즘을 사용하고 원하는 모델 매니페스트 정보(모델 이름, 버전, 교육 데이터 경로 등)를 포함하도록 추론 요청 및 응답의 형식을 지정할 수 있습니다.
  • 아마존 S3 – S3 버킷을 사용하여 모델 학습 데이터, 모델당 학습된 모델 아티팩트, Airflow DAG 및 파이프라인에 필요한 기타 추가 정보를 유지합니다.
  • 람다 – Airflow 클러스터는 보안을 위해 별도의 VPC에 배포되기 때문에 DAG에 직접 액세스할 수 없습니다. 따라서 역시 Terraform으로 유지 관리되는 Lambda 함수를 사용하여 DAG 이름으로 지정된 DAG를 트리거합니다. 적절한 IAM 설정을 통해 GitLab CI 작업은 구성을 통해 요청된 교육 또는 배포 DAG로 전달되는 Lambda 함수를 트리거합니다.

Amazon MWAA: 교육 및 배포 파이프라인

앞에서 언급했듯이 Amazon MWAA를 사용하여 교육 및 배포 파이프라인을 조율합니다. 우리는 다음에서 사용할 수 있는 SageMaker 연산자를 사용합니다. Airflow용 Amazon 공급자 패키지 SageMaker와 통합합니다(jinja 템플릿 방지).

이 교육 파이프라인에서 다음 연산자를 사용합니다(다음 워크플로 다이어그램 참조).

MWAA 교육 파이프라인

MWAA 교육 파이프라인

배포 파이프라인에서 다음 연산자를 사용합니다(다음 워크플로 다이어그램 참조).

모델 배포 파이프라인

모델 배포 파이프라인

Slack과 Amazon SNS를 사용하여 오류/성공 메시지와 평가 결과를 두 파이프라인에 게시합니다. Slack은 다음을 포함하여 메시지를 사용자 지정할 수 있는 다양한 옵션을 제공합니다.

  • SnsPublishOperator - 우리는 사용 SnsPublishOperator 성공/실패 알림을 사용자 이메일로 보내기 위해
  • 슬랙 API – 우리는 수신 웹훅 URL 파이프라인 알림을 원하는 채널로 가져오기 위해

CloudWatch 및 VMware Wavefront: 모니터링 및 로깅

CloudWatch 대시보드를 사용하여 엔드포인트 모니터링 및 로깅을 구성합니다. 각 프로젝트에 특정한 다양한 운영 및 모델 성능 메트릭을 시각화하고 추적하는 데 도움이 됩니다. 그 중 일부를 추적하도록 설정된 Auto Scaling 정책 외에도 CPU 및 메모리 사용량, 초당 요청 수, 응답 대기 시간 및 모델 지표의 변화를 지속적으로 모니터링합니다.

CloudWatch는 VMware Tanzu Wavefront 대시보드와도 통합되어 프로젝트 수준에서 모델 엔드포인트 및 기타 서비스에 대한 지표를 시각화할 수 있습니다.

비즈니스 이점 및 향후 계획

ML 파이프라인은 ML 서비스 및 기능에 매우 중요합니다. 이 게시물에서는 AWS의 기능을 사용하는 종단 간 ML 사용 사례에 대해 논의했습니다. 우리는 SageMaker 및 Amazon MWAA를 사용하여 사용자 지정 파이프라인을 구축했습니다. 이 파이프라인은 프로젝트와 모델 전체에서 재사용할 수 있고 ML 수명 주기를 자동화하여 모델 교육에서 프로덕션 배포까지의 시간을 10분으로 단축했습니다.

ML 수명 주기 부담을 SageMaker로 이전하면서 모델 교육 및 배포를 위한 최적화되고 확장 가능한 인프라를 제공했습니다. SageMaker로 제공되는 모델은 밀리초 지연 시간과 모니터링 기능으로 실시간 예측을 하는 데 도움이 되었습니다. 간편한 설정과 인프라 관리를 위해 Terraform을 사용했습니다.

이 파이프라인의 다음 단계는 예약되었거나 모델 드리프트 감지를 기반으로 하는 재훈련 기능으로 모델 훈련 파이프라인을 개선하고, 섀도우 배포 또는 A/B 테스트를 지원하여 더 빠르고 적격한 모델 배포 및 ML 계보 추적을 지원하는 것입니다. 평가도 할 예정입니다 Amazon SageMaker 파이프 라인 이제 GitLab 통합이 지원되기 때문입니다.

교훈

이 솔루션을 구축하는 과정에서 초기에 일반화해야 하지만 과도하게 일반화해서는 안 된다는 사실을 배웠습니다. 아키텍처 설계를 처음 마쳤을 때 모범 사례로 모델 코드에 대한 코드 템플릿을 만들고 적용하려고 했습니다. 그러나 개발 프로세스 초기 단계였기 때문에 템플릿이 너무 일반화되었거나 너무 상세하여 향후 모델에 재사용할 수 없었습니다.

파이프라인을 통해 첫 번째 모델을 전달하고 나니 이전 작업에서 얻은 인사이트를 바탕으로 자연스럽게 템플릿이 나왔습니다. 파이프라인은 첫날부터 모든 것을 할 수 없습니다.

모델 실험과 생산에는 종종 매우 다른(또는 때로는 상충되는) 요구 사항이 있습니다. 팀으로서 처음부터 이러한 요구 사항의 균형을 맞추고 그에 따라 우선 순위를 지정하는 것이 중요합니다.

또한 서비스의 모든 기능이 필요하지 않을 수도 있습니다. 서비스의 필수 기능을 사용하고 모듈화된 디자인을 갖는 것이 보다 효율적인 개발과 유연한 파이프라인의 핵심입니다.

결론

이 게시물에서는 데이터 과학자의 수동 개입이 거의 없이 프로덕션에 모델을 배포하는 프로세스를 자동화하는 SageMaker 및 Amazon MWAA를 사용하여 MLOps 솔루션을 구축하는 방법을 보여주었습니다. SageMaker, Amazon MWAA, Amazon S3 및 Amazon ECR과 같은 다양한 AWS 서비스를 평가하여 완전한 MLOps 솔루션을 구축하는 것이 좋습니다.

*Apache, Apache Airflow 및 Airflow는 Apache Software Foundation 미국 및 / 또는 기타 국가에서.


저자에 관하여

 디팍 메템 VMware, Carbon Black Unit의 선임 엔지니어링 관리자입니다. 그와 그의 팀은 고객에게 기계 학습 기반 솔루션을 실시간으로 제공하기 위해 고가용성, 확장성 및 탄력성을 갖춘 스트리밍 기반 애플리케이션 및 서비스를 구축하기 위해 노력하고 있습니다. 그와 그의 팀은 또한 데이터 과학자가 프로덕션 환경에서 ML 모델을 구축, 교육, 배포 및 검증하는 데 필요한 도구를 만드는 일을 담당하고 있습니다.

마히마 아가르왈 VMware, Carbon Black Unit의 기계 학습 엔지니어입니다.
그녀는 VMware CB SBU용 기계 학습 플랫폼의 핵심 구성 요소 및 아키텍처를 설계, 구축 및 개발하는 일을 합니다.

밤시 크리슈나 에나보탈라 AWS의 선임 응용 AI 전문 설계자입니다. 그는 영향력이 큰 데이터, 분석 및 기계 학습 이니셔티브를 가속화하기 위해 다양한 부문의 고객과 협력합니다. 그는 추천 시스템, NLP, AI 및 ML의 컴퓨터 비전 영역에 열정적입니다. 업무 외적으로 Vamshi는 RC 장비(비행기, 자동차, 드론)를 만드는 RC 애호가이며 정원 가꾸기도 즐깁니다.

사힐 타파르 엔터프라이즈 솔루션 아키텍트입니다. 그는 고객과 협력하여 고객이 AWS 클라우드에서 가용성이 높고 확장 가능하며 탄력적인 애플리케이션을 구축하도록 돕습니다. 그는 현재 컨테이너 및 기계 학습 솔루션에 주력하고 있습니다.

타임 스탬프 :

더보기 AWS 기계 학습