[MLOps] MLOps란?, Level, Component

이한슬·2025년 1월 14일

MLOps

목록 보기
1/9
post-thumbnail

MLOps for ALL, MLOps for MLE를 통해 공부한 내용을 정리하려고 한다.

MLOps는 무엇인가? MLOps는 이전에 없던 새로운 개념이 아니라 DevOps라는 개발 방법론에서 파생된 것이다. 그러므로 DevOps를 이해한다면 MLOps를 이해하는 것에 도움이 된다.

DevOps

그렇다면 DevOps에 대해 먼저 알아보자.

DevOps는 Development(개발)Operations(운영)의 합성어로 소프트웨어 개발자와 정보기술 전문가 간의 소통, 협업 및 통합을 강조하는 개발 환경이나 문화를 말한다.

서비스의 규모가 커질수록 개발팀과 운영팀이 분리되어 작업을 진행하고, 서로 간의 소통에 한계가 생기게 된다.
다른 팀과 함께하는 미팅에 모든 팀원이 참여하는 것이 아니라 각각 소수의 인원만 참여하게 되며 점점 소통의 부재로 이어지게 된다.
그러다 보면 개발팀은 새로운 기능들을 계속해서 개발해 운영팀에 넘기지만, 운영팀에서는 개발팀에서 개발한 기능이 배포 시 장애를 일으키는 등 생기는 문제들이 점점 쌓여간다.
이러한 상황을 조직 이기주의라고 불리는 사일로 현상(Silo Effect)이라고 한다.

CI/CD

그래서 CI(Continuous Integration)/CD(Continuous Delivery/Deployment)를 통해 개발팀과 운영팀의 장벽을 해결하는 방법이 나타났다.
CI지속적인 통합을 의미하는 데, 새로 작업하거나 수정된 코드가 주기적으로 빌드, 테스트되어 프로젝트에 통합되는 것이다.
CD지속적인 제공 또는 배포로, CI를 통해 통합된 코드가 다시 주기적으로 배포되는 과정을 말한다.

MLOps

DevOpsDev(개발)와 Ops(운영)이 합쳐진 것이라면, MLOpsML(머신러닝)과 Ops(운영)이 합쳐진 것이다. 즉, MLOps는 머신러닝팀과 운영팀의 문제를 해결하기 위한 방법이다.
하지만 꼭 Silo Effect를 해결하기 위해서 MLOps를 하는 것은 아니다. 예를 들어, 자연어, 이미지를 딥러닝을 이용한 작업을 진행할 때, 검증(POC)이 선행된 후에 서비스를 위한 운영 환경을 개발하는 경우에는 MLOps가 필요하다.
즉, MLOps는 ML+Ops로 두 팀의 생산성 향상을 위하거나, ML->Ops로 머신러닝 팀에서 직접 운영을 할 수 있도록 도와주는 것을 말한다.

Levels of MLOps

구글에서는 MLOps의 발전 단계를 0부터 2까지로 총 3단계로 나누었다.

0단계: 수동 프로세스

ML팀과 Ops팀은 모델을 통해 소통한다. ML팀은 데이터로 모델을 학습시키고 학습된 모델을 Ops팀에 전달한다. Ops팀은 전달받은 모델을 배포한다.

그러나 이러한 모델 중심의 소통을 문제점이 발생한다. 다음의 예시를 보자.

학습된 머신러닝 모델이 서비스에서 원하는 동작을 하기 위해서는 파이썬 코드, 학습된 가중치, 환경(패키지, 버전 등)이 일치해야 한다.
관리할 모델이 많지 않을 때는 금방 해결할 수 있겠지만, 관리하는 기능들이 많아지고 소통에 어려움을 생기면 성능이 더 좋은 모델을 빠르게 배포할 수 없게 된다.

1단계: ML 파이프라인 자동화

그래서 MLOps에서는 파이프라인(Pipeline)을 이용해 이러한 문제를 방지하고자 했다. MLOps의 파이프라인은 도커와 같은 컨테이너를 이용해 모델 개발에 사용한 것과 동일한 환경으로 동작되는 것을 보장한다. 이를 통해서 환경이 달라서 모델이 동작하지 않는 상황을 방지한다.
머신러닝 엔지니어가 작성하는 파이프라인은 학습된 모델을 생산하는 것으로, 학습 파이프라인(Training Pipeline)이라고 하는 것이 정확하다고 볼 수 있다.

Continuous Training

실제 환경에서는 데이터의 분포가 계속해서 변해 과거에 학습한 모델의 성능이 시간이 지남에 따라 저하되는 문제가 발생할 수 있다.
이 문제의 해결책은 바로 최근 데이터를 이용해 모델을 재학습하는 것으로, 변화된 데이터 분포에 맞춰 모델을 다시 학습시켜 준수한 성능을 내도록 할 수 있다.

2단계: CI/CD 파이프라인의 자동화

DevOps에서는 소스 코드가 CI/CD 대상이었다면, MLOps는 학습 파이프라인이 CI/CD의 대상이 된다.
그러므로 모델을 학습하는데 영향이 있는 변화에 대해서 실제로 모델이 정상적으로 학습이 되는지 (CI), 학습된 모델이 정상적으로 동작하는지 (CD)를 확인해야 한다.
학습을 하는 코드 외에도 사용하는 패키지의 버전, 파이썬의 버전 변경도 CI/CD의 대상이다.

Components of MLOps

