나 JAVA 봐라

MLOps 개념 정리 본문

DevOps, MLOps

MLOps 개념 정리

cool_code 2024. 6. 3. 17:56

MLOps란?

 

MLOps

 

  • 머신 러닝 (Machine Learning)과 운영(Operations)를 합친 용어로 프로덕션 환경에서 머신 러닝 모델이 지속적, 안정적으로 배포되도록 유지, 관리, 모니터링 하기 위한 문화, 방법론
  • 즉, MLOps는 머신러닝 모델 개발과 운영을 통합하여 ML 시스템을 자동으로 유지, 관리, 운영한다.

엔터프라이즈 레벨에서 ML을 서비스에 구현하고자 한다면, 단순히 성능이 좋은 모델만 필요한 것이 아니다.

단순히 모델 개발 하나가 아니라 그 이전의 데이터 수집, 이 후의 모델 배포 및 모니터링 등의 전 과정(AI Lifecycle)을 거쳐야 한다. 또한 이러한 시스템들이 유기적으로 돌아가야 한다. 이런 과정들을 MLOps가 포함한다. 

 

따라서, MLOps에는 머신 러닝(ML)과 소프트웨어 개발 및 운영(DevOps), 데이터 엔지니어링(DE)가 모두 포함되며, 이에 기여하는 엔지니어들이 Lifecycle을 관리해야 한다.

DevOps

MLOps가 등장하기 전 DevOps가 존재했다. DevOps의 방법론을 적용한 것이 MLOps인데, 그렇다면 DevOps가 무엇인지 간단하게 알아보자.

  • DevOps = 개발(Development) + 운영(Operations)
  • 개발과 운영의 경계를 허물고 각 팀이 협업하며 아이디어를 개발, 배포하는 개발 환경이나 도구

DevOps의 효능

??? : DevOps를 적용했더니 키가 2m 컸어요!

 

실제 개발을 하다보면, 개발 후 배포하는 과정에서 테스트 + 배포를 수동으로 하다보니 상당히 오래 걸리고, 가끔 오타 등의 이슈로 휴먼 에러가 나기도 한다. 이 때문에 DevOps를 적용하여 개발 과정 등에서 생기는 비효율적인 문제를 개선할 수 있다.

