MLOps

DONGJIN IM·2022년 7월 9일
0

Product Serving 이론

목록 보기
1/10
post-thumbnail

모델 개발 Process

Research

  • 로컬 컴퓨터나 서버 인스턴스 등에서 실행

  • 고정된 데이터를 사용해 학습

    • Real World에 배포하기 위한 과정

Production

  • 웹, 앱 서비스에 활용할 수 있게 만드는 과정

    • 모델에게 input을 주고 Output을 도출하는 프로세스를 배포하는 과정
  • 모델의 결과값이 이상한 경우 원인 파악이 필요

    • Research 단계에서는 Outlier를 무시해도 되지만, Production 시에는 이를 무시하면 안 됨(에러 발생)
    • 후처리를 진행하거나 Outlier 처리 방법을 생각해야 함
  • 모델 성능이 계속해서 변경

    • 예측 값과 실제 Label을 알아야 함
    • 비정형 데이터의 경우 확인하기 어렵기 때문에 성능이 변화하면서 좋은 방향으로 학습이 Update 되는지 확인해야 함
  • 새로운 모델 or Production 환경에서 성능이 떨어짐

    • 이전 모델을 활용하기 위한 사전 작업 필요

Research VS Production


MLOps

MLOPs란?

  • ML(Machine Learning) + Ops(Operations)

  • 머신러닝 모델을 운영하면서 반복적인 업무를 자동화시키는 과정

  • 모델링에 집중할 수 있도록 인프라를 구축하는 것

  • 머신러닝 엔지니어링 + 데이터 엔지니어링 + 클라우드 + 인프라

  • 핵심 목표 : 머신 러닝 모델 개발(ML Dev)과 운영(Ops)에서 발생하는 반복 작업이나 문제점을 최소화하여 비즈니스 가치를 창출하는 것

    • Production 환경에 배포하는 과정에 Research 모델이 재현 가능하게 만드는 것이 중요함
  • 빠른 시간 내에 가장 적은 위험을 부담하며 아이디어 단계부터 Production 단계까지 ML 프로젝트를 진행할 수 있도록 기술적 마찰을 줄이는 것

MLOps 특징

  • 회사 비즈니스 상황 및 모델 운영 상황에 따라 Component에 대한 우선 순위가 달라짐

  • 처음부터 활용하기 보다는 작은 단위의 MVP(Minimal Value Product)로 시작하다가 운영 리소스가 많이 소요될 때 부터 하나씩 구축하는 방식 추천

    • Research 초기에는 고려하지 않다가 어느정도 구현이 끝났을 때부터 MLOps를 활용

MLOps Component

Server Infra

  • 예상하는 트래픽

  • 서버의 CPU, Memory 등 물리적, 시스템 적 성능

  • Scale Up 및 Scale Out이 가능한가?

    • 모델을 활용할 수 있게 해주는 서버나 Memory 확장이 가능한지 여부
  • 어떻게 모델을 배포할 것인가

    • 클라우드에 모델 배포
      • AWS, GCP(Google Cloud Platform), Azure 등
    • 자체 구축한 서버에 모델 배포
      • 온 프레미스 : 회사나 대학원의 전산실에 서버를 직접 설치

GPU Infra

  • Research에서는 로컬 GPU나 Colab 등을 활용하지만, 모델 배포를 위한 GPU는 매우 용량이 크며 많이 필요함

    • 가격적으로 매우 부담이 됨
  • 주로 클라우드 GPU를 활용하여 임대를 통해 Proudction을 수행

Serving

  • 모델을 User가 활용할 수 있도록 제공

  • Batch Serving : 특정 기간을 주기로 Product Serving 수행

    • 많은 데이터를 일정 주기를 통해 Output을 User에게 제공
  • Online Serving : 실시간으로 Product Serving 수행

    • 1개의 Input이 들어올 때 마다 대응하는 Output을 제공
    • 병목 현상 해결 및 확장 가능성이 매우 중요한 Serving 방법
  • 예시

    • Youtube : 새로고침하면 다시 영상 리스트를 재추천해줌
    • Spotify : 1주일 간격으로 user에게 추천할만한 노래 리스트 제공

Experiments, Model Management

  • Parameter, 모델 구조 등을 기록해 놓는 것

  • ML Modeling에서는 많은 실험을 하는데, 모든 실험이 "어떻게" 수행되었는지 알아야 함

    • 만약 모른다면, Best Model을 배포하려고 할 때 어떤 모델을 배포해야할지, 어떤 방식으로 학습 or Inference를 수행해야 할 지 알 수가 없음
  • 모델 Artifact, 이미지 등을 제공

    • 모델 Artifact : 학습한 모델을 저장해 놓고, 나중에 이를 활용하는 것
    • 이미지 : 기록해놓은 Feature를 활용할 수 있도록 저장해 놓은 것
  • 이외에도 모델 생성일, 모델 성능, Meta Data 등을 기록해 놓을 수 있음

  • 누락될 수 있는 데이터가 발생할 수 있는데, 이런 누락 데이터를 없애기 위해 매우 중요한 Component

Feature Store(수정)

  • Modeling에서 반복되는 특징이나 절차를 미리 저장하여 활용할 때마다 저장한 데이터 or Algorithm 등을 불러와 활용하는 것

  • 머신러닝 Feature를 집계한 Feature Store에서데이터를 불러옴

  • 데이터 전처리 등에 소요되는 시간을 매우 줄일 수 있음

  • Feature Store를 "어디에" 배치될지를 지정해 놓아야함

    • 결국 Research, Production 모든 과정에서 활용되는 공통적인 Feature이기 때문에 두 곳 모두 접근 가능한 곳에 Feature Store를 배치시키는 것이 좋음
  • ML(DL) 보다는 정형 데이터(Tableau)에 많이 활용되는 추세

  • FEAST : Feature Store에 관한 라이브러리

Data Validation

  • Research와 Production에서 Feature의 분포를 확인해야할 필요가 있음

    • 특히 Data에 대한 분포를 확인할 필요가 있음
    • 분포 차이가 크다면 모델링 및 재학습을 고려해야할 필요가 있음
    • 시간이 흐르면서 Feature의 분포 차는 커지게 되는 경우가 많음
  • Data Drift, Model Drift, Concept Drift

    • Data나 Model, Concept가 시간이 지나면서 Research 단계 때 생각했던 Feature와는 큰 Gap이 생기는 현상을 말함
    • 어느 정도 시간이 지나면 새로운 Feature를 활용해 재학습을 수행하여 모델 성능을 유지시키는 방법을 활용할 수 있음

  • TFDV
    • Data Validation에 관련된 도구
    • 아직은 Tensorflow에서만 활용 가능(확장성에 의문점 존재)

Continuous Training

  • 학습을 (Product 이후에도) 계속해서 수행하는 것

  • 재학습 기간 선택 Option

    • 새로운 데이터가 들어왔을 때 마다 재학습
    • 일정 주기로 재학습
    • Metric 기반 성능이 하락되었을 때 재학습
    • User가 요청하였을 때 재학습

Monitoring

  • 모델의 지표(Metric), 인프라의 성능 지표 등을 잘 기록해야 함

  • 트래픽이 많은 시간이나 구간, 활용 빈도수 등을 확인하여 Production 성능 향상에 도움을 줄 수 있음

AutoML

  • 데이터를 주면 자동으로 Output(Model)을 내주는 Tool
profile
개념부터 확실히!

0개의 댓글