What is API Deployment ?

JeongChaeJin·2022년 11월 29일
0

모두의 MLOps (Kubeflow)

목록 보기
16/21

API Deployment

  • 학습된 모델을 사용해 추론할 때는 빠르고 쉽게 추론 결과를 받아 보고 싶다.
  • 직접 스크립트를 통해 모델 로드 후 추론할 수 있지만 이는 모델이 클수록 많은 시간을 소요하여 비효율적이다. 또한, 많은 사람이 이용할 수 없고, 해당 모델이 있는 환경으로 제한된다.
  • 그래서 실제 머신 러닝 사용 시 API를 통해 학습된 모델을 사용한다.
    • API Server 구동 시, 모델이 한번만 로드되며 DNS를 통해 외부에서도 쉽게 추론 결과를 받고, 연동할 수 있다.
  • 모델을 API로 만드는 데는 부수적인 작업들이 필요하지만, 머신러닝 프레임워크에서는 Inference engine을 개발하였다. 이를 이용하면 해당 프레임워크로 개발되고 학습된 모델을 불러와 추론이 가능한 API를 생성할 수 있다. (REST or gRPC)
    • 이 inference engine을 활용해 구축한 API 서버로 추론하고자 하는 데이터를 담아 요청을 보내면 추론 결과를 응답에 담아 전송해준다.
    • Tensorflow Serving
    • TorchServe
    • Onnx Runtime
  • 이 처럼 모델의 추론 결과를 API 형태로 받아 볼 수 있도록 배포하는 것을 API Deployment라고 한다.

Serving Framework

  • 위에서 소개한 추론 엔진들을 사용해 API Deployment를 한다면 배포하기위한 Deployment, 요청을 보낼 Endpoint를 생성하려는 Service, 외부에서 추론 요청 시 추론 엔진으로 보내기 위한 Ingress 등 많은 쿠버네티스 Resource를 배포해주어야한다.
    • 이 뿐만 아니라 많은 추론요청이 들어올경우 scale-out, 모니터링, 버전 업데이트 등 추론 엔진 운영시 요구사항은 한 두가지가 아니다.
  • 위와 같은 문제를 해결하기 위해 쿠버네티스 환경 위에서 한 번 더 추상화한 Serving Framework들이 개발되었다.
profile
OnePunchLotto

0개의 댓글