( 정말 비효율적이었던 수동 배포 환경 개선하기 -> https://yejin-code.tistory.com/51 )

  • 개발 과정에서 생기는 커뮤니케이션, 생산성 등의 비효율을 개선함으로 프로세스의 속도를 높여 더 빨리 사용자에게 가치를 제공할 수 있다. (= 더 빠르게 개발하여 제공한다.)

맨날 메모장에 있는 명령어 스크립트 복붙하면서 수동 배포하느라 시간도 지체되고 불편했음.. DevOps 최고 

DevOps와 MLOps

이러한 DevOps의 방법론을 ML 시스템에 적용한 것이 MLOps이다. DevOps가 소프트웨어 엔지니어링 분야의 비효율을 개선하기 위해 등장했듯이, 머신러닝(ML)과 AI 개발의 효율성을 높이기 위해 MLOps가 등장한 것이다.

 

이런 점에서 MLOps와 DevOps 모두 프로덕트의 품질 개선, 릴리즈 속도 가속, 패치 적용, 높은 만족도 달성 등 같은 목표를 가진다는 것이 공통점이다.

 

반면, 차이점도 있다.

  • Testing : 일반적인 단위, 통합 테스트 외에 데이터 검증, 학습된 모델 품질 평가, 모델 검증이 추가로 필요하다. 
  • Deployment : 오프라인에서 학습된 ML 모델을 배포하는 수준에서 그치지 않고, 새로운 모델을 재학습, 검증하는 과정을 자동화해야 한다. 
  • Production : 일반적으로 알고리즘과 로직의 최적화(ex. 쿼리 튜닝, 비동기 처리, .. ) 를 통해 최적의 성능을 내는 SW 시스템과 달리, ML 모델은 이에 더해서 지속적으로 진화하는 data profile 자체로도 성능이 저하될 수 있다. (= Model Drift)
    즉, 기존 소프트웨어 시스템보다 더 다양한 이유로 성능이 손상될 수 있기에, 데이터를 꾸준히 추적하고, 모델의 성능을 모니터링하여 값이 기대치를 벗어나면 알림을 전송하여 빠르게 파악하도록 하거나 롤백되도록 해야한다. 
  • CI : code 뿐만 아니라 data, data schema, model에 대해 모두 테스트되고 검증되어야 한다. 
  • CD : 단일 SW 패키지가 아니라 ML 학습 파이프라인 전체를 배포해야 한다. 
  • CT : MLOps에만 있는 단계로, 모델을 자동으로 학습하고 평가하는 단계가 있어야 한다. 

MLOps의 구성

앞서 MLOps가 데이터 전처리, 모델 학습, 배포, 모니터링 등 AI의 전체 생애 주기를 포함한다고 했지만, 실제로는 필요에 따라 MLOps가 적용되는 범위가 달라진다.
예를 들어, 프로젝트의 전체 프로세스에 적용될 수도 있고, 모델 배포 프로세스에만 적용될 수도 있다.

 

MLOps의 범위가 커서 여러 영역(코드, 소프트웨어, 데이터 가공, 분석, AI 서비스 성능 점검 등)에 관여하기에, 각 영역에서의 협업이 필요하다. 이 때, MLOps는 아래와 같은 과정들이 수반된다. 

  • 모델을 만드는 과정: 모델 개발을 위해 필요한 데이터 활용
    • 데이터 추출
    • EDA(Exploratory Data Analysis) * 및 데이터 분석 : 모델에 필요한 데이터 스키마 및 특성 이해
    • 데이터 준비 : 데이터의 학습, 검증, 테스트 세트 분할 / 노이즈 제거 & 결측치 대체 & 스케일링 / Nomalization & Augmentation 등 수행
    • ML 모델 학습 및 리뷰 : 다양한 알고리즘 구현, 하이퍼 파라미터 조정 및 적용
    • 모델 평가
    • 모델 검증: 기준치 이상의 모델 성능이 검증되고, 배포에 적합한 수준인지 검증
  • 모델을 배포하는 과정: 실제 모델을 통해 들어오는 데이터 활용
    • 모델 서빙 
    • 모델 모니터링 : 배포된 모델이 예측 잘하는지 예측 성능을 모니터링
    • 자동 모델 재학습

* EDA : 탐색적 데이터 분석, 데이터의 특성을 알아봄으로 해당 데이터를 통해 어떤 문제를 해결해낼 수 있을지 결정할 수 있음. 

 

MLOps의 조건

MLOps를 통해 효율적인 모델 개발, 운영을 이루기 위해 아래와 같은 조건이 필요하다.

  • 지속적 통합(Continuous Integration, CI)
    : 코드의 변경 사항을 정기적으로 빌드 및 테스트하고, 공유 리포지토리에 통합
  • 지속적 배포(Continuous Deployment/Delivery, CD)
    : 파이프라인, 모델 등의 모델 에측 서비스를 자동으로 배포
  • 지속적 학습(Continuous Training, CT)
    : 데이터가 업데이트되거나 새로 들어올 때마다 모델이 자동으로 학습, 업데이트
    : 새로운 데이터를 통해 학습하므로 '데이터 & 모델 검증' 필수

이러한 CI/CD/CT (지속적인 통합/배포/학습) 사이클이 잘 구현된다면 모델 개발/배포 속도가 향상될 수 있다.

MLOps가 필요한 이유

단순히 모델을 개발하고 배포했다고 하여 끝난 것이 아니라, 지속적인 '운영'을 통해 안정적으로 서비스를 제공해야 한다.
이 때, 개발과 운영이 따로 진행된다면 데이터 사일로* 등 여러 비효율이 있을 수 있기에 MLOps가 필요하다.

 

ML 생명 주기에는 데이터 수집, 모델 훈련, 조정, 배포, 모니터링 같은 여러 복잡한 요소가 포함되기에 ML 모델을 대량으로 생산하기 어렵다. 또한 여러 팀의 협업, 소통이 필요하여 과정이 복잡하기에 MLOps를 통해 ML 생명 주기를 실험하고, 반복을 통해 지속적으로 개선할 수 있다.

 

즉, 모든 프로세스를 동기화하고 협력이 잘 이뤄질 수 있는 운영 원칙을 제공하기에 유용하다.

 

* 데이터 사일로(Data Silo) : 데이터가 격리되어 특정 조직/부서 단위에서만 정보 접근 및 공유가 가능하여 다른 조직/부서 단위에서는 데이터가 격리되는 현상 

MLOps의 장점

위의 내용에서 계속 언급된 내용들을 장점으로 정리해보면 아래와 같다.

 

  • 효율성 : 시스템 개발과 운영을 통합하여 개발 시간을 단축
    • -> MLOps를 통해 양질의 머신 러닝 모델을 제공하며 배포와 생산 속도를 향상시킬 수 있다.
  • 확장성 : 수천 개의 모델을 지속적으로 관리하고 배포할 수 있다
    • -> MLOps는 확장성과 유지, 관리에 특화되어 있다. 자동으로 대량의 모델을 관리, 감동, 제어, 모니터링하며 모델을 통합하고 배포할 수 있다.
  • 안정성 : 투명성을 강화하고, 업계의 규정을 준수하는 데 도움이 된다.
    • ML 모델은 철저한 규제 검토와 드리프트* 검사가 필요하다. MLOps를 이용하면 모델 생성 과정에서의 적절한 모니터링, 검증, 거버넌스 등의 과정으로 투명성을 강화하고 요청에 더 빠르게 대응할 수 있다. 또한 CI/CD/CT를 통해 데이터의 품질을 높은 상태로 관리할 수 있고, ML 시스템을 자동으로 관리하기에 안정적이다.

* 드리프트 : '예측하지 못한 변화'에 의해 모델 예측 성능이 시간이 경과함에 따라 떨어지는 현상. 예를 들어, 새로운 데이터가 기존 데이터와 다른 확률 분포를 가지며 모델 성능이 점점 저하될 수 있다. 

 

---

참고 

https://elice.io/ko/newsroom/whats_mlops

https://jaemunbro.medium.com/mlops가-무엇인고-84f68e4690be

 

[MLOps란] MLOps가 무엇인고?

MLOps의 정의, 그리고 ML Lifecycle에 대해 알아보자

jaemunbro.medium.com