ML모델 서빙 프레임워크




<ML 모델 서빙 파이프라인>은 다음 3개의 파트로 나뉜다.


1. 데이터 파이프라인 : 실시간 or 배치로 데이터를 수집

2. 모델 파이프라인 : 모델을 학습시킴

3. 서빙 파이프라인 : 학습된 모델을 서비스로 서빙.


서빙 파이프라인에서는 또
3.1 전처리
3.2 추론 
3.3 후처리
을 거쳐 사용자에게 결과를 전달한다.


서빙 파이프라인을 위한 "모델 서빙 프레임워크"에 대해서 정리했다.





모델 서빙 프레임워크 선정 기준




  • Warm-up 전, 후 Latency 개선 여부

  • 모델 저장소에 따른 업데이트 방식

  • Concurrent model execution
            여러 개의 모델을 같이 인퍼런스

            하나의 모델을 여러 인스턴스로 실행시켜 병렬적으로 인퍼런스


  • Dynamic Batch 성능 ( Triton )
                Triton 서버에서 동적으로 배치 크기를 만들어 인퍼런스 수행 

  • 안정성 : 장시간 인퍼런스 가동시 메모리 누수등의 이슈


*
링크의 포스팅에 따르면
모델 서빙 프레임워크 비교를 위해
모델을 Tensorflow 모델로 고정해서 테스트했다.

다른 모델을 사용한다면 결과가 달라질 수도 있다.



*
모델 개발을 하는 머신러닝 리서치는 파이썬으로
모델 서빙 백엔드 개발자는 Kotlin+Spring boot로 서버를 개발했다.


*
모델별 최적의 포맷이 다른 상황은
여러 개의 모델을 서빙하는 인공지능 서비스에서
개발 생산성 저하와 운영의 부담을 가중시킨다.


모델 서빙 프레임워크



FastAPI

Python FastAPI는 거의 모든 기능을 직접 구현해야한다.
애초에 FastAPI는 ML 모델 서빙을 겨냥하고 만들어진 것이 아니라
웹 애플리케이션 프레임워크이다.





Triton

https://github.com/triton-lang/triton
고성능의 커스텀 딥러닝 Primitive( 기초 데이터타입 )를 작성하기 위한 
언어이자 컴파일러이다.

Triton은 SaaS 같은 서비스가 아니라
오픈소스 소프트웨어다.

Triton을 설치하여 모델을 서빙하기로 결정했다면
Triton에서 제공하는 API와 구조에 따라 서빙해야한다.
Rest API, gRPC를 지원한다.


Tesnorflow및 Triton은 서빙할 모델이 있다면
직접 서버를 구현하지 않아도 
프레임워크의 규칙에 따라 손쉽게 모델API를 배포할 수 있다.


동일한 모델이라도
어떤 포맷으로 인퍼런스 최적화가 되었냐에 따라 성능에 차이가 있기 때문에
[ TF(tensorflow_savemodel), TensorRT, Onnx ] 등의
모델 포맷을 지원하는 Triton은 
다양한 모델 포맷을 다루는 팀에서 적절한 선택지가 될 수 있다.












댓글

이 블로그의 인기 게시물

실무진 면접 경험으로 정리하는 백엔드 (1) : 에듀 테크 기업 면접

Blogger 커스터마이징 : CSS 수정 (sticky-header)

Intel 14th gen CPU의 칩 충돌 사태와 해결 방법