본문 바로가기

DEVELOP_NOTE/MLOps

MLOps란?

오늘은 MLOps에 대해서 자세히 정리해보고자 한다.

 

 

 

MLOps 란?

먼저 MLOps라는 용어는 Machine Learning Operations, ML과 Ops(Operations)의 합성어로,
학습한 머신러닝 모델을 안정적이고 효율적으로 배포 및 유지관리하는 것을 목표로 하는 '패러다임'이다.

 

그리고, MLOps Process는 ML과 Operation에 해당하는 영역으로 각각 구분할 수 있다.

  • ML 단계 : 데이터 수집, 전처리, 모델 구축, 학습, 평가 등
  • Ops 단계 : 모델 배포, 모니터링, 테스트 등
MLOps는 불과 몇년전부터 주목받기 시작한 기술인데, 이는 ML이 실제 서비스에 적용되고 운영되기 시작하면서
머신러닝 모델의 지속적 통합, 배포, 학습을 관리할 수 있는 시스템의 필요성을 인식하기 시작했기 때문이다.

 

먼저, MLOps에 대해서 세부적으로 알아보기 위해, 머신러닝 모델의 life cycle 내부에서 역할을 이해해보자.

 

머신러닝 모델 Life Cycle

 

모든 머신러닝 모델은 위의 주기에 따라 개발되고 실제 서비스에 적용되어 비즈니스 목표를 달성하게 된다.

머신러닝 모델의 Life Cycle을 구체적으로 나열해보면 아래와 같다.

1. 해결하고자하는 문제의 목표를 정의
2. 필요한 데이터 정의 및 수집
3. EDA 및 데이터 전처리
4. 모델 설계
5. 학습 및 평가
6. 최적화
7. 배포
8. 모니터링

 

 

배포된 모델은 시간이 지남에 따라, 다양한 원인으로 최초 배포시점과 비교해서 성능이 하락한다.

(성능하락의 원인과 해결방법은 다음 에 포스팅해보겠다.)

따라서 적절한 시점에 모델에 대한 재학습 및 재배포 과정 또한 수반되어야하는데,

그때 마다 위 cycle은 모두 빠짐없이 진행되어야하는 과정이다.

 

만약, 관리해야할 모델이 하나이고, 재학습 주기를 길게 가져가도 문제가없거나, PoC 수준의 목적을 가진 모델의 경우,

위의 모델 개발, 검증, 배포, 모니터링과 같은 과정들을 수동으로 처리해도 큰 문제가 발생하지 않는다.

 

하지만, 서비스의 규모가 커지게 되면서, 적용되는 모델이 많아지고, 재학습 주기가 짧을수록 모든 과정들을 수동으로 처리하는것이 매우 어려워진다. 이 문제를 해결하기 위해 필요한 패러다임이 MLOps이다.

 

 

MLOps의 목표

그렇다면, 구체적으로 MLOps로 얻을 수 있는 이점은 어떤점이 있을까?
 MLOps의 목표는 크게 아래 6가지로 요약할 수 있다.

1) 배포 및 자동화

머신러닝 모델을 실제 운영 환경에 배포하고, 이 과정을 자동화하여 모델의 배포와 업데이트가 빠르고 효율적으로 이루어질 수 있도록 한다.

2) 거버넌스 및 규정 준수

머신러닝 모델이 법적, 윤리적 기준 및 기업 정책 등 을 준수하도록 관리한다. 이는 데이터 보호, 개인 정보 보호 및 모델의 공정성을 포함할 수 있는데, 모델이 지켜야할 규칙을 정의하고 이를 관리하는 역할을 의미한다.

3) 확장성

머신러닝 시스템이 다양한 데이터 크기, 사용자 수 및 복잡성에 따라 적절하게 확장될 수 있도록 지원한다. 이를 통해 시스템의 성능과 안정성을 유지하는 역할을 한다.

4) 협업

데이터사이언티스트와 소프트웨어 엔지니어, 서비스 운영 팀 간의 협업을 촉진하고, 효율적인 작업 Flow를 지원하며 커뮤니케이션을 가능하게 한다.

