[8주차] MLOps 개론

Soonyoung Hwang·2022년 11월 10일
0

네이버 부스트캠프

목록 보기
1/14
post-thumbnail
  1. MLOps가 필요한 이유 이해하기

    일반적으로 우리가 리서치하는 부분은 주어진 고정된 데이터에 대해서 학습을 하고 특정 기능을 수행하는 것 입니다. 하지만 실제로 이것을 웹이나 앱서비스로 배포한다고 가정하면 리서치에서 더 나아가 고려할 것들이 생깁니다. 예를 들어 갑자기 모델의 결과값이 이상하거나, 더 좋은 모델을 찾아냈을 때, 혹은 더 좋은 모델로 바꾸었더니 실제 배포 후 성능이 더 떨어졌을 때 등 이 외에도 여러가지 이슈에 대해 유연하게 처리할 수 있어야 합니다. 혹은 model drift/data dirft 에 대해서도 유연한 처리가 필요합니다.

    실제 머신러닝 서비스 과정에서 리서치 자체는 (중요하지만) 매우 작은 부분이며 배포방법, 데이터모으는 방법, 서빙하는 툴, 모니터링 등 여러가지 업무에 대해 처리할 수 있어야 합니다. 이와 같은 상황에서 MLOps의 개념이 등장합니다. MLOps란 머신러닝 서비스를 운영하면서 반복적으로 필요한 일들을 자동화 시키는 과정입니다. 자동화를 통해 발생하는 문제의 중복처리를 최소화하고 유연한 상황대처를 통해 비즈니스 가치를 창출하기도 하고 리서치 자체에만 집중할 수 있게 도와줍니다.

  2. MLOps의 각 Component에 대해 이해하기

    MLOps에는 전체 서비스를 위해 여러 구성요소가 있습니다. 타코 예제를 통해 구성요소의 역할을 알아봅시다.

    ML Research를 집에서 만드는 타코, Production ML을 실제 가게를 열어서 판매하는 타코라고 가정해봅시다. Production Serving 과정에서는 여러가지 추가요소들이 필요합니다. 예를 들어, 음식(모델), 식재료(Data), 요리(Train), 식기류(GPU) 등이 필요합니다.

    1. Infra 식기류(GPU)는 레스토랑의 규모에 따라 빌리는 것이 나을 수도, 사는 것이 나을 수도 있습니다. 빌린다면 AWS, Google Cloud, Azure등의 GPU Cloud를 돈내고 사용한다고 생각할 수 있습니다. 만약 직접 사용한다면 회사나 대학원의 전산실에 서버를 설치하고 운영하는 것을 예로 들 수 있습니다.(온프레미스 방식)
    2. Serving - 서빙하는 방식에 따라 특정 양을 일 단위/월 단위 등으로 서빙하는 batch serving, 혹은 주문받아서 실시간으로 만들어서 서빙하는 online serving이 있습니다.
    3. Experiment & Model Management 요리(Train)과정을 봅시다. 요리하는 과정은 모델 실험, 모델 관리 과정과 유사합니다. 모델 실험은 주로 집에서 합니다. 집에서의 요리는 요리를 만들면서 레시피를 기록하며 어떤 조합이 좋은지 알 수 있습니다. 여러 시행착오를 겪으며 가장 좋았던 레시피를 만드는 과정입니다. 하지만 식당에서의 요리라는 행위는 집에서 만든 가장 좋은 레시피를 가지고 서빙하기 위해 합니다. 각각의 레시피를 토대로 요리를 만들어서 언제 만들었는지(생성일), 얼마나 맛있는지(퍼포먼스), 몇 인분인지(메타정보) 등을 기록해 두기도 하면서 말이죠. 또한, 사용자의 니즈에 따라 닭고기 타코, 피시타코 등 여러가지 타코를 서빙할 수도 있습니다. 대표적인 모델 관리 프로그램은 mlflow가 있습니다.
    4. Feature Store 요리할 때 마다 원재료를 가져다 쓰는 것 보다는, 미리 재료를 손질해놓고 요리할 때 마다 쓰는 것이 합리적일 것 입니다. 이러한 가공된 재료들을 냉장고에 저장해놓는 과정을 feature store라고 합니다. 이런 냉장고는 집과 식당에 따로 있을 수도 있지만 공용된 냉장고를 쓴다면 공통의 가공재료를 더 쉽게 가져다 쓸 수 있습니다.
    5. Data Validation 내가 집에서 사용한 재료들이 ****식당에서 사용하는 재료와 동일한지 눈으로 볼 필요가 있습니다. 만약 재료의 상태(데이터의 분포)가 다르다면 음식의 맛(결과)도 다를테니까 말이죠. 이는 머신러닝에서 Feature의 분포 확인이라고 할 수 있고 확인하는 과정을 validation 이라고 합니다. 확인해야 할 것은 손님들의 분포역시 마찬가지입니다. 손님들의 분포도가 바뀐다면 모델이 업데이트가 될 필요가 있습니다. 예를 들어, 1인 손님이 늘었다면 1인 메뉴가 더 다양하도록 모델을 수정하면 좋겠죠. 이러한 손님들(외부 실제 데이터)의 분포 변화로 인해 생기는 모델의 차이를 data drift/model drift라고 하고 모델을 업데이트 해주어야 합니다. 이러한 모델에 영향을 미칠 수 있는 변화 손님변화 감지도 validation이라고 합니다.
    6. Continuous Training 끊임없는 레시피 개발은 중요합니다. 맛(경쟁력)을 위해 더 신선한 재료를 이용하거나, 시기마다 다른 제철 재료를 사용할 수도 있을 것 입니다. 혹은 특정 메뉴를 원하는 손님이 늘었다거나, 이유를 모르게 매출이 줄었을 경우도 다시 기존의 레시피에 대해 재고해봐야 합니다. 머신러닝에서도 새로운 데이터에 대해 retraining을 통해 성능을 높힐 수 있습니다.
    7. Monitoring 현재 충분히 잘하고 있는지, 모델을 개선해야하는지 어떻게 확인할 수 있을까요? 매출, 손님 수, 리뷰 등을 통해 확인할 수 있습니다. 모니터링을 통해 새로운 개선점을 찾을 수도 있을 것 입니다.
    8. AutoML 프렌차이즈의 도움을 받는다면, 받은 재료를 기계에 넣기만 하면 완성품이 나오고 계산하는 과정까지 저절로 처리가 될 것 입니다. 이렇게 쉽게 요리를 할 수 있도록 도와주는 서비스를 AutoML 이라고 합니다.

    이러한 Component들 각각의 우선순위는 회사의 비즈니스 상황과 모델 운영 상황에 따라 우선순위가 다릅니다. 때때론, 이런 자동화된 Component들을 만드는 수고가 비효율적일 수 있습니다. 처음엔 최소한의 작은 단위(MVP Minimal Value Product)로 시작해서 점점 회사가 커질 때 하나씩 구축하는 것이 더 맞는 방식일 것 입니다. 일례로 동네 치킨집을 새로 시작하는데 프렌차이즈의 시스템을 모두 갖출 필요는 없듯이 말이죠.

  3. MLOps 관련된 자료, 논문 읽어보며 강의 내용 외 어떤 부분이 있는지 파악해보기

    1. Hidden Technical Debt in Machine Learning Systems 논문

      Techincal Debt in ML System에 대해 고찰 일반적으로 소프트웨어 배포 및 유지하는데 있어서 technical debt 라는 개념의 유지보수 비용이 발생하게 된다. 하지만 data dependency한 ML의 특성상 ML system에서는 일반적인 소프트웨어의 경우 보다 더 많은 technical debt가 발생하게 된다. 게다가 ML system에서의 technical debt는 찾기가 힘들고 비용이 더 크다.

      → 유지보수의 역할이 더 중요하다 = MLOps의 필요성

    2. How to Detect Model Drift in MLOps Monitoring

      ML drift 종류 : Concept Drift-P(Y|X), Prediction Drift-P(Y hat | X), Label Drift-P(Y Ground Truth), Feature Drift-P(X)

      Statistical calculation KL divergence, Jensen-Shannon, KS test 로 확률분포변화 비교

      Model based calculation

    3. Productionizing Machine Learning: From Deployment to Drift Detection

      Types of drift : Concept Drift, Data Drift(seasonality), Upstream Data Changes(feature encoding) + Analyze the distribution of (Data/Labels/Schema/Predictions)

      Delta Lake for Data Drift / Databricks Runtime for ML/MLflow for Concept/Model Drift

    4. Awesome production machine learning

      다양한 Task를 수행하는 Tool들 소개

    5. Awesome MLOps

      MLOps의 전체적인 내용을 다루는 페이지(커뮤니티, 기본, 논문, 책, 툴, …)

    6. 구글 클라우드의 Practitioners Guide to MLOps

      MLOps 교과서

    7. Superb AI의 실리콘밸리의 ML옵스

      시간날 때 다운로드 받아서 관심있는 분야 읽어보면 좋을 듯

  1. MLOps Component 중 내가 매력적으로 생각하는 Top3를 정해보고 왜 그렇게 생각했는지 작성해보기

    AutoML : 과거에는 학습 파라미터 조절 정도를 도와주는 정도이지만, 이제는 모델 자체도 저절로 처리되는 단계이기 때문에 굉장히 큰 발전의 기로에 있다고 생각해서

    Monitoring : 결국은 다양한 component 들을 visualization 을 통해서 빠르게 파악할 수 있도록 해야하고 기계가 학습해서 하는 부분이 아니라 인간 스스로를 위한 component 이라서

    Data Validation : data validation 이야 말로, MLOps의 가장 중요한 존재 이유라고 생각합니다.

이번 과제는 변성윤 마스터님의 MLOps 수업 내용을 토대로 작성되었습니다.

profile
https://github.com/soonyoung-hwang

0개의 댓글