서비스의 제공 방식에는 다양한 방식이 있다. Product내부 작은 기능 하나부터 앱의 배포, API서비스 론칭 등이 그 예시이다. ML프로젝트를 하는 경우 많은 회사에서 막히는 부분은 모델의 선정과 학습이 아니라 학습시킨 모델을 서비스화하고 배포하는 과정이다.
ML 모델을 서빙하는 데 문제가 발생하는 이유는 아래와 같다.
1. 모델 개발과 소프트웨어 개발의 괴리
2. 모델 개발 과정과 소프트웨어 개발 과정의 파편화
3. 모델 편가 방식 및 모니터링 구축의 어려움
이러한 모델 서빙에서의 어려움을 간편해 주는 도구들은 아래와 같다.
1. Seldon Core: Seldon
2. TF Serving: Tensorflow
3. KF Serving: Kubernetes
4. Torch Serve: pyTorch
5. BENTOML: BentoML
가장 대표적으로 사용 되는 도구들로 1) Flask, 2) Seldon Core를 들 수 있다.
1) Flask
출처: flask 홈페이지
Flask는 MSA(Micro Service Architecture)를 위한 웹 프레임워크(Web Framework)로, 사용하기 쉽고, 간단한 기능을 가볍게게 구현하기에 적합하기 때문에 대부분의 ML Model의 도입단계에서 첫 배포 Step으로 Flask를 주로 사용한다. 대규모 기능을 처리하는 데 용이한 Django와 같은 다른 framework에 비해 굉장히 가벼우며, 확장성 유연성이 뛰어난 프레임 워크이다. 단, 자체 지원 지능이 적다는 문제를 갖고 있다.
2) Seldon Core
출처: Red Hat
Seldon Core는 쿠버네티스 환경에서 머신러닝 모델을 배포하기 위해 사용되는 프레임워크이다.Seldon Core의 장점은 아래와 같다.
(1) Seamless ML model deployment (원활한 모델 배포):
외부의 오픈 소스나 상업적 모델들을 통해 구성된 모델들까지도 single layer만으로 관리할 수 있다는 장점을 가진다. 뿐만 아니라 사용자 지정 리소스 정의와 같은 Kubernetes내의 기능을 사용하여 모델 그래프를 관리할 수 있다.
(2) Entirely Framework, Language-agnostic (언어에 상관 없이 작동하는 전적인 Framework):
Seldon Core는 선호하는 모든 ML 라이브러리, 툴킷 및 언어를 지원하고 지속적 통합 및 배포(CI/CD) 도구를 쉽게 연결하여 배포를 확장 및 업데이트할 수 있다. 온프레미스 또는 선호하는 클라우드에서 실행할 수 있다.
(3) Minimise risk (위험 최소화):
Seldon Core는 적절한 거버넌스와 규정 준수를 보장하며, 배포 버전에 대해 실험, 앙상블, 트랜스포머를 가능하게 해 준다.
(4)Full lifecycle management (전체 수명 주기 관리):
Seldon Core는 업데이트, 확장, 모니터링 및 규정 준수를 포함하여 종단 간 제어를 제공한다. 또한, Canaries 또는 Shadow 배포를 통한 프로덕션 롤아웃도 가능하며, 모델 상태에 대한 포괄적인 개요를 통해 모델 배포를 최적화한다.