AI 솔루션/MLOps

[MLOps] MLOps 이해와 플랫폼 소개

MNC 2022. 6. 9. 16:03

안녕하세요 마인즈앤컴퍼니입니다.

 

MLOps에 대하여 여러분들께서는 얼마나 알고 계신가요?

 

오늘은 소프트웨어의 빈번한 변화와 배포에 대응하는 프로세스의 향상을 도모하며, 개발과 운영 사이의 갭을 줄이는 도구로 사용되는 DevOps 기반의 소프트웨어 개발 방법과 함께 ML 모델 개발 전 과정의 프로세스를 통합하는 방법인 MLOps에 대하여 알아보겠습니다!


MLOps 의 이해와 대표적인 MLOps 플랫폼 소개 

 

작성: 마인즈앤컴퍼니 함명호 상무

 

AI 기술의 발전에 따라 최근 많은 소프트웨어 제품이나 서비스들은 AI를 결합하는 형태로 발전하고 있습니다.

이에 따라 소프트웨어 개발 프로세스에도 많은 변화가 생겼는데 

1.  데이터를 분석하고 정제하는 과정

2.  정제된 데이터로 예측값을 도출해 내기 위한 모델을 만드는 과정

두 가지 과정이 추가되었습니다.

하나의 소프트웨어 제품이나 서비스를 만들기 위해 전통적인 소프트웨어 개발자 이외에 데이터 분석가와 데이터 과학자가 협업을 해야 하는 프로세스의 변화가 생긴 것입니다

 

근래 소프트웨어 개발의 라이프사이클은 이전보다 주기가 빨라져서 코드의 수정과 프로덕션용으로 빌드하기 위한 통합과정이 빈번해지게 되었는데, 이런 변화에 따라  지속적 통합(CI) 지속적 배포(CD) 불리는 소프트웨어적 운영 방법론이 나오기도 했습니다.

CI, CD 개념과 함께 DevOps(Development and Operations) 등장은 소프트웨어의 빈번한 변화와 배포에 대응하는 프로세스의 향상을 도모하며, 개발과 운영 사이의 갭을 줄이는 도구로써 인기가 높아지고 있습니다. DevOps 기반의 소프트웨어 개발 방법과 함께 ML 모델 개발 과정의 프로세스를 통합한 방법을 MLOps(Machine Learning Operations)라고 부릅니다. MLOps ML 모델과 CICD(Continuous Integration Continuous Delivery) 파이프라인을  이용한 관리 기능을 통합하여 구성원간 효율적인 협업을 가능하게 하고, 보다 신뢰성 있는 서비스를 제공하는데 도움을 있습니다. MLOps 중심으로 협업을 하는 구성원은 데이터 과학자, DevOps 엔지니어, IT 전문가 등이 있습니다

 


DevOps?

 

DevOps 기반의 소프트웨어 개발 방법은 품질, 신뢰성, 보안성 등을 지원하면서 배포의 주기와 속도를 향상 시킬수 있습니다. 근래 많은 기업들은 소프트웨어와 운영팀간의 원활한 소통을 토대로 자동화된 배포를 지원하기 위한 DevOps 기반 개발 방법론이 하나의 트렌드가 되어 있습니다.  DevOps 지속적인 개발과 통합, 지속적인 배포와 모니터링을 수행하기 위한 프로세스입니다.

DevOps 구성하는 툴들의 스택은 다양한 조합이 가능한데, 예를 들어 소스코드의 버전 컨트롤을 위한 Git, 라이브러리와 의존성 있는 환경을 패키징한 Docker 컨테이너, 코드의 통합 배포를 위한 Jenkins등이 있습니다.

 

 

MLOps?

MLOps의 구성

 

MLOps ML 어플리케이션과 DevOps사이에 가교역할을 해서 프로덕션 환경에 ML 모델의 배포와 관리를 자동화 있게 도와줍니다

 

조직 내 MLOps 도입함으로써 가져 올수 있는 이점을 누리기 위해 MLOps 조직간 협업을 도와주고, 지속적인 통합/배포와 모니터링을 수행할 있는 기능을 갖춰야 합니다.

MLOps 이용한 개발 주기에는 크게 데이터, 모델, 코드의 3가지 컴포넌트가 중심이 되고, 다음 테스크를 수행하기 위한 자동화 툴이 필요합니다.

  • 데이터 엔지니어링 테스크(데이터 수집, 데이터 분석, 데이터 정제)
  • 데이터 및 모델의 버전 컨트롤, 모델 개발 코드
  • 자동화를 위한 CICD 파이프라인
  • 자동화된 모델 배포 및 테스트 자동화
  • 모니터링을 통한 성능 평가

 