5) 모니터링 및 관리

배포된 머신러닝 모델의 성능을 지속적으로 모니터링하고 관리하여 문제가 발생할 경우 적시에 대응할 수 있도록 한다. 이는 서비스 배포 이후에도 모델의 정확도와 신뢰성을 유지하는 데 필수적이다.

6) 재현성 

데이터 전처리 및 모델 학습 과정을 재현할 수 있도록 관리하여, 결과의 일관성과 검증 가능성을 보장할 수 있게끔한다. 서비스 운영관점에서 모델의 정확성과 신뢰성을 위해 매우 중요하다.


모델을 운용하는 환경과 상황은 모두 다르겠지만, MLOps는 위 목표를 달성하기 위해 적절한 방식으로 구현되어야한다.

 
 

MLOps 구축 단계

MLOps는 모델 개발 및 배포, 모니터링 등 머신러닝 모델 Life cycle의 여러단계를 아우르는 개념으로,
구축의 범위, 정도에 따라 MLOps의 성숙도, 즉 수준을 가늠할 수 있다.
Google에서는 가장 아래 단계인 프로세스 수동 적용 단계부터, ML과 CI/CD Pipeline을 모두 자동화하는 단계까지 총 3가지의 단계로
성숙도의 수준에 대한 평가 기준을 제시하고 있어, 현재 구축 수준을 평가하고, 이후 단계로의 개선점으로 참고할 수 있다.
 
  • MLOps 수준 0: 수동 프로세스
  • MLOps 수준 1: ML pipeline 자동화
  • MLOps 수준 2: CI/CD Pipeline 자동화

 

MLOps LV 0

 

MLOps 수준 0 프로세스에서는 데이터 분석과 데이터 준비, 모델 학습 및 검증을 포함한 모든 단계가 수동으로 이루어진다.

각 단계를 수동으로 실행하고, 한 단계에서 다음 단계로 전환하는 것 역시 수동으로 이루어진다.

이 단계에서는 ML과 운영이 단절되어 있으며, 이로 인해 학습과 서비스 간의 간극이 발생하기도 하는데, 학습 당시의 성능과 서비스단에서의 실제 성능에서 차이가 발생하고 이를 빠르게 해결할 수 없는 구조를 가진다.

일반적으로 새 모델 버전은 1년에 두어 번만 배포하며(당연히 해당 단계에서는 재학습 및 배포가 자주 이루어지는것이 어려울것이고, 현재 팀 내 대부분의 모델들이 Lv0의 상태에 해당한다.) 프로덕션 환경에서는 권장되지 않는 성숙도이다.

 

MLOps LV 1

 

MLOps 레벨 1은 머신러닝 실험 단계를 자동화하여 빠르게 실험을 반복하고, 전체 pipeline을 프로덕션으로 전환할 수 있는 준비 상태를 의미한다. 이 레벨에는 몇 가지 특성이 있다.

  • 실험-운영 대칭성: 개발 또는 실험 환경에서 사용되는 pipeline 구현이 사전 프로덕션 및 프로덕션 환경에서도 사용된다.
  • 컴포넌트 및 pipeline을 위한 모듈화된 코드: 컴포넌트의 소스 코드는 모듈화되어있거나 컨테이너화된 형태를 보인다.
  • 프로덕션 환경의 ML pipeline은 새로운 데이터로 학습된 새로운 모델으로 실제 서비스를 지속적으로 제공한다. 모델 배포 단계는 자동화된 상태.
  • 레벨 1에서는 전체 학습 pipeline을 배포하고, 이 pipeline은 자동으로 반복적으로 실행되어 학습된 모델을 서비스에 제공한다.

정리하면, MLOps 레벨 1은 머신러닝 학습 및 평가 과정을 pipeline을 통해 자동화하여 손쉽게 반복할 수 있다.

또한 프로덕션 환경에서 모델을 학습하고, 배포하는 작업을 더 쉽게 수행할 수 있게 된다.

 

MLOps LV 2

