<aside>
💡 서비스 적용 및 배포 : 학습이 완료된 모델을 실제 서비스에 적용하는 단계.
</aside>
![Screen Shot 2022-01-25 at 12.19.39 AM.png](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/1d63bf26-864c-4ea5-b9e0-3947d0227457/Screen_Shot_2022-01-25_at_12.19.39_AM.png)
- 학습이 완료된 모델을 실제 상용 프로그램(application)에 적용하기 위해서는 해당 모델을 서비스가 만들어진 프로그램에 넣어야 합니다.
- 프로그램이 호환되기 위해서는 세 가지 방법이 있습니다.
- 기존 어플리케이션이 작동되고 있는 framework(프로그래밍 언어를 비롯한 개발 환경)에 맞추어 코드를 다시 짠다.
e.g. Python(ML model) → Java(application)
- 직접 코드를 짜지 않고, 서로 정보만 API(Application Programming Interface)를 통해서 주고 받는다.
- 머신러닝 모델 객체를 저장하고 상용 프로그램에서 이를 불러와 사용한다.
- 첫번째 케이스는 말도 안되는 경우이므로(
하는 경우도 가끔 있..) 거의 수행되지 않습니다.
- 두번째와 세번째 케이스를 하기 위해서 Python에서 제공되는 Flask나 Django 같은 framework를 통해서 머신러닝 모델 코드와 상용 프로그램이 소통할 수 있게 해줍니다.
- 이러한 과정을
모델 배포(Model Deployment)
라고 합니다.
최종 모델 배포
![Source : https://medium.com/makinarocks/데이터-시대에-mlops가-필요한-이유-1571906b64b7](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/7b53c80d-8754-4d9d-8bb3-491b08df88fa/Screen_Shot_2022-01-25_at_1.52.00_AM.png)
Source : https://medium.com/makinarocks/데이터-시대에-mlops가-필요한-이유-1571906b64b7
- 보통 모델 배포를 하고 서비스에 넣는다고 끝이 아닙니다.
- 머신러닝은 학습(training) 단계를 포함하고 있기 때문에, 지속적인 모니터링을 하면서 계속해서 예측 대상인 데이터에 패턴이 바뀌는지 체크를 해야합니다.
- 데이터의 패턴이 바뀐다면, 학습했던 모델의 성능이 떨어지므로(예측 결과가 안좋아짐) 재학습이 필요합니다!
- 이러한 과정을
머신러닝 모델 개발 사이클(ML Model Development Cycle)
이라고 합니다.
- 이 사이클을 완성하기 위해서는 실제로 학습된 모델이 상용 서비스에 적용되었을 때, 처음 문제 정의를 서비스 형태로 해결할 수 있는지 체크합니다.
- 예를 들어, Iris DB에 적용되는 솔루션을 다시 생각해본다면 4개의 feature값이 들어왔을 때 3개의 종(setosa, versicolor, virginica)으로 분류하는 문제인데 새로운 종에 해당하는 정보가 들어온다면 제대로 예측을 하지 못하고 3개의 종 중에 하나로 답을 합니다.
(왜냐면, 우리가 만든 모델은 3지선다형으로 만들어 졌기 때문에)
- 이러한 케이스가 발생한다면, 새로운 종에 대한 정보를 모델에 업데이트 해야합니다.
- 업데이트를 위해서 데이터를 다시 정의하고, 새로운 종을 포함한 4지선다 문제로 재학습을 진행합니다.