0%

Hello , MLOps

DevOps , MLOps

DevOps도 글과 경험일부로만 접했는데 업무 중에 MLOps에 알아볼 시간이 생겨 정리한다
DevOps의 목표 중 지속적 통합, 테스트 자동화, 그리고 배포 자동화 있다.
DevOps팀은 컴파일, 빌드 그리고 배포(Deploy)를 돕는 자동화된 프로세스/툴들의 묶음인 Workflow/ToolChain 가지고 효율적인 활동을 이어간다.

Dev Workflow
ML Workflow

MLOps는 ML을 위한 DevOps이다.
MLOps의 목표에는 “모델의 실험 및 개발속도 향상” , “프로덕션 환경에 더 빠르게 모델 배포”,”재현가능한 모델을 통해 품질 및 일관성 보장” 등이 있다.

ML시스템 구성
ML파이프라인

대표적인 MLOps의 ToolChain에는 mlflow, Kubeflow가 있다.
ML Workflow를 Experimental Phase, Production Phase로 나누어
각 단계에 대해 지원하는 바를 가난히 보면 좋겠다.
kubeflow-overview-workflow-diagram

mlflow

mlflow의 논리적 컴포넌트 구성은 4개로 구성되어 있다.
mlflow는 단독 파이썬 패키지로 구성되어 있어 가볍고 빠르게 Workflow지원 가능하다.

  • MLflow Tracking : Record and query experiments: code, data, config, and results
  • MLflow Projects : Package data science code in a format to reproduce runs on any platform
  • MLflow Models : Deploy machine learning models in diverse serving environments
  • Model Registry : Store, annotate, discover, and manage models in a central repository

Tracking을 통해 실험시 사용한 파라미터를 기록하고
Project를 통해 어떤 플랫폼에서든 동일한 내용을 보장하는 패키징을 하여 딜리버리 지원
Models로 디플로이를 진행하며
Registry 패키지를 통해 이 전반적인 활동을 지원한다.

mlflow기본개념을 katacoda(https://www.katacoda.com/cfregly/scenarios/mlflow)를 통해 무료 튜토리얼을 진행해 봄으로써 알 수 있다.

mlflow는 가벼운 구성으로 Data관리를 지원하는 dvc , jenkins등
기존 구성이 있거나 나만의 구성을 하는데 어렵지 않을 것 같다.
dvc+mlflow

kubeflow

kubeflow의 논리적 컴포넌트 구성은 4개로 구성되어 있다.
kubeflow는 여러 패키지들의 복합구성으로 복잡하지만 더 많은 기능을 제공한다.
각 패키지들은 독립적으로 개발되어 일부만 활용가능하다.

Central Dashboard : The central user interface (UI) in Kubeflow
Metadata : Tracking and managing metadata of machine learning workflows in Kubeflow
Jupyter Notebooks : Using Jupyter notebooks in Kubeflow
Frameworks for Training : Training of ML models in Kubeflow
Hyperparameter Tuning : Hyperparameter tuning of ML models in Kubeflow
Pipelines : ML Pipelines in Kubeflow
Tools for Serving : Serving of ML models in Kubeflow
Multi-Tenancy in Kubeflow : Multi-user isolation and identity access management (IAM)
Miscellaneous : Miscellaneous Kubeflow components

mlflow보다 Kubeflow는 Kubernete기반에서 더 강력한 기능을 제공하여 Workflow를 지원한다.

물리적 컴포넌트 구성을 살펴보면
쿠버네티스 환경을 활용한 모델학습 및 배포등 Job관리지원하는 Fairing
hyperparmeter tuning을 지원하는 Katlib
분산학습 환경 지원하는 MPI Operator등 이 있다

kubeflow도 katacoda(https://www.katacoda.com/kubeflow)를 통해 기본개념을 익힐 수 있는 무료 튜토리얼을 진행해 볼 수 있다.

가장 좋은 도구는 존재하지만 필요한건 나에게 가장 적합한 도구일 것이다.
도입이 이뤄져 인력구성 , 비용등을 따져 다시 한번 비교하는 글을 썼으면 좋겠다.

오픈소스로 구성한 ML시스템개발 사이클

참조

End2End 머신러닝 플랫폼 Kubeflow
딥러닝 추천 시스템 in production
소프트웨어 엔지니어링에서 파이프라인(PIPELINE)은 무엇인가? DEPLOYMENT, CI & CD 파이프라인에 대한 소개
MLOps-Reducing the technical debt of Machine Learning
Awesome-MLOps-Contents
mlops-with-a-feature-store
dvc
mlops
fullstack-deeplearning-bootcamp
Enterprise Intelligence — CD4ML/MLOps