Search
🚢

08. ML Workflow - Deployment

Created
2023/06/28 16:02
Tags
data science
machine learning
data analysis
서비스 적용 및 배포 : 학습이 완료된 모델을 실제 서비스에 적용하는 단계.
학습이 완료된 모델을 실제 상용 프로그램(application)에 적용하기 위해서는 해당 모델을 서비스가 만들어진 프로그램에 넣어야 합니다.
프로그램이 호환되기 위해서는 세 가지 방법이 있습니다.
1.
기존 어플리케이션이 작동되고 있는 framework(프로그래밍 언어를 비롯한 개발 환경)에 맞추어 코드를 다시 짠다. e.g. Python(ML model) → Java(application)
2.
직접 코드를 짜지 않고, 서로 정보만 API(Application Programming Interface)를 통해서 주고 받는다.
3.
머신러닝 모델 객체를 저장하고 상용 프로그램에서 이를 불러와 사용한다.
첫번째 케이스는 말도 안되는 경우이므로(하는 경우도 가끔 있..) 거의 수행되지 않습니다.
두번째와 세번째 케이스를 하기 위해서 Python에서 제공되는 Flask나 Django 같은 framework를 통해서 머신러닝 모델 코드와 상용 프로그램이 소통할 수 있게 해줍니다.
이러한 과정을 모델 배포(Model Deployment)라고 합니다.

최종 모델 배포

보통 모델 배포를 하고 서비스에 넣는다고 끝이 아닙니다.
머신러닝은 학습(training) 단계를 포함하고 있기 때문에, 지속적인 모니터링을 하면서 계속해서 예측 대상인 데이터에 패턴이 바뀌는지 체크를 해야합니다.
데이터의 패턴이 바뀐다면, 학습했던 모델의 성능이 떨어지므로(예측 결과가 안좋아짐) 재학습이 필요합니다!
이러한 과정을 머신러닝 모델 개발 사이클(ML Model Development Cycle)이라고 합니다.
이 사이클을 완성하기 위해서는 실제로 학습된 모델이 상용 서비스에 적용되었을 때, 처음 문제 정의를 서비스 형태로 해결할 수 있는지 체크합니다.
예를 들어, Iris DB에 적용되는 솔루션을 다시 생각해본다면 4개의 feature값이 들어왔을 때 3개의 종(setosa, versicolor, virginica)으로 분류하는 문제인데 새로운 종에 해당하는 정보가 들어온다면 제대로 예측을 하지 못하고 3개의 종 중에 하나로 답을 합니다. (왜냐면, 우리가 만든 모델은 3지선다형으로 만들어 졌기 때문에)
이러한 케이스가 발생한다면, 새로운 종에 대한 정보를 모델에 업데이트 해야합니다.
업데이트를 위해서 데이터를 다시 정의하고, 새로운 종을 포함한 4지선다 문제로 재학습을 진행합니다.
다시 배포를 해서, 서비스에 원활하게 적용이 되는지 체크합니다.
이런 과정을 도와주는 오픈소스 라이브러리 MLFlow가 있습니다.

요약

학습이 완료된 머신러닝 모델은 어플리케이션에 적용되어 처음에 정의했던 문제를 해결할 수 있는지 체크를 해야합니다.
배포된 모델이 서비스에서 제대로 된 성능을 내지 못하고 있다면, 어떤게 문제인지 체크를 해야합니다. 그리고 그 문제를 모델에 다시 업데이트해서 해결을 합니다.
이러한 모든 과정을 포함하는 것을 MLOps(Machine Learning OPerations)라고 합니다.

Hands-on

1.
MLOps라는 키워드에 대해 검색해서 관련 블로그를 3개 정도 읽어보세요. 위의 development cycle과 어떠한 연관성이 있나요?
2.
Data Scientist와 ML Engineer가 하는 역할의 차이가 무엇이라고 생각하시나요? 모른다면 JD를 참고해서 차이를 비교해보세요.
3.
여러분은 Data Scientist가 되고 싶으신가요 ML Engineer가 되고 싶으신가요?