API to serve Ml model

손문기·2021년 7월 28일
0

Architecture of API to serve Ml model

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

Interface

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

정보의 입력을 위한 인터페이스와 정보를 받는 출력을 위한 인터페이스가 있다.

인터페이스는 상호 합의된 매뉴얼에 따라 적절한 입력을 받아 기대되는 출력을 제공할 수 있어야 한다.

API(Application Programming Interface)

기계와 기계, 소프트웨어와 소프으퉤어 간의 커뮤니케이션을 위한 인터페이스

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

RESTful API for ML/DL model inference

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

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

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

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

Practical process of machine learning

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

  1. 문제정의
    가공되지 않은 원천 데이터를 가져오고, 풀고자 하는 문제를 정의한다.

  2. 데이터 준비, 모델 학습 및 검증
    데이터를 필요한 형태로 가공하고, 이를 바탕으로 모델을 학습하고 검증한다.

  3. 모델 배포, 모니터링
    모델을 배포하고 지속적인 모니터링을 한다.

Model Serving

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

모델을 서빙할 때는 학습 시의 데이터 분포나 처리 방법과의 연속성 유지가 필요하다.

모델을 배포하는 환경에 따라 다양한 Serving Framework를 고려하여 활용한다.

Model Training -> Serializing Model -> Serving Model

Serialization & De-serialization

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

Serialization을 통해 ML/DL model object를 disk에 write하여 어디는 전송하고 불러올 수 있는 형태로 반환한다.

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

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

Model Serving을 위한 다양한 Frameworks

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

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

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

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

머신러닝 모델 서브 API에 관한 개념들을 정리해 보았다. Interface나 API같이 많이 들어보고 접해본 개념도 있었지만, 대부분이 처음 듣는 생소한 개념들이었다. 앞으로 있을 실습을 위해서라도 개념을 잘 알아두고 넘어가야겠다!

0개의 댓글