API to serve ML model

박병규·2021년 7월 26일
0

인공지능_부트캠프

목록 보기
12/17
post-thumbnail

API to serve ML model 구조

  • AWS EC2와 Flask 기반 모델 학습 및 추론을 요청/응답하는 API 서버 개발

Interface

커뮤니케이션을 하기위한 약속이라고 보면 될 것 같다. 리모컨과 같이 입력에 대한 출력이 나오는 것처럼 입력에 따라 적절한 출력에 나오면 된다. 서로 연결되고 영향을 준다.

사용자는 기계와 소프트웨어를 제어하기 위해 인터페이스를 정해진 메뉴얼에 따라 활용하여 원하는 경험을 획득

API란?

Application Programming Interface의 약자이다

프로그램간에 데이터를 주고 받는 방법이다.

노드와 노드 간 데이터를 주고 받기 위한 인터페이스로, 사전에 정해진 정의에 따라 입력이 들어왔을 때 적절한 출력을 전달해야 한다.

RESTful API for ML/DL model inference

REST 아키텍처를 따르는 API로 HTTP URI를 통해 자원을 명시하고 HTTP Method를 통해 필요한 연산을 요청하고 반환하는 API를 지칭한다.

RESTful API는 데이터나 정보의 교환/요청 등을 위한 인터페이스를 REST 아키텍처를 따라 구현한 API

일반적으로 데이터 값을 담아 요청하고 모델이 추론한 결과에 대한 return을 json 형태로 보통 반환하도록 설계한다.

RESTful API 요청 메시지만 봐도 어떤 내용으로 되어있는지 알 수 있도록 표현

Parctical process of machine learning

문제 정의 → 데이터 준비, 처리, 모델 학습 → 모델 검증, 배포

문제정의, 데이터준비, 모델 학습 및 검증, 모델 배포, 모니터링 등의 과정을 통해 실제 서비스에 기계학습 모델을 적용

Model Serving

학습된 모델을 REST API 방식으로 배포하기 위해서 학습된 모델의 Serialization과 웹 프레임워크를 통해 배포 준비 필요

  • 모델을 서빙할 때는 학습 시의 데이터 분포나 처리 방법과의 연속성 유지 필요
  • 모델을 배포하는 환경에 따라 다양한 Serving Framework를 고려하여 활용

Serializatin & De-serialization

직렬화와 역직렬화

Serializatin 객체들의 데이터를 연속적인 데이터로 변형하여 데이터를 읽도록 해준다.

학습한 모델의 재사용 및 배포를 위해서 저장하고 불러오는 것

serialization을 통해 ML/DL model object를 disk에 write하여 어디든 전송하고 불러올 수 있는 형태로 변환

De-serialization을 통해 Python 혹은 다른 환경에서 model을 불러와 추론/학습에 사용

모델을 배포하는 환경을 고려해 환경에 맞는 올바른 방법으로 Serialization을 해야 De-serializatin이 가능

Model serving을 위한 다양한 Frameworks

딥러닝 모델의 안정적인 serving을 위해 Tensorflow serving이나 TorchServe, TensorRt같은 프레임워크를 사용하는 것이 일반적이다.

Flask와 같은 웹 프레임워크는 클라이언트로부터의 요청을 처리하기 위해 주로 사용

별도의 모델 추론을 위한 AP서버를 운용하여 내부 혹은 외부 통신을 통해 예측/추론값 반환

대용량 데이터 배치처리와 딥러닝 모델의 활용이 늘면서 multi node, multi GPU환경에서의 안정적인 모델 서빙을 위함

profile
computer science student

0개의 댓글