MLOps의 Serving 단계에 대한 설명
Machine Learning + Operation = MLOps
ML 모델 배포, 관리, 모니터링, 거버넌스의 기능
모델 개발자들은 다양한 언어(Python, Go,…)와 다양한 프레임워크(TensorFlow, PyTorch, Scikit-learn,…)를 사용해서 모델을 개발한다.
서버 개발자는 모델 개발자의 요청에 따라 모델을 서버에 배포한다.
시스템 운영자는 배포된 모델을 모니터링하고 모델 개발자에게 피드백을 준다.
모델 개발자는 피드백을 통해 모델을 개선하고 다시 배포 요청을 한다.
.....(반복)
각 담당자별로 각자의 요구사항이 있다.
1)다양한 모델 개발환경이 필요
2)지속적인 업무 협업이 필요
3)모델 개발, 배포, 모니터링, 피드백까지의 플로우가 오래 걸림
이러한 요구사항을 개선하고 자동화하기 위한 시스템이 필요하고 다양하게 만들어진 모델을 서비스하기 위한 시스템이 필요하다.
그래서 MLOps 구성이 필요하게 되었다.
ML 모델을 서비스(Application)화하여 Predict하는 것
즉 개발된 모델을 누구나 쉽게 사용할 수 있도록 서비스로 제공하는 것
아래 그림에서의 Production 단계이다.
모델을 배포하여 서비스할 수 있는 환경을 직접 구축하는 것이다.
모델 서비스를 위한 API, Server와 모델 배포/관리/운영을 위한 개발 환경 구축이 필요하다.
Serving 기능의 테스트 용도로 사용하는 정도로 적합하다.
다양한 오픈소스를 사용하여 시스템을 구축하는 방법이다.
환경 구축(Docker, K8s, Serving Tool)과 Serving 도구(KFServing, Seldon core, TensorFlow Serving)등을 사용하여 구축한다.
오픈소스이기에 설치, 구성, 사용상의 불편함은 감수해야 하지만 전체 Serving 기능을 사용하는데는 문제가 없다.
AWS Sagemaker 같은 클라우드 서비스를 이용하는 방법이다.
환경 구축, 개발업무가 필요없이 편리하게 사용할 수 있다.
하지만 비용 이슈이 많이 들고 커스텀하게 시스템을 구축하기에는 무리가 있다.