ML/AI/SW Developer

MLOps 개론

0. 강의 소개

프로덕트 서빙 강의에 오신 것을 환영합니다! 
이번 강의에서는 앞으로 강의가 어떻게 진행되는지 그리고 캠퍼분들께서 강의를 통해 어떤 것들을 얻어가실 수 있는 지에 대한 전반적인 설명이 담긴 강의입니다.
MLOps라는 용어를 최근에 많이 들어보셨을텐데요,  이번 강의에서는 MLOps가 무엇인지, MLOps가 필요한 이유 그리고 MLOps를 구성하는 Component들에 대해서 구체적으로 알아보는 시간을 가져보도록 하겠습니다.

1. MLOps 개론

1.1 모델 개발 프로세스(Research)

  • 문제정의 / EDA / Feature Engineering / Train / Predict
    • local 컴퓨터를 활용, 고정된 데이터를 사용해 학습

1.2 모델 개발 프로세스(Production)

  • 문제정의 / EDA / Feature Engineering / Train / Predict / Deploy
    • “모델에게 데이터를 제공하면서, XXX를 예측해주세요” 라는 요청
    • 모델이 배포되었다 가정
      • 모델의 결과가 이상한 경우가 존재 -> 원인 파악 필요
        • outlier 등
      • 모델의 성능이 계속 변경
        • research 환경에선 성능이 좋았던 모델이 production 환경에서는 더 좋지 않을 수 있음

1.3 MLOps란?

  • ML + Ops
    • 머신러닝 모델을 운영하면서 반복적으로 필요한 업무를 자동화 시키는 과정
    • 목표
      • 머신러닝 모델 개발, 머신러닝 모델 운영에서 사용되는 문제, 반복을 최소화하고 비즈니스 가치 창출
  • 최근 비즈니스 문제에 머신러닝/딥러닝을 적용하는 case가 많아짐
    • research 환경의 모델 재현 가능성이 중요
    • 현실의 risk가 많은 환경에 강건해야함
  • 아직 이게 정답이다라는 것이 없음!!

1.4 MLOps 학습 방법

  • MLOps의 각 Component에서 해결하고 싶은 문제는 무엇이고, 그 문제를 해결하기 위한 방법으로 어떤 방식을 활용 할 수 있는지를 학습하는 방식

2. MLOps Components

2.1 타코 만들기

  1. 타코 레스토랑을 만든다고 가정하자!
  2. 집과 레스토랑을 구분하자
  3. 레스토랑에서는 집과는 다른 재료를 사용해야 한다! (비슷하지만은 살짝 다른)
    • 맛이 달라질 수 있고, 예측할 수 없는 변화들이 존재한다.

2.2 MLOps 관점으로 생각해보기 1 - 필요한 components!!

  1. 집은 Research 환경, 레스토랑은 Production 환경
  2. 타코는 모델, 식재료는 데이터!
  3. 요리하는 행위 = 모델 Train
  4. 집에서는 그냥 요리하면 되지만, 레스토랑을 위해선 “장소”가 필요!
    • 유동인구 (=트래픽)
    • 가게의 평수 (=서버의 CPU, Memory 성능)
    • 점포 확장성 (=스케일 업, 스케일 아웃)
    • 장소 확보 방안 (=자체서버? 클라우드?)
      • 보통은 클라우드 사용
      • 금융권 등은 클라우드를 사용할 수 없음
  5. 요리 도구(GPU infra)
    • 클라우드: AWS, GCP, Azure, NCP 등
    • 온 프레미스: 회사나 대학원의 전산실에 서버를 직접 설치
  6. 손님들에게 요리 제공(Serving)
    • Batch serving(주기적 제공)
    • Online serving(실시간 제공)

2.3 MLOps 관점으로 생각해보기 2 - 재현가능성을 위해!

  1. 레시피를 잘 기록하자(Experiment, Model Management)
    • 요리를 만들 때, 레시피를 기록해야 어떤 조합이 좋은지 알수 있음(=파라미터, 모델구조 등)
    • 여러 시행착오를 겪음(=파라미터 서칭, 모델구조변경 등)
    • 가장 맛있었던 레시피를 레스토랑에 적용(=가장 성능이 좋았던 레시피를 서빙에서 적용)
    • 요리 과정중 생기는 부산물 저장! 음식 모형같은거(=모델 Artifact, 이미지 등)
    • 여러 타코가 있기 때문에,
      • 언제 만들었는지? 얼마나 맛있는지? 유통기한은? 을 기록해 둘 수 있음
      • 모델 생성일, 모델 성능, 모델 메타 정보!!
  2. 반복적으로 사용되는 재료는 미리 만들어 두기(Feature store)
    • 재료들을 미리 가공해 냉장고에 저장
      • 머신러닝 feature를 집계한 feature store
      • https://feast.dev/
    • 집과 레스토랑에서 같은 재료를 사용하도록 냉장고 구축
  3. 재료들의 상태 확인(Data validation)
  4. 요리의 인기도가 떨어진다…(Retrain)
    • 시간이 지나면서 고객들이 요리를 별로 마음에 들어하지 않는다…
      • 신선한 재료로 Retrain!
        • 재료가 도착한경우(=새로운 데이터)
        • 일정 기간 마다
        • 갑자기 매출이 줄어든 경우(=성능저하)
        • 요청시
  5. 레스토랑 상황 파악(Monitoring)
    • 레스토랑의 매출, 손님 수, 대기열 등을 잘 기록해야 한다! -> 추가적인 아이디어 획득 가능
      • 얼마나 판매되는지?
      • 동시 주문이 많이 몰리는 시기가 있는지?

2.4 MLOps 라이브러리들!

  • 구글 MLOps 가이드
  • https://github.com/EthicalML/awesome-production-machine-learning
  • https://github.com/visenger/awesome-mlops

3. Special Mission

  1. MLOps가 필요한 이유 이해하기
  2. MLOps의 각 Component에 대해 이해하기(왜 이런 Component가 생겼는가?)
  3. MLOps 관련된 자료, 논문 읽어보며 강의 내용 외에 어떤 부분이 있는지 파악해보기
  4. MLOps Component 중 내가 매력적으로 생각하는 TOP3을 정해보고 왜 그렇게 생각했는지 작성해보기

Reference

  • AI boot camp 2기 서빙 강의