본문 바로가기

MLOps

MLOps란 무엇인지 알아보자

개요

 본 글에서는 MLOps의 정의에 대해 알아보고, 저수준의 MLOps 파이프라인의 각 단계에 대해 설명한다. 이후 이어지는 글들에서는 이 파이프라인의 각 단계를 파헤쳐볼 예정이다. 또, 이를 구성하기 위해 어떠한 일들이 필요한 지에 대해 알아보며, 고수준의 파이프라인까지 지식을 확장시켜나갈 것이다.

 

MLOps란?

 MLOps는 시스템 개발(Dev)과 시스템 운영(Ops)을 통합하는 것을 목표로 하는 ML 엔지니어링 문화 및 방식을 의미한다. 이를 통해 통합, 테스트, 출시, 배포, 인프라 관리를 비롯하여 ML 시스템 구성의 모든 단계에서 자동화 및 모니터링을 지원할 수 있다. (Google Cloud MLOps 정의 참조)

 

 이러한 정의는 한 번에 잘 와닿지 않을테니 공장 생산 라인에 비유를 들어 설명해보겠다. 

  1. 원재료 입고(Data Ingestion): 공장에 원재료를 공급하는 과정이다. ML에서는 학습에 사용할 데이터를 수집하고 저장하는 과정에 해당한다.
  2. 원재료 검사 및 정렬(EDA): 원재료의 상태를 확인하고, 제품 제조에 필요한 원재료를 선별하는 과정이다. ML에서는 데이터를 살펴보고, 필요한 특성을 선택하며, 결측치나 이상치를 처리하는 과정에 해당한다.
  3. 원재료 가공(Preprocess Data): 원재료를 제품 제조에 적합한 형태로 가공하는 과정이다. ML에서는 데이터를 모델이 이해할 수 있는 형태로 변환하는 데이터 전처리 과정에 해당한다.
  4. 제품 제조(Train Model): 가공된 원재료를 사용하여 실제 제품을 제조하는 과정이다. ML에서는 가공된 데이터를 사용하여 모델을 훈련시키는 과정에 해당한다.
  5. 제품 검사(Evaluate Model): 제품 제조 후, 제품의 품질을 확인하는 과정이다. ML에서는 훈련된 모델의 성능을 평가하는 과정에 해당한다.
  6. 제품 출시(Deploy Model): 마지막으로, 제조된 제품을 고객에게 제공하는 과정이다. ML에서는 성능이 검증된 모델을 실제 서비스에 통합하여 사용자에게 제공하는 과정에 해당한다.

마치 자동화된 공장 라인에서 제품을 생산하고 품질을 지속적으로 관리하는 것처럼, MLOps는 이 모든 과정을 효율적으로 관리하고, 자동화하는 방법을 제공한다. 이를 통해 ML 개발팀과 운영팀 사이의 협업을 강화하고, ML 시스템의 전체 수명주기를 통합 관리할 수 있다.

 

Overview

낮은 수준의 MLOps 파이프라인

 Google Cloud에서 제공하는 MLOps에 대한 설명을 참고하면, 낮은 수준의 MLOps 파이프라인은 다음과 같다. 이 파이프라인은 총 6단계로 구성되어 있으며, 각 단계와 그에 대한 설명은 아래와 같다.

 

  1. Data Ingestion
    ML 프로젝트에 필요한 외부 데이터(Raw Data)를 시스템에 수집하고 통합하는 단계이다. 이 단계에서는 Airbyte 등의 ETL(Extract, Transform, Load) 툴을 구성하여 데이터를 수집할 수 있다.
  2. Exploratory Data Analytics (EDA)
    데이터의 특성을 이해하는 단계이다. 이 단계에서는 시각화, 통계적 분석, 데이터의 구조 등을 통해 데이터의 패턴, 분포, 상관관계 등을 파악한다.
  3. Preprocess Data
    모델 Training에 사용 가능한 형태로 데이터를 가공하고 정제하는 단계이다. 이 단계에서는 Data Processing, Feature Engineering, Data Splitting 등의 작업이 이루어진다.

    Data Processing
    - 데이터는 종종 불완전하거나 잡음이 섞여있을 수 있기 때문에, 이를 처리하는 작업이 필요하다.
    - Feature Selection: Raw 데이터로부터 필요한 Column을 추출한다. 이를 통해 차원 축소, 모델 해석성 증가, Overfitting 방지, 계산량 감소의 효과를 얻을 수 있다.
    - Sampling: Data를 추출하여 데이터의 분류가 균형을 가질 수 있도록 한다. 이를 통해 특정 카테고리의 데이터가 더 많이 학습되어 Bias가 생기는 것을 방지한다.

    Feature Engineering
    - Raw Data를 Vector와 같은 모델이 Train 가능한 형태로 변환한다.

    Data Splitting
    - Feature를 Training, Validation, Testing 데이터로 구분한다.
    -
    Training Data: 모델을 학습시키는 데 사용한다.
    -
    Validation Data: 모델의 학습 도중에 성능을 평가하고, 모델이 Training 데이터에만 Overfitting 되지 않도록 하는 데에 사용한다.
    -
    Testing Data: 모델의 최종 일반화 성능을 평가하는 데 사용한다.
  4. Train Model
    Preprocess Data 단계에서 생성된 Feature를 이용하여 모델 Training을 진행하는 단계이다.
  5. Evaluate Model
    Train Model 단계에서 학습된 모델의 성능을 평가하는 단계이다. 이 단계에서는 기존에 학습된 모델과의 성능 비교도 함께 진행될 수 있다.
  6. Deploy Model
    모델을 Export 하고, Production에 배포하는 단계이다. 이 단계는 인프라 배포, API 노출, 버전 관리, 모니터링 등 모델을 실제 운영 환경에서 효과적으로 사용자에게 서비스로 제공할 수 있도록 하는 과정을 포함한다.

 

Reference