dev-writeup-2024 / january

개발 1일 1글 스터디
2 stars 0 forks source link

[01-04] MLOps란 #17

Open steammando opened 10 months ago

steammando commented 10 months ago

MLOps에 대해 알아보자

MLOps 프로젝트를 진행하기 이전에 개념들에 대해 정리를 하고 넘어갈 필요가 있다. 먼저 MLOps란 무엇이고 장단점, 주로 사용하는 기술들, 라이프사이클 등을 알아보도록 하자.


간단히 얘기하면 DevOps의 ML 시스템 버전이다.

ML 시스템의 whole lifecycle을 관리하기 위함이니, 단순히 모델뿐만 아니라 데이터를 수집/분석 및 배포 단계까지 MLOps의 대상이 된다.

NVDIA에서 정의한 MLOps의 Lifecycle인데, Data collection 단계부터 validation, evaluation, deployment 단계까지 다 관여하는 것을 볼 수 있다.

물론 MLOps도 방법론 중 하나이기 때문에 정의하는 사람에 따라 단계가 달라질 수는 있다.


ML 어플리케이션을 개발할 때는 모델을 학습하기 위해 높은 퀄리티의 데이터를 계속 준비하고 서빙해야하고, 모니터링이 중요하다.

ML 모델을 프로덕션 단계에서 활용하기 위해서는 단순히 성능 좋은 모델만 있어서는 사용할 수 없다. 테스트도 해야하고, 메타데이터 관리 등등 필요한 요소들이 많다.

MLOps에서는 기존의 DevOps와 조금 다른 점이 test할 때 unit, integration test 이외에도 데이터 검증, 모델 품질 평가, 모델 검증이 추가적으로 필요하다. 또한 배포 시에 모델 재학습 단계가 필요하고, 특이한 점은 일반 서비스는 로직을 최적화하면 성능이 나오지만 ML모델은 data profile만 해도 성능에 부하가 갈 수 있다. 그렇기 때문에 모델의 성능을 모니터링하면서 alert 시스템 구축이 필요하고 롤백 로직이 간단해야한다.

image

구글에서 정의한 Automated CI/CD 플로우차트다.

CI에서는

Feature store는 학습과 서빙에 사용되는 feature를 모아둔 저장소다. primitive data를 처리/가공해서 feature 생성 -> 생성된 feature를 data warehouse에 저장 -> feature의 metadata 저장


구글에서 Lifecycle을 정의했다. https://cloud.google.com/resources/mlops-whitepaper

아래에 해당 paper에 대한 내용을 간략히 정리해본다.

image

Experimentation ML 모델을 개발하는 사람들이 개발하기 수월한 환경을 만들어주어야한다.

Data Processing ML 모델을 위한 데이터를 CI Pipeline에 밀어넣는 단계다. data connector, ML feature engineering이 제공되어야 한다. ML 학습, serving workload를 위한 확장 가능한 배치와 데이터 처리 stream을 지원해야한다.

Model Training ML 모델 학습 알고리즘을 실행하는 단계다. hyperparameter 튜닝을 하는 단계다. AutoML을 사용한다(이건 GCP 얘기하는거같다)

Model Evaluation 모델 효율성을 평가하는 단계다. 다양한 모델의 성능을 시각화하고 비교하고, metric을 측정한다.

Model Serving Production 환경에 모델을 배포해서 serving하는 단계다. 모니터링이 계속 나오는거 보니까 MLOps에서 중요한 키워드인 것 같다. auto scaling등의 인프라 요소를 잘 설계해야한다.

Online Experimentation 새로 개발한 모델을 기존 모델 대비 어떤 성능의 차이가 있는 지 살펴보는 단계다. 이 단계의 결과는 model registry 기능과 통합되어 사용된다.

Model Monitoring 배포된 모델이 프로덕션에서 얼마나 잘 동작하고 있는 지 모니터링하는 단계다. 위에서 말한 것 이외에도 latency, resource 사용률 등도 측정한다.

ML Pipelines ML 학습과 prediction pipeline을 자동화하고 오케스트레이션한다.

Model Registry ML 모델의 lifecycle을 관리한다.


이런 MLOps를 하기 위해서는 다양한 툴이 있을텐데 가장 인기 있는건 MLFlow인 것 같다.

image

그 외에도 DataOps, ModelOps 등등 다양한 세부 분야가 있는데 나는 좀더 모델을 서빙하는 API 개발에 집중해보려 한다. 나중에는 airflow 등 ETL같은것도 구축도 고려해보면 좋을 것 같다. 오늘은 시간이 없어서 구글 논문만 하나 읽어봤지만 내일은 시간이 된다면 stable diffusion을 어떻게 코드로 활용할 수 있을 지 살펴보자....

steammando commented 10 months ago

역시 구글이지..