https://cloud.google.com/architecture/mlops-continuous-delivery-and-automation-pipelines-in-machine-learning?hl=ko

 

서비스단에서 ML Pipeline 전체를 빠르고 안정적으로 업데이트하기 위해서는 자동화된 CI/CD 시스템이 필요하며,

이 자동화된 시스템을 사용하면 데이터사이언티스트가 ML모델을 개발함에 있어 특성 추출, 모델 아키텍처, 하이퍼파라미터에 대한

새로운 아이디어를 빠르게 반영할 수 있게 된다.

이 단계의 MLOps Pipeline 정리하면 아래와 같다.

  • 개발 및 실험: 새로운 ML 알고리즘과 모델링 기법을 반복적으로 시도할 수 있으며, 이 단계의 결과물은 ML pipeline 단계의 소스 코드이며, 소스 리포지토리에 푸시된다.
  • pipeline 지속적 통합(CI): 소스 코드를 빌드하고 다양한 테스트를 실행한다. 이후 단계에서 배포할 pipeline 구성 요소(패키지, 실행 파일 및 아티팩트)을 목표로 하게된다.
  • pipeline 지속적 배포(CD): CI 단계에서 생성된 아티팩트를 대상 환경에 배포하고, 모델의 새로운 구현이 포함된 pipeline을 출력한다.
  • 자동 트리거링: 일정에 따라 또는 트리거에 대한 응답으로 프로덕션 환경에서 pipeline을 자동으로 실행한다.

 

‍학습된 모델을 배포한 후에는 라이브 데이터를 기반으로 모델 성능에 대한 통계를 수집해야 하고,

모니터링 결과를 통해, pipeline을 실행하거나 새로운 실험 주기를 찾을 수 있는 계기를 얻을 수 있다.

위 Flow를 참고하여, 지속적 통합과 지속적 배포 시스템 설정을 통해 새로운 ML pipeline을 자동으로 테스트하고 배포할 수 있게된다.

 

-> Lv2수준의 MLOps Process는 각 단계별로 목적과 구현방법에 대해 추후 좀 더 구체적으로 정리할 필요가 있을 것 같다.

 
 

현재 팀내에서 MLOps 프로세스를 구현하기 전 고민해야 할 부분은?

머신러닝 모델을 개발하고 운영하는 모든 조직은 적절한 MLOps 시스템을 구축하는것에 대해 고민해야한다.

위 Google에서 제시한 MLOps 성숙도를 기준으로 2단계에 해당하는 수준의 MLOps시스템을 구축하는것이 이상적이긴 하나,

PoC 수준의 모델, 잦은 배포가 필요하지않은 모델, 사용성이 낮은 프로덕트에서 활용되는 모델과 같은 케이스에서 굳이 2단계에 해당하는 수준의 MLOps 시스템을 구축하는것은 적합하지 않을 것이다.

 

현재 팀내에서 운영되고 있는 모델 중 하루 호출 건수가 수백만건 이상 발생하는 모델에 대해 신규 데이터를 통해 재학습 한 후 수동 배포한 경험이 있다. 이후, 모델 정확도에 대한 로그를 쌓고, 해당 로그를 매일 수동으로 확인해야하는 불편함이 있었다. 그리고 배포 이후 3개월이 채 지나지 않아, 모델의 정확도가 20%이상 하락했음에도 불구하고, 수동 모델 학습 및 배포방식으로 개발되었기 때문에 빠르게 재배포를 진행할 수 없었다. 실제 운영중인 프로덕트에서 MLOps Pipeline이 구축되어있지 않을 경우, 성능을 보장할 수 없고, 빠른 개선 또한 어렵다는 점을 알 수 있었고, 자동화 되지않은 프로세스로 인해서 계속해서 불필요한 리소스가 투입되는것을 보며, 프로덕트에 모델을 적용하는 초기 단계부터 MLOps pipeline 구축에 대한 구체적인 계획과 실행이 필요하다는 것을 느끼게 되었다.

 

 

 

 
 

 

 

 

Ref.