MLOps
MLOps 또는 ML Ops는 프로덕션에서 기계 학습 모델을 안정적이고 효율적으로 배포하고 유지 관리하는 것을 목표로 하는 패러다임입니다. 이 단어는 "머신 러닝"과 소프트웨어 분야의 DevOps의 지속적인 개발 관행의 합성어입니다.
Categories
DevOps vs MLOps
MLOps는 아래와 같은 점들에서 소프트웨어 시스템과 차이를 가진다.
- Testing
- 일반적인 단위, 통합 테스트 외에 데이터 검증, 학습된 모델 품질 평가, 모델 검증이 추가로 필요하다.
- Deployment
- 오프라인에서 학습된 ML모델을 배포하는 수준에 그치는 것이 아니라, 새 모델을 재학습하고, 검증하는 과정을 자동화해야 한다.
- Production
- 일반적으로 알고리즘과 로직의 최적화를 통해 최적의 성능을 낼 수 있는 소프트웨어 시스템과 달리, ML 모델은 이에 더해서 지속적으로 진화하는 data profile 자체만으로도 성능이 저하될 수 있다.
- 즉, 기존 소프트웨어 시스템보다 더 다양한 이유로 성능이 손상될 수 있으므로, 데이터의 summary statistics를 꾸준히 추적하고, 모델의 온라인 성능을 모니터링하여 값이 기대치를 벗어나면 알림을 전송하거나 롤백을 할 수 있어야 한다.
- CI (Continuous Integration)
- CI는 code와 components뿐만 아니라 data, data schema, model에 대해 모두 테스트되고 검증되어야 한다.
- CD (Continuous Delivery)
- 단일 소프트웨어 패키지가 아니라 ML 학습 파이프라인 전체를 배포해야한다.
- CT (Continuous Training)
- ML 시스템만의 속성으로, 모델을 자동으로 학습시키고 평가하는 단계이다.
Data science steps for ML
먼저 business use case와 success criteria들을 정하고 나서 ML 모델을 프로덕션에 배포하기까지, 수동이든 자동이든, 모든 ML 프로젝트에는 다음과 같은 스텝들이 수반된다.
- Data Extraction (데이터 추출)
- 데이터 소스에서 관련 데이터 추출
- Data Analysis (데이터 분석)
- 데이터의 이해를 위한 탐사적 데이터 분석(EDA) 수행
- 모델에 필요한 데이터 스키마 및 특성 이해
- Data Preparation (데이터 준비)
- 데이터의 학습, 검증, 테스트 세트 분할
- Model Training (모델 학습)
- 다양한 알고리즘 구현, 하이퍼 파라미터 조정 및 적용
- Output은 학습된 모델.
- Model Evaluation (모델 평가)
- Holdout test set에서 모델을 평가
- Output은 모델의 성과 평가 metric.
- Model Validation (모델 검증)
- 기준치 이상의 모델 성능이 검증되고, 배포에 적합한 수준인지 검증
- Model Serving (모델 서빙)
- 온라인 예측을 제공하기 위해 REST API가 포함된 마이크로 서비스
- 배치 예측 시스템
- 모바일 서비스의 Embedded 모델
- Model Monitoring (모델 모니터링)
- 모델의 예측 성능을 모니터링
실험 추적 (Experiment tracking) / 실험 관리 (Experiment Mamanagement)
머신러닝 프로젝트는 다양한 모델, 파라메터 및 학습 데이터로 여러 실험을 실행해야 합니다. 실험 추적 툴은 다양한 실험에 필요한 모든 정보(가중치와 하이퍼파라미터, 코드, 학습 결과, 등)를 기록합니다. 이를 통해 실험 구성 요소의 버전과 결과를 추적하고 여러 실험을 비교할 수 있습니다.
- Kedro - 재현 가능하고 유지 가능한 모듈식 데이터 과학 코드를 만들기 위한 오픈 소스 Python 프레임워크입니다.
- ModelDB - 머신러닝 모델 버전 관리, 메타데이터 및 실험 관리를 위한 오픈 소스 시스템입니다.
- MLflow - End-to-End 머신러닝 라이프싸이클을 관리하기 위한 오픈 소스 플랫폼입니다.
- Determined - 모델 생성을 빠르고 쉽게 만드는 오픈 소스 딥러닝 학습 플랫폼입니다.
- Weights & Biases - 데이터 세트에서 프로덕션 모델에 이르기까지 머신러닝 파이프라인 각 부분을 추적하고 시각화하는 도구입니다.
- Polyaxon - 대규모 딥러닝 애플리케이션을 구축, 학습 및 모니터링하기 위한 플랫폼입니다.
- ClearML - ML 워크플로우 간소화하는 자동 마법 스위트가 포함된 End-to-End 플랫폼입니다.
- TensorBoard - ML 모델을 최적화하고 디버그하기 위한 시각화 툴킷입니다.
- Losswise - 에폭마다 git commit을 만드는 방식으로 결과를 저장한다. 시각화 기능도 제공한다.
- Comet.ml
- Aim - An easy-to-use & supercharged open-source experiment tracker.
INFORMATION |
TensorBoard는 ML 실험 결과 분석을 위해 가장 널리 사용하는 도구 중 하나 입니다. 하지만, TensorBoard의 기능 대부분은 하나의 실험에 한정되어 있어 여러 실험을 추적하려면 다른 도구와 조합해야 합니다. |
실험 (Experimentation)
실험 (Experimentation)은 데이터를 분석하고, 프로토타입 모델을 만들며 학습을 구현하는 과정 입니다. 대부분 데이터 과학에 자주 사용하는 Jupyter Notebook 환경을 제공하는 도구들 입니다.
- Kubeflow - 쿠버네티스 환경에서 ML 워크플로우를 단순하고, 이식 가능하며, 확장 가능하게 합니다.
- Jupyter - 라이브 코드, 방정식, 시각화 및 텍스트가 포함된 문서를 만들고 공유할 수 있는 오픈 소스 웹 애플리케이션입니다.
- Polynote - 최고 수준의 Scala를 지원하는 데이터 과학 노트북입니다.
- Spyder - Python을 위한, Python으로 작성된 무료 오픈 소스 과학 환경입니다.
- Apache Zepellin - SQL, Scala, Python, R 등을 사용하여 데이터 기반의 대화형 데이터 분석 및 협업 문서를 지원하는 웹 기반 노트북입니다.
데이터 버전 관리 (Data versioning)
데이터 버전 관리 도구를 사용하면 다양한 버전의 데이터 세트를 잘 구성된 방식으로 관리 할 수 있습니다. 이를 통해 ML 팀은 데이터 변경이 모델 성능에 미치는 영향을 식별하고 데이터 세트가 어떻게 변화하는지 파악하는 것과 같은 통찰력을 얻을 수 있습니다. 데이터 버전 관리는 ML 모델 계보 재현 및 추적을 지원합니다.
- Dolt - 데이터를 위한 Git 입니다. SQL 쿼리를 실행하거나 명령줄 인터페이스로 데이터를 조작할 수 있습니다.
- DVC (Data Version Control) - 머신러닝 프로젝트 재현성을 위한 오픈 소스 버전 관리 시스템입니다.
- Weights & Biases (wandb) - 데이터 세트에서 프로덕션 모델에 이르기까지 머신러닝 파이프라인 각 부분을 추적하고 시각화하는 도구입니다.
- Git LFS - Git으로 대용량 파일의 버전 관리할 수 있는 오픈 소스 도구입니다.
- Pachyderm - MLOps용 데이터 버전 관리 및 파이프라인을 위한 도구입니다.
- lakeFS - 모든 데이터 크기에서 작동하는 오브젝트 스토리지 버킷을 위한 Git입니다.
하이퍼파라미터 튜닝
어떻게 하이퍼파라미터를 튜닝할까? 딥러닝은 말그대로 하이퍼파라미터로 가득하다. 수많은 하이퍼파라미터로 구성된 다차원 공간에서 최적의 설정을 찾는건 쉽지 않다. 하이퍼파라미터 검색은 계산능력이나 돈, 시간에 제약을 받는 반복적인 작업이다. 그래서 하이퍼파라미터를 찾아주는 소프트웨어를 사용하는데 굉장히 도움이 된다.
- Hyperopt: 쉽게 하이퍼파라미터를 찾아주는 파이썬 라이브러리
- SigOpt: Optiomization-as-a-Service API
- Ray Tune
- Weights & Biases
머신러닝 파이프라인 (Pipeline orchestration)
머신러닝 파이프라인 (ML Pipeline)은 상용 환경에서 복잡한 ML 학습과 추론 작업을 단계별로 구성하고 자동화 합니다. 데이터/컨셉 드리프트 발생시 파이프라인을 자동으로 트리거하여 최신 데이터에서 모델을 재학습합니다.
- Apache Airflow - Apache 커뮤니티에서 프로그래밍 방식으로 워크플로우를 작성, 예약 및 모니터링하기 위해 만든 플랫폼입니다.
- Argo Workflows - 쿠버네티스 환경에서 병렬 작업을 오케스트레이션하기 위한 오픈 소스 컨테이너 네이티브 워크플로우 엔진입니다.
- Luigi - 배치 작업의 복잡한 파이프라인을 구축하는데 도움이 되는 Python 패키지입니다.
- Kubeflow - 쿠버네티스 환경에서 ML 워크플로우를 단순하고, 이식 가능하며, 확장 가능하게 합니다.
- Kedro - 재현 가능하고 유지 가능한 모듈식 데이터 과학 코드를 만들기 위한 오픈 소스 Python 프레임워크입니다.
- Nextflow - 소프트웨어 컨테이너를 사용하여 확장 가능하고 재현 가능한 과학 워크플로우를 가능하게 합니다.
- Dagster - 데이터 자산을 개발, 생성 및 관찰하기 위한 오케스트레이션 플랫폼입니다.
- Apache Beam - 미션 크리티컬 프로덕션 워크로드를 위한 배치 및 스트리밍 데이터 처리 도구입니다.
- ZenML - 프로덕션-준비 (production-ready) 된 머신러닝 파이프라인을 생성하기 위한 확장 가능한 오픈 소스 MLOps 프레임워크입니다.
- Flyte - 미션 크리티컬 데이터 및 대규모 머신러닝 프로세스를 위한 워크플로우 자동화 플랫폼입니다.
- Prefect - 최신 인프라용으로 설계된 오픈 소스 워크플로우 관리 시스템입니다.
- Ray - 컴퓨팅 집약적인 Python 워크로드를 간편하게 확장할 수 있는 오픈 소스 도구입니다.
- DVC (Data Version Control) - 는 머신러닝 프로젝트 재현성을 위한 오픈 소스 버전 관리 시스템입니다.
- Polyaxon - 대규모 딥러닝 애플리케이션을 구축, 학습 및 모니터링하기 위한 플랫폼입니다.
- ClearML - ML 워크플로우 간소화하는 자동 마법 스위트가 포함된 End-to-End 플랫폼입니다.
- Pachyderm - MLOps용 데이터 버전 관리 및 파이프라인을 위한 도구입니다.
- Orchest - Jupyter 노트북 및 Python 스크립트를 시각적 파이프라인 편집기와 결합하는 데이터 파이프라인 생성 도구입니다.
런타임 엔진 (Runtime engine)
런타임 엔진 (Runtime engine)은 ML 코드가 실행되는 환경을 제공합니다. 멀티 노드 환경에서 병렬 실행을 위해 쿠버네티스 클러스터에 설치하여 API를 제공하거나 자체 클러스터를 런타임 환경으로 제공 합니다.
- Ray - Ray는 컴퓨팅 집약적인 Python 워크로드를 간편하게 확장할 수 있는 오픈 소스 도구입니다.
- Nuclio - Nuclio는 데이터, I/O 및 컴퓨팅 집약적 워크로드에 중점을 둔 고성능 서버리스 프레임워크 입니다.
- Dask - Dask는 Python의 병렬 컴퓨팅을 위한 유연한 라이브러리입니다.
- Horovod - Horovod를 사용하면 여러 GPU에서 모델을 병렬로 쉽게 훈련할 수 있습니다.
- Apache Spark - Apache Spark는 대규모 데이터 세트 및 분산 컴퓨팅을 위한 데이터 처리 프레임워크입니다.
아티팩트 추적 (Artifact tracking)
실험 및 ML 파이프라인 전반에 걸쳐 데이터세트, 모델 및 중간 결과물을 저장하고 추적합니다.
- Kubeflow - Kubeflow는 쿠버네티스 환경에서 ML 워크플로우를 단순하고, 이식 가능하며, 확장 가능하게 합니다.
- MLflow - MLflow는 End-to-End 머신러닝 라이프싸이클을 관리하기 위한 오픈 소스 플랫폼입니다.
- Polyaxon - Polyaxon은 대규모 딥러닝 애플리케이션을 구축, 학습 및 모니터링하기 위한 플랫폼입니다.
- ClearML - ClearML은 ML 워크플로우 간소화하는 자동 마법 스위트가 포함된 End-to-End 플랫폼입니다.
INFORMATION |
ML 파이프라인의 각 단계나 ML 실험의 실행 결과물들을 아티팩트 (Artifact)라고 합니다. 학습된 모델 체크포인트 파일, 변환된 데이터의 CSV/ Parquet/JSON 파일, 실행 로그 파일등이 여기에 해당 됩니다. |
INFORMATION |
아티팩트 추적 전용 툴은 없습니다. 아티팩트 추적은 ML 파이프라인 도구나 ML 실험 추적 도구의 기능에 포함되어 있습니다. |
모델 레지스트리 (Model registry)
모델 레지스트리 (Model registry)는 중앙 집중식 모델 저장소를 의미 합니다. 학습된 모델의 버전 관리 및 추적 기능을 제공하고, 배포를 위해 모델 입/출력 인터페이스 및 런타임 패키지들에 대한 정보들을 저장 합니다.
- ModelDB - 머신러닝 모델 버전 관리, 메타데이터 및 실험 관리를 위한 오픈 소스 시스템입니다.
- MLflow - End-to-End 머신러닝 라이프싸이클을 관리하기 위한 오픈 소스 플랫폼입니다.
- Determined - 모델 생성을 빠르고 쉽게 만드는 오픈 소스 딥러닝 학습 플랫폼입니다.
- Weights & Biases - 데이터 세트에서 프로덕션 모델에 이르기까지 머신러닝 파이프라인 각 부분을 추적하고 시각화하는 도구입니다.
- ClearML - ML 워크플로우 간소화하는 자동 마법 스위트가 포함된 End-to-End 플랫폼입니다.
모델 서빙 (Model serving)
REST API나 gRPC 엔드포인트를 생성하여 요청를 받으면 추론 결과를 응답합니다. 모델의 배포 타겟이 클라우드일때 사용하는 도구들 입니다.
- Seldon Core - 쿠버네티스 환경에 머신러닝 모델을 대규모로 배포하기 위한 오픈 소스 플랫폼입니다.
- BentoML - ML 모델 배포를 단순화하고 몇 분 만에 프로덕션 규모로 모델을 서빙할 수 있는 오픈 플랫폼입니다.
- NVIDIA Triton (NVIDIA Triton Inference Server) - 모델 배포 및 실행을 표준화하고 프로덕션 환경에서 빠르고 확장 가능한 AI를 제공하는 오픈 소스 추론 서빙 소프트웨어입니다.
- TensorFlow Serving - 프로덕션 환경을 위해 설계된 머신러닝 모델을 위한 유연한 고성능 서빙 시스템입니다.
- KServe - 쿠버네티스 환경에서 높은 확장성과 표준 기반 모델 추론 플랫폼입니다.
- FastAPI - Python으로 API를 구축하기 위한 최신 고성능 웹 프레임워크입니다.
- TorchServe - 프로덕션 환경에서 PyTorch 모델을 제공하고 확장하기 위한 유연하고 사용하기 쉬운 도구입니다.
- Ray - 컴퓨팅 집약적인 Python 워크로드를 간편하게 확장할 수 있는 오픈 소스 도구입니다.
- Cog - 머신러닝 모델을 표준 프로덕션 준비 컨테이너로 패키징할 수 있는 오픈 소스 도구입니다.
- ModelDB - 머신러닝 모델 버전 관리, 메타데이터 및 실험 관리를 위한 오픈 소스 시스템입니다.
- MLflow - End-to-End 머신러닝 라이프싸이클을 관리하기 위한 오픈 소스 플랫폼입니다.
- ClearML - ML 워크플로우 간소화하는 자동 마법 스위트가 포함된 End-to-End 플랫폼입니다.
- Nuclio - 데이터, I/O 및 컴퓨팅 집약적 워크로드에 중점을 둔 고성능 서버리스 프레임워크 입니다.
모델 모니터링 (Model monitoring)
모델 모니터링 도구는 배포된 모델의 성능 저하, 편향 및 데이터 드리프트를 감지합니다.
- Prometheus - 오픈 소스 시스템 모니터링 및 경고 툴킷입니다.
- Grafana - 온라인 시스템 분석 및 모니터링을 위한 오픈 소스 도구입니다.
- Evidently - 모델 수명 주기 전반에 걸쳐 데이터 및 ML 모델 품질을 분석 및 추적하기 위한 도구입니다.
- Alibi Detect - 이상값, 적대적 및 드리프트 감지에 중점을 둔 오픈 소스 Python 라이브러리 입니다.
- ModelDB - 머신러닝 모델 버전 관리, 메타데이터 및 실험 관리를 위한 오픈 소스 시스템입니다.
- ClearML - ML 워크플로우 간소화하는 자동 마법 스위트가 포함된 End-to-End 플랫폼입니다.
머신러닝/딥러닝 프레임워크 (ML/DL framework)
복잡한 머신러닝/딥러닝 모델 개발을 쉽고 효율적으로 할 수 있는 프레임워크들 입니다.
- Tensorflow - 머신러닝을 위한 End-to-End 오픈소스 플랫폼입니다.
- PyTorch - GPU와 CPU를 이용한 딥러닝을 위한 최적화된 텐서 라이브러리입니다.
- Keras - 기계 학습 플랫폼 TensorFlow에서 실행되는 Python으로 작성된 딥 러닝 API입니다.
- scikit-learn - SciPy를 기반으로 구축된 머신러닝을 위한 Python 모듈입니다.
- JAX - CPU, GPU 및 TPU의 NumPy이며 고성능 머신러닝 연구를 위한 자동 미분 기능을 제공합니다.
피처 스토어 (Feature store)
피처 스토어란 피처들을 위한 중앙 저장소 입니다. 피처 스토어는 미가공 데이터를 피처들로 변환하고 저장하며, 모델 학습과 추론에 제공합니다.
- Feast - Feast는 오픈 소스 피처 스토어 입니다. 모델 학습 및 온라인 추론을 위한 분석 데이터를 운용하는 가장 빠른 방법입니다.
- Hopsworks - Hopsworks는 머신러닝 모델을 대규모로 개발 및 운영하는데 사용되는 데이터 집약적 오픈 소스 AI 플랫폼입니다.
- Tecton - Tecton은 엔터프라이즈급 SLA를 사용하여 변환에서 온라인 서비스에 이르기까지 기능의 전체 수명 주기를 오케스트레이션하도록 구축된 완전 관리형 피처 플랫폼입니다.
- Rasgo - Rasgo는 클라우드 데이터 웨어하우스내에서 데이터를 탐색, 변환 및 시각화하기 위한 웹 앱입니다.
INFORMATION |
피처 엔지니어링이 필요하다면 피처 스토어 적용을 검토해보세요. |
데이터 검증 (Data validation)
아웃라이어 (Outlier) 데이터와 유효하지 않은 데이터는 ML 모델에 악영향을 끼칩니다. 데이터 유효성 검사에 도움이 되는 도구들 입니다.
- TFDV (TensorFlow Data Validation) - 학습 및 서빙 데이터의 이상을 식별하고 데이터를 검사하여 자동으로 스키마를 생성할 수 있습니다.
- Deequ - 대규모 데이터 세트의 데이터 품질을 측정하는 "데이터 유닛 테스트"를 정의하기 위해 Apache Spark를 기반으로 구축된 라이브러리입니다.
- DVT (Data Validation Tool) - 이기종 데이터 원본 테이블을 다단계 유효성 검사 기능과 비교하는 Ibis 프레임워크 기반의 오픈 소스 Python CLI 도구입니다.
설명 가능한 AI (XAI, eXplainable AI)
XAI는 AI 모델이 특정 결정을 내린 원인과 그 작동 원리를 사람들이 쉽게 파악할 수 있도록 도와주는 도구와 기술 세트입니다.
- LIME (Local Interpretable Model-agnostic Explanation) - XAI 알고리즘의 일종 입니다.
- SHAP (SHapley Additive Descriptions) - 는 모든 기계 학습 모델의 출력을 설명하기 위한 게임 이론적 접근 방식입니다.
- ELI5 - 머신러닝 분류기를 디버깅하고 추론 결과를 설명하는 데 도움이 되는 파이썬 패키지입니다.
INFORMATION |
XAI는 활발히 연구가 진행되고 있고, 필요성에 대한 기사들은 많지만 실제 적용 사례는 아직 많지 않은것 같습니다. |
All-in-One Solutions
올인원 솔루션은 여태까지의 것들을 모두 제공해주는 솔루션이다.
- Facebook의 FBLearner Flow
- Uber의 Michelangelo
- TesnsorFlow Extended (TFX)
- Google의 Cloud AI Platform
- Amazon의 SageMaker
- Neptune
- FloydHub
- Paperspace
- Determined AI
- Domino Data Lab
See also
Favorite site
- Wikipedia (en) MLOps
- 머신러닝 파이프라인이란? - ML Pipeline에 대하여
- (MLOps 정의) MLOps가 무엇인고?. MLOps의 정의, 그리고 ML Lifecycle에 대해 알아보자 | by Jaemun Jung | Medium
- MLOps란?
- [추천] MLOps for ALL | MLOps for ALL - "모두를 위한 MLOps" 솔루션으로 kubeflow를 선택
- [원문] The rise of AI data infrastructure | Felicis
- 이 글의 목적은 AI 데이터 인프라 환경을 분석하고, 최신 트렌드를 공유하고, 가장 유망한 혁신 영역에 대해 이야기 하는 것
Stack & Tools compare
- 2022년 MLOps 툴 스택
- Compare 45+ MLOps Tools: A comprehensive vendor benchmark in '24
- MLOps Landscape in 2024: Top Tools and Platforms
- Full Steam Ahead: The 2024 MAD (Machine Learning, AI & Data) Landscape – Matt Turck