클라우드를 활용한 머신러닝 모델 Serving API 개발 3 : API to serve ML model

임동윤·2022년 10월 12일
0
post-thumbnail
post-custom-banner

API to serve ML model


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를 지칭
    • RESTful API는 데이터나 정보의 교환/요청 등을 위한 인터페이스를 REST 아키텍처를 따라 구현한 API
    • 일반적으로 데이터 값을 담아 요청하고 모델이 추론한 결과에 대한 return을 json 형태로 반환하도록 설계


Practical process of maxhine learning

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


Model Serving

  • 학습된 모델을 REST API 방식으로 배포하기 위해서 학습된 모델의 Serialization과 웹 프레임워크를 통해 배포 준비 필요
    • 모델을 서빙할 때는 학습 시의 데이터 분포나 처리 방법과의 연속성 유지 필요
    • 모델을 배포하는 환경에 따라 다양한 Serving Framework를 고혀하여 활용


Serialization & De-Serialization

  • 학습한 모델의 재사용 및 배포를 위해서 저장하고 불러오는 것
    • Serialization을 통해 ML/DL model object를 disk에 write하여 어디든 전송하고 불러올 수 있는 형태로 변환
    • De-Serialization을 통해 Python 혹은 다른 환경에서 model을 불러와 추론/학습에 사용
    • 모델을 배포하는 환경을 고려해 환경에 맞는 올바른 방법으로 Serialization을 해야 De-Serialization이 가능


Skeleton of handler to serve model

  • skeleton을 이용한 handler

Model serving을 위한 다양한 Frameworks

  • 딥러닝 모델의 안정적인 serving을 위해 TensorFlow serving이나 TorchServe, TensorRT 같은 프레임워크를 사용하는 것이 일반적
    • Flask와 같은 웹프레임워크는 클라이언트로부터의 요청을 처리하기 위해 사용
    • 별도의 모델 추론을 위한 AP 서버를 운용하여 내부 혹은 외부 통신을 통해 예측/추론 값 반환
    • 대용량 데이터 배치처리와 딥러닝 모델의 활용이 늘면서 multi node, multi GPU 환경에서의 안정적인 모델 서빙을 위함


profile
AI Tensorflow Python
post-custom-banner

0개의 댓글