ML 라이프사이클에 대하여

ML라이프사이클

ML 라이프사이클의 시작은 사업화팀과 도메인 전문가에 의한 비즈니스 요구사항 분석에서 출발합니다. 요구사항에 기반하여 데이터 수집 방법을 결정하고, 데이터의 어떤 피처를 사용할지, 그리고 어떤 종류의 모델을 사용할지 등을 결정 하기 위하여 데이터 엔지니어, 데이터 과학자, ML 엔지니어등이 협업을 합니다. 프로덕션 배포 전에 소프트웨어 엔지니어, 데이터 엔지니어, QA 엔지니어가 협업을 릴리즈 환경에 대한 준비와 QA 진행합니다. 프로덕션 환경 개발에는 DevOps 엔지니어, 데이터 엔지니어가 참여하며, DevOps 개발방법론에 기반하여 확장성, 보안, 신뢰성등을 만족하도록 개발을 수행합니다. 마지막으로 DevOps 기술에 기반한 지속적인 모니터링과 성능평가가 수행됩니다.

 


 

MLOps 플랫폼 소개

 

MLOps 플랫폼은 ML 라이프사이클을 쉽게 관리하고 빠르고 지속적인 배포를 지원 합니다. 아래 그림은 ML 라이프사이클의 단계별 필요한 기능을 제공하는 대표적인 MLOps 플랫폼의 예를 도식화 것입니다.

MLOps 플랫폼

 

글에서는 대표적으로 많이 사용되는 MLOps 플랫폼들에 대해 간략히 소개하겠습니다.

 

1. Kubeflow

Kubeflow Kubernetes, ML flow 합한 의미로, Kubernetes 기반으로 ML 워크플로를 구축하고 배포하기 위해 제공되는 플랫폼입니다. Kubeflow 구글에서 처음 시작된 오픈소스 플랫폼이고, ML 워크플로를 관리하고 모니터링하기 위한 UI 인터페이스를 제공하고, 노트북 서버, Kubeflow pipeline, KFServing(모델 배포와 서빙을 위한 툴킷), training operator등을 제공합니다. 현재까지의 버전은 온전한 CICD 위한 툴은 제공하지 않지만, Kubeflow pipeline 이용해 재현 가능하고, 자동화된 간소한 워크플로를 만들 수는 있습니다

아래 그림은 Kubeflow 구성요소와 아키텍처 입니다.

kubeflow의 구성요소와 아키텍처



2. MLFlow

MLFlow ML 라이프사이클을 관리하기 위한 non-cloud, 오픈소스 플랫폼이며, 크게 다음 4개의 기능을 포함합니다.

  • MLflow tracking(실험관리): 모든 입력 데이터, 버전, 출력값
  • 등의 로깅정보를 수집하고, 버전별 모델의 하이퍼파라미터등을 저장해 버전별 비교 가능
  • MLFlow project: ML 코드의 재사용, 재현성을 돕는 패키징 툴
  • MLFlow model: ML 모델을 배포하기 위해 패키징 하는 포맷
  • MLflow model registry: ML 워크플로의 산출물을 저장하기 위한 스토어

 

더불어 MLFlow 배포된 모델의 성능 모니터링을 통한 통계를 제공합니다. 그러나 빌트인 노트북과 노트북의 버전 관리 기능을 제공하지 않고, 사용자 관리 기능을 제공하지 않는 단점이 있습니다.

 

3. Iterative Enterprise

Iterative Enterprise DVC(Data Version Control), CML(Continuous Machine Learning)으로 구성되며, ML 모델, 데이터셋, 실험 등을 구동하고 관리하는 기능을 포함합니다. 데이터 버전 관리는 MLOps에서 매우 중요하며, 특히 대용량 데이터셋을 다룰때 특히 중요합니다. DVC 플랫폼 독립적인 오픈소스 버전 시스템이며, 모델, 데이터, 실험 데이터, 메트릭, 코드 등의 버전을 관리할 있습니다. CML ML 프로젝트를 수행함에 있어서 CICD 용이하게 해줍니다. GitLab, GitHub 의존성이 있고, 각각의 Git pull request 이용해 수정사항 트레킹을 있고, 메트릭, 플롯 등을 포함하는 리포트를 자동 생성해 주기도 합니다.

 

4. DataRobot

DataRobot 모델 언어, 배포 플랫폼에 상관없이 모델의 배포, 모니터링, 모델 관리를 할수 있는 통합된 툴을 제공합니다. 많은 프로그래밍 언어와 라이브러리의 지원, 개발 환경과 코드를 관리할 있는 리포지토리를 제공합니다. 그러나 인스턴스를 사용하기 위해 라이센스를 구입해야 합니다.