MLOps의 핵심 기능들에는 다음과 같은 것들이 있다.

1. Experimentation

머신러닝 엔지니어들이 데이터를 분석하고, 프로토타입 모델을 만들며 학습 기능을 구현하는 기능

  • 버전 컨트롤 도구(Git), 통합된 노트북(Jupyter Notebook) 제공
  • 사용한 데이터, 하이퍼 파라미터, 평가 지표를 포함한 실험 추적 기능 제공
  • 데이터와 모델에 대한 분석 및 시각화 기능 제공

2. Data Processing

머신러닝 모델 개발 단계, 지속적인 학습(Continuous Training) 단계, API 배포(API Deployment) 단계에서 많은 양의 데이터를 사용할 수 있게 해 주는 기능

  • 다양한 데이터 소스와 서비스에 호환되는 데이터 커넥터(connector) 기능 제공
  • 다양한 형태의 데이터와 호환되는 데이터 인코더(encoder) & 디코더(decoder) 기능 제공
  • 다양한 형태의 데이터에 대한 데이터 변환과 피처 엔지니어링(feature engineering) 기능 제공
  • 학습과 서빙을 위한 확장 가능한 배치, 스트림 데이터 처리 기능 제공

3. Model training

모델 학습을 위한 알고리즘을 효율적으로 실행시켜주는 기능

  • ML 프레임워크의 실행을 위한 환경 제공
  • 다수의 GPU / 분산 학습 사용을 위한 분산 학습 환경 제공
  • 하이퍼 파라미터 튜닝과 최적화 기능 제공

4. Model evaluation

실험 환경과 상용 환경에서 동작하는 모델의 성능을 관찰할 수 있는 기능

  • 평가 데이터에 대한 모델 성능 평가 기능
  • 서로 다른 지속 학습 실행 결과에 대한 예측 성능 추적
  • 서로 다른 모델의 성능 비교와 시각화
  • 해석할 수 있는 AI 기술을 이용한 모델 출력 해석 기능 제공

5. Model serving

상용 환경에 모델을 배포하고 서빙하기 위한 기능

  • 저 지연 추론과 고가용성 추론 기능 제공
  • 다양한 ML 모델 서빙 프레임워크 지원(Tensorflow Serving, TorchServe, NVIDIA Triton, Scikit-learn, XGBoost. etc)
  • 복잡한 형태의 추론 루틴 기능 제공
  • 순간적으로 치솟는 추론 요청을 처리하기 위한 오토 스케일링(autoscaling) 기능 제공
  • 추론 요청과 추론 결과에 대한 로깅 기능 제공

6. Online experimentation

새로운 모델이 생성되었을 때, 모델을 배포하면 어느 정도의 성능을 보일 것인지 검증하는 기능
이 기능은 새 모델을 배포하는 것까지 연동하기 위해 모델 저장소(Model Registry)와 연동되어야 한다.

  • 카나리(canary) & 섀도(shadow) 배포 기능 제공
  • A/B 테스트 기능 제공
  • 멀티 암드 밴딧(Multi-armed bandit) 테스트 기능 제공

7. Model Monitoring

상용 환경에 배포된 모델이 정상적으로 동작하고 있는지 모니터링하는 기능
예를 들어 모델의 성능이 떨어져 업데이트가 필요한지에 대한 정보 등을 제공한다.

8. ML Pipeline

상용 환경에서 복잡한 ML 학습과 추론 작업을 구성하고 제어하고 자동화하기 위한 기능

  • 다양한 이벤트를 소스를 통한 파이프라인 실행 기능
  • 파이프라인 파라미터와 생성되는 산출물 관리를 위한 머신러닝 메타데이터 추적과 연동 기능
  • 일반적인 머신러닝 작업을 위한 내장 컴포넌트 지원과 사용자가 직접 구현한 컴포넌트에 대한 지원 기능
  • 서로 다른 실행 환경 제공 기능

9. Model Registry

머신러닝 모델의 생명 주기(Lifecycle)을 중앙 저장소에서 관리할 수 있게 해 주는 기능

  • 학습된 모델, 배포된 모델에 대한 등록, 추적, 버저닝 기능 제공
  • 배포를 위해 필요한 데이터와 런타임 패키지들에 대한 정보 저장 기능

10. Dataset and Feature Repository

  • 데이터에 대한 공유, 검색, 재사용, 버전 관리 기능
  • 이벤트 스트리밍 및 온라인 추론 작업에 대한 실시간 처리 및 저 지연 서빙 기능
  • 사진, 텍스트, 테이블 형태의 데이터와 같은 다양한 형태의 데이터 지원 기능

11. ML Metadata and Artifact Tracking

ML 메타데이터는 각 단계에서 생성된 다양한 형태의 산출물들에 대한 정보를 의미한다.
ML 메타데이터와 산출물 관리는 산출물의 위치, 타입, 속성, 그리고 관련된 실험(experiment)에 대한 정보를 관리하기 위한 기능을 제공한다.

  • ML 산출물에 대한 히스토리 관리 기능
  • 실험과 파이프라인 파라미터 설정에 대한 추적, 공유 기능
  • ML 산출물에 대한 저장, 접근, 시각화, 다운로드 기능 제공
  • 다른 MLOps 기능과의 통합 기능 제공


결론적으로 MLOps 파이프라인을 다음과 같은 그림으로 나타낼 수 있다.

profile
궁금하면 일단 먹어보는 소프트웨어 전공생

0개의 댓글