딜리버스의 MLOps 도입기 — 2장 CI/CD, Workflow, 배포

Dongkyu Ko
딜리버스
Published in
6 min readAug 22, 2023

Automated Machine Learning on AWS 책 내용을 기반으로 만들었습니다.

딜리버스의 MLOps 도입기 — 1장 배경과 목표 (MLOps를 구축하게 된 계기)

구조

딜리버스 MLOps CI/CD, Workflow, 배포

딜리버스의 MLOps CI(Continuous Integration)/CD(Continuous Deployment), Workflow, 배포는 AWS 리소스 기반으로 구축 했으며, 모든 리소스는 소스코드로 관리합니다. CI/CD와 배포는 AWS CDK을 사용해서 인프라를 구성했으며, Workflow는 Step Functions, SageMaker SDK를 사용했습니다.

AWS CDK란?

Step Functions SDK

SageMaker SDK

프로세스

DevOps CI/CD에 대한 자세한 내용은 생략했습니다.

automated machine learning on AWS (p.182, Figure 6.2 — Re-factored CI/CD process)

MLOps CI/CD의 경우 기존 DevOps CI/CD와 지향하는 목표는 유사하지만 ML Workflow를 대입하기 때문에 방법과 특성에는 차이가 있습니다.

MLOps CI는 DevOps CI에서 요구하는 소스코드와 컴포넌트 등의 테스트를 포함하며 추가로 MLOps 모델을 서빙하는 과정에서 요구하는 데이터 프로세싱, 모델 트레이닝, 모델 검증을 포함합니다. MLOps CD는 빠른 주기로 배포하면서 신뢰도를 유지하는 개념은 DevOps CD와 동일하지만 Production 단계에서 정확도가 높은 모델을 서빙하는 차이가 있습니다.

딜리버스 MLOps 구조+ automated machine learning on AWS (p.182, Figure 6.2 — Re-factored CI/CD process)

MLOps CI/CD 프로세스에 딜리버스 MLOps 구조를 통합하면 위와 같은 그림을 볼 수 있습니다. 전체적인 파이프라인의 구성을 위해 AWS CDK를 사용했고 Workflow을 운영하기 위해서는 AWS CodePipeline을 사용했습니다. 그리고 CI 단계에서는 Step Functions를 사용했고 CD 단계에서는 AWS CDK를 사용했습니다.

단계 별 프로세스

위의 내용에서는 전체적인 구조와 프로세스를 보여줬습니다. 지금 이 문단에서는 실질적으로 어떻게 구성하고 실행되는지 설명합니다.

리소스 구성

딜리버스 MLOps를 구축하고 운영하려면 기반이 되는 AWS 리소스들이 필요합니다. AWS 리소스들은 사전에 딜리버스의 MLOps 엔지니어가 AWS CDK를 사용해서 설정하고 구축합니다. 구축되는 리소스들은 다음과 같습니다.

사전에 구축되는 리소스들

  1. IAM Role
  2. S3 (Pipeline에 사용할 S3)
  3. CodeCommit (Git Repository 생성)
  4. CodeBuild (빌드 설정)
  5. CodePipeline (통합된 파이프라인 생성)

위와 같은 리소스들을 사전에 정의하고 구축해야 딜리버스의 데이터 사이언티스트들은 인프라에 대한 사전 설정없이 딜리버스 ML Git Repository에 소스코드 푸시만 해도 결과를 확인하고 모델을 배포할 수 있습니다.

소스코드 작성

데이터 사이언티스트들은 각자의 환경에서 작업을 하고 Daas ML Git Repository에 소스코드를 푸시합니다. 해당 작업을 처음부터 진행하려면 프로세는 아래와 같습니다.

프로세스 (예시)

  1. MLOps 엔지니어에게 CodeCommit 계정 생성 요청

2. 로컬 작업 환경과 CodeCommit Repository Clone

# Git Clone (사전에 codecommit 계정 정보 생성 후 확인)
git clone https://git-codecommit.**.amazonaws.com/v1/repos/daas-ml

3. 소스코드 내 “artifacts” 폴더 확인

Workflow에 따라 소스코드 생성

4. 자유롭게 작업 (추후 다른 단계가 더 필요할 경우 MLOps 엔지니어와 논의)

5. 작업 후 소스코드 푸시

git add -A
git commit -m "Fixed evaluate.py"
git push

CodePipeline 실행

CodeCommit ML Git Repository에 데이터사이언티스트가 소스코드 푸시를 하면 CodePipeline은 MLOps 엔지니어가 사전에 정의한대로 실행됩니다.

배포까지 성공한 Daas ML Codepipeline

결과 확인

CodePipeline 단계별로 특정 슬랙 채널에 알람이 오며, 진행 상황을 확인할 수 있습니다.

CodePipeline 단계 별 진행상황 알람

모델의 성능 결과도 특정 슬랙 채널에서 확인할 수 있으며, 모델 성능 결과 확인 후 모델을 배포 여부를 결정할 수 있습니다.

모델 성능 관련 슬랙 알람

데이터 사이언티스트는 인프라(AWS 리소스)접근 없이 로컬 작업 환경에서 소스코드만 푸시하면 데이터 프로세싱부터 모델 배포까지 한번에 진행할 수 있습니다.

모델 배포

데이터 사이언티스트가 모델 성능 관련 슬랙 알람에서 “Approve”를 클릭하면 모델 배포가 진행됩니다. 모델 배포는 사전에 정의한 CloudFormation으로 구성됩니다. CloudFormation 파일은 AWS CDK 소스코드 기반으로 생성됩니다.

생성된 Daas ML Endpoint

결론

딜리버스 MLOps는 데이터 사이언티스트가 온전히 ML 모델 개발에만 집중할 수 있는 환경에 집중하고 있습니다. (딜리버스에서 사전에 필요한 데이터 수집 및 정제는 데이터엔지니어가 진행하고 있습니다.)

DevOps가 개발자를 위한 개발자라고 하듯이 딜리버스 MLOps는 데이터사이언티스트들을 위한 MLOps 환경을 구축하는게 최종 목표입니다.

Reference

  1. Automated Machine Learning on AWS — 조나단 달버그와 트렌튼 포트히터르

--

--