아래 그림은 DataRobot 아키텍처 입니다.

DataRobot 아키텍처

 

5. Allegro.ai(ClearML)

Allegro.ai 오픈소스 기반 모델 배포 툴을 제공합니다. ClearML Allegro.ai 제품중 하나이고, 실험관리, 메타 데이터 관리, 모델 배포 기능 등과 함께 주피터 노트북과 VSCode 기반 학습용 인스턴스를 제공합니다.

아래 그림은 ClearML의 아키텍처 스택입니다.

ClearML 아키텍처 스텍

6. MLReef

오픈소스 git 기반의 MLOps 플랫폼이며, 공유 기반으로 사용자간 협업해 개발이 가능하며, 다른 사용자의 코드 복제도 가능합니다. 공유를 기반으로 적은 비용으로 효율적인 개발이 가능한 컨셉의 플랫폼이며, On-Premise로도 설치해 사용할 있습니다.

git 기반의 데이터 관리, 코드 리포지토리 게시, 실험 관리등이 가능하며, 파이프라인 배포 기능을 통한 CICD 제공합니다.

아래 그림은 CICD를 포함하는 MLReef의 아키텍처 입니다.

MLReef 아키텍처

 

7. Streamlit

Streamlit 보다 효율적으로 ML 모델을 호스팅해 어플리케이션을 만들수 있는 python library 제공하는 서비스입니다. 기본적으로 어플리케이션을 제작하고 호스팅을 돕는 성격이 강한 서비스이긴 하지만, ML 모델에 특화된 몇가지 기능들을 제공하는데 모델의 배포, 데이터셋 관리, 성능 모니터링등의 기능을 포함하고 있습니다.


클라우드 서비스 provider MLOps

 

해외 유명 클라우드 서비스 업체들은 보다 많은 기능을 제공하며, 시간당 과금을 통해 운영되는 MLOps 솔루션을 제공해 오고 있습니다. 대표적인 서비스는 Google AI platform, Microsoft Azure, Amazon SageMaker 있습니다

Microsoft Azure 다음과 같은 컴포넌트를 제공합니다.

  • Azure ML: 빌트인 노트북 기반으로 모델 학습 지원
  • Azure pipeline: 모델 빌드, 테스트, 배포를 지원하기 위한 파이프라인 제공
  • Azure monitor: 모델의 성능 평가를 위한 메트릭 분석 기능 제공
  • Azure Kubernetes Service: kubernetes 환경 지원을 위한 서비스

 

Google AI platform 다음의 기능을 제공합니다

  • Dataflow: 데이터의 피처 추출, 변환하기 위한 데이트 관리 기능
  • 모델 학습을 위한 주피터 노트북 인스턴스 제공
  • Cloud build: 모델 빌드, 테스트, 배포 기능
  • TFX: ML pipeline을 배포하기 위한 기능
  • Kubeflow pipeline: Google Kubernetes Engine위에서 ML 배포를 자동화하기 위한 Kubeflow pipeline 통합

 

MLOps 플랫폼 기능 비교

 

MLOps 플랫폼의 기능을 세부적으로 분류하고, MLOps 플랫폼들의 지원 여부를 살펴보겠습니다. 먼저 MLOps 플랫폼 세부 기능은 다음과 같이 분류 하였습니다.

DV: Data Versioning

HT: Hyperparameter Tuning

MEV: Model and Experiment Versioning

PV: Pipeline Versioning

CICD: Continuous Integration Continuous Delivery

MD: Model Deployment

PM: Performance Monitoring

 

  AWS SageMaker와 MLReef가 모든 기능을 지원하는 ML 플랫폼으로 조사가 되었습니다. 반면 나머지 플랫폼들은 일부 기능은 지원하지 않고, 몇가지 특화된 기능에 초점을 맞추고 있는걸 볼수 있습니다. 그러나 어떤 조직에서 MLOps 플랫폼을 도입하기 위해서 플랫폼 유지 비용, 사용성, 보안성, 특화된 기능의 고도화 정도 등 본 글에서 소개하지 않은 요소들도 중요할 것입니다.

아래 표는 각 MLOps 플랫폼에서 제공하는 프로그래밍 언어 및 ML 라이브러리 제공 범위에 대한 조사 결과를 보여주고 있습니다.


ML 어플리케이션의 예측 정확도는 데이터 타입, 학습 알고리즘, 하이퍼파라미터, learning rate, optimizer등 여러 요인과 관계가 있습니다. 강수량 변화 예측 같은 모델은 특히 최신의 실시간 데이터가 필요하고, 보다 정확한 예측을 위해서 모델 재학습 주기가 빨라야 합니다. 이런 경우 재현 가능한 파이프라인을 통해서 사람의 간섭없이 모델을 재학습 할수 있어야 합니다. 다행히도 MLOps 이용해 재학습 여부를 판단하고, 모델을 재학습하고 배포해서 원하는 성능을 유지하는 활동 할수 있습니다. 모델 파이프라인은 미리 개발된 모델을 이용해 자동화된 학습과 배포가 가능하도록 도와줍니다. 데이터, 모델 레지스트리는 수집한 데이터, 학습한 모델들의 버전관리를 쉽게 있도록 지원하며, 데이터, 모델의 재사용과 버전간 성능 비교를 통해 최적의 성능을 유지하도록 도울 있습니다. , 배포를 하기 위해 모델은 패키징 되어 있어야 하고, 모델의 필요 리소스나 시스템 자원 상황에 따라 능동적인 자원의 스케일링을 지원해야 합니다. 모델 성능 유지를 위해 실시간 모니터링이 가능해야 하고, 성능 저하가 발생하면 미리 경고를 있어야 합니다. 마지막으로 사용자가 쉽고 편리하게 사용할 있는 UI 중요한 요소중 하나일 것입니다.


글에서는 MLOps 중요성과 ML 라이프사이클 관리를 위한 대표적인 MLOps 플랫폼들의 특징 장단점에 대해 살펴보았습니다. 글을 통해 MLOps 좀더 이해하고, 도메인에 맞는 플랫폼을 선택하는데 조금이라도 도움이 되었으면 합니다.

 

 

 

Reference

Nipuni Hewage and Dulani Meedeniya, “Machine Learning Operations: A Survey on MLOps Tool Support” arXiv preprint arXiv:2202.10169 (2022).

I. D. Rubasinghe, D. A. Meedeniya, and I. Perera, “Towards traceability management in continuous integration with sat-analyzer,” in Proceedings of 3rd International Conference on Communication and Information Processing (ICCIP), Tokyo, Japan, 2017, pp. 77–81. [Online]. Available: https://doi.org/10.1145/3162957.3162985

D. Meedeniya, I. Rubasinghe, and I. Perera, “Artefact consistency management in devops practice: A survey,” in Tools and Techniques for Software Development in Large Organizations: Emerging Research and Opportunities, V. Pendyala, Ed. IGI Global, 2020, ch. 4, pp. 98–129. [Online]. Available: http://dx.doi.org/10.4018/978-1-7998-1863-2.ch004

R. Ashmore, R. Calinescu, and C. Paterson, “Assuring the machine learning lifecycle: Desiderata, methods, and challenges,” ACM Computing Surveys, vol. 54, no. 5, 2019. [Online]. Available: https://doi.org/10.1145/3453444

V. Manish, “Understanding devops & bridging the gap from continuous integration to continuous delivery,” in Proceedings of Innovative Computing Technology (INTECH), 2015 Fifth International Conference on., Galcia, Spain, 2015. [Online]. Available: https://doi.org/10.1109/INTECH.2015.7173368

A. Paleyes, R.-G. Urma, and N. D. Lawrence, “Challenges in deploying machine learning: a survey of case studies,” in Proceedings of The ML-Retrospectives, Surveys & Meta-Analyses Workshop, NeurIPS 2020, 2020. [Online]. Available: http://arxiv.org/abs/2011.09926

O. Spjuth, J. Frid, and A. Hellander, “The machine learning life cycle and the cloud: implications for drug discovery,” Expert Opinion on Drug Discovery, vol. 16, no. 9, pp. 1071–1079, 2021.

S. Amershi, A. Begel, C. Bird, R. Deline, H. Gall, E. Kamar, N. Nagappan, B. Nushi, and T. Zimmermann, “Software engineering for machine learning: A case study,” in Proceedings of IEEE/ACM International Conference on Software Engineering: Software Engineering in Practice Track (ICSE-SEIP), Montreal, QC, Canada, 2019, pp. 291 – 300. [Online]. Available: https://10.1109/ICSE-SEIP.2019.00042

A. Banerjee, C.-C. Chen, C.-C. Hung, X. Huang, Y. Wang, and R. Chevesaran, “Challenges and experiences with mlops for performance diagnostics in hybrid-cloud enterprise software deployments,” in Proceedings of 2020 USENIX Conference on Operational Machine Learning, 2020. [Online]. Available: https://www.usenix.org/conference/opml20/presentation/banerjee

P. Ruf, M. Madan, C. Reich, and D. Ould-Abdeslam, “Demystifying mlops and presenting a recipe for the selection of open-source tools,” Applied Sciences, vol. 11, no. 19, 2021. [Online]. Available: https://doi.org/10.3390/app11198861