MLOps-ML project Lifecycle

ML project Lifecycle


Introduction

성능이 매우 뛰어난 모델을 만들어도, 해당 모델을 실제로 Deploy하거나 상품화 하지 못하면 최대의 가치를 발휘하지 못할것이다.

스마트폰 제조공정에서 핸드폰 액정의 흠집을 판별하는 시스템이 있다고 하자.

example

공장 내의 Edge device는 내장되어있는 Inspection software로 핸드폰의 사진을 찍고, 만약 흠집이 있다면 허용가능한 수준인지 아닌지 판단한다. 판단을 위해 찍은 사진을 API Call을 통해 Prediction server에 전송한다. Server에서는 API call을 받고, 사진을 받아 분석한 뒤 예측 결과를 Edge device에 전송해준다.

vi

모델은 Test set에서는 잘 작동할 수 있지만, 실제 공장의 조명환경이라던가 여러 요소에 따라 Data환경이 달라질 수 있다. 이런 문제를 Concept Drift 혹은 Data Drift 라고 한다.

이처럼 Jupyter notebook 에서 Model이 잘 돌아가는것 뿐 만 아니라, Production deployment environment 에서도 잘 작동하게 하는것 또한 Machine Learning Engineer의 할 일이라고 할 수 있다.

Machine Learning을 Product로 실용화 한다는것은 단지 모델의 Code만 필요한 것이 아니다. 실제로 ML code는 전체에서 적은 비율을 차지할 것이다.

infra

위의 사진처럼, 작동하는 모델에 대한 Proof of Concept가 있더라도, 실제로 상용화 하기까지는 많은 일들이 남아있다. 모델의 구현과 상품화 사이의 간격을 POC(Proof of Concept) to Production Gap 이라고 한다.


Steps of an ML Project

diagram

ML Project의 가장 첫번째 단계는 Scoping이다. 무엇으로부터 무엇을 얻을지 x->y를 정의한다.

목적을 정한 다음에는 모델을 평가할 핵심 metric들을 정한다. (Accuracy, latency, throughput, etc..)

그리고 이 프로젝트를 진행할 때 필요한 resources들이나 timeline들을 정의하여 scoping을 마친다.

그 다음으로는 알고리즘에 필요한 Data를 수집한다. 이 과정에는 Data를 정의하고 라벨링과 정렬하는 작업이 포함된다.

Data단계에서의 Challenge는 Data의 일관성을 유지하는것이다. 예를 들어 Speech recognition에 쓰일 Data를 모을때, 어디서 어디까지를 잡음으로 처리해야할지, 각자 다른 Volume 들을 어떻게 처리해야할지 등의 기준을 명확히 해야 일관된 Data로 학습을 하여 더 나은 결과를 만들 수 있을 것이다.

Data가 마련되었으면 Modeling을 진행한다. model을 train시키고, 성능 측정과 에러분석을 한다. 분석 결과에 따라 필요시 그 전 step들로 돌아가 반복적으로 수행한다.

모델을 Train 시키는데 가장 핵심이 되는 3가지 요소는 Code, Hyperparameters, Data 이다.

보통 Research나 Academic한 범위에서 모델을 만들고 훈련시키는 경우에는 fixed Data에서 Model의 구조와 Hyperparameters 들은 변경해가며 더 나은 성능을 만드려고 노력한다.

하지만 Product 를 목적으로 하는 Team의 경우에는, fixed된 Model code에 대해서 Hyperparameters와 Data를 optimizing하는데에 집중한다. 그리고 실제로, Model을 열심히 고쳐 1퍼센트의 정확도를 올리는 것 보다, Data를 잘 처리하여 10퍼센트의 정확도를 올리는 일이 더 많고, 더 효율적인 경우가 많다.

또한 그저 더 많은 Data를 수집하여 추가하겠다는 생각 보다는, Data analysis를 철저하게 해서 어떤 Data가 필요한지에 대해 초점을 맞추면 시간과 비용에 있어 더 효율적으로 fitting이 가능하다.

Modeling이 끝나면 해당 모델을 배포하는 Deployment 작업을 한다. 상용화를 하면 끝나는 것이 아니라, 지속적으로 Live traffic에 대한 Monitoring을 하고 시스템을 그에 맞게 유지해야한다.

예를들어 Data distribution이 바뀐다면 그에 맞게 모델도 업데이트 해주어야 할것이다. Maintanece 과정에서 모델을 다시 Train하거나 혹은 Data의 형태를 바꾸고 추가 데이터를 수집하는 등 이전의 단계들로 돌아가 반복하는 작업들이 수행된다.



연관글

Konstantinos, Katsiapis, Karmarkar, A., Altay, A., Zaks, A., Polyzotis, N., … Li, Z. (2020). Towards ML Engineering: A brief history of TensorFlow Extended (TFX). http://arxiv.org/abs/2010.02013

Paleyes, A., Urma, R.-G., & Lawrence, N. D. (2020). Challenges in deploying machine learning: A survey of case studies. http://arxiv.org/abs/2011.09926