API 아키텍쳐
AWS EC2와 Python Flask 기반으로 모델 학습 및 추론을 요청/응답하는 API 서버 개발
Interface
- 사용자가 소프트웨어 제어를 위해 인터페이스를 정해진 메뉴얼로 활용
ex) 마우스, 키보드, 모니터, 프린터..
- 적절한 입력으로 적절한 출력 제공
API
Application Programming Interface
- 기계와 기계, 소프트웨어와 소프트웨어 간의 커뮤니케이션을 위한 인터페이스
머신러닝, 딥러닝의 RESTful API
REST 아키텍쳐를 따라 구현한 API
독립적인 HTTP로 구성된 요청과 반환으로 이루어진 설계
데이터 값을 담아 요청하고, 결과를 json형태로 반환
요청 메시지로 어떤 내용이 있는지 표현 가능
API는 Trained Model File을 실행하고 예측하는 부분에서 사용된다.
이 전단계에서는 데이터 전처리 과정이 필요하고 이후의 단계에서는 웹 앱 인터넷 등을 통해 사용자에게 공급할 수 있게 된다.
Model Training | Serializing | Serving Model |
- data preprocessing - model fitting - evaluation |
- save trained model | - load trained model - define inference - deployment |
전체의 과정에서 데이터 분포와 처리방법과의 연속성이 있어야 한다.
중간에 흐름이 끊기면 성능이 저하되기 때문이다.
또한 배포하는 환경에 따라 다양한 Serving Framework를 고려해야 한다.
모델을 전처리, 트레이닝, 저장, 로드 모든 과정에서 연속성이 필요하다.
Serialization & De-serialization
학습한 모델의 재사용 및 배포를 위해 디스크에 저장하고 불러오는 것
머신러닝 딥러닝 모델 오브젝트를 디스크에 저장하여 어디든 전송하고 불러올 수 있는 형태로 변환

Handler를 통해 어떤 인터럽트가 발생 했을 경우 사용해야 하는 함수로 배정해 준다.
API 의 코드 유지 보수에서 핸들러가 중요한 역할을 한다.
딥러닝 모델의 안정적인 serving을 위해 TensorFlow, TorchServe, TensorRT같은 프레임 워크를 사용한다.
Flask와 같은 웹 프레임워크는 클라이언트로부터 요청을 처리하기 위해 주로 사용하며
별도의 모델 추론을 위한 AP 서버를 운용하며 내부와 외부 통신을 통해 데이터를 예측하고 추론한 값을 반환한다.
대용량 데이터 배치처리와 딥러닝 모델의 활용이 늘면서 multi node, multi GPU 환경에 적응해야 한다.
'AWS' 카테고리의 다른 글
Inference를 위한 Model Handler 구현 (0) | 2021.12.29 |
---|---|
Trained Model Serialization, De-serialization (0) | 2021.12.29 |
AWS EC2 Putty Open ssh와 연결 (0) | 2021.12.28 |
AWS EC2 생성 (0) | 2021.12.28 |
AWS 제공 분야 (0) | 2021.12.28 |