본문 바로가기
2021 프로그래머스 인공지능 데브코스/AWS

[4주차 - Day2] 실습 설명: API 방법을 통해 model 배포하기

by heejuhee 2021. 5. 20.

ML model을 제공하는 API 구조 알아보기

 

목적

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

즉, 1. API Server를 제작 → 2. storage에 train test github등 데이터를 생성

→ 3. 그걸 클라이언트에 보여주는 전체를 구현한다

 

구현해야 할 중요한 부분?

먼저 배포를 해도되는 모델임을 감지하면 Trained model file을 한다.

저장된 모델파일을 불러와서 predict해주는 API를 만드는게 목표!

1. Model serving

: 모델을 제공하는 API 만들기위해 

모델 학습하고 평가가 완료되면 학습된 모델 저장한다.

그 후 모델을 서빙하기 위해,

모델을 불러와서 웹 프레임워크를 통해 저장한 모델을 배포해야한다.

(중요한건 예측 시 앞서 모델을 어떻게 만들었는지가 중요하기 때문에

연속성이 보장되어야한다! (→ 아직 이해 못함..))

2. serialization & de-serialization

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

단, serialization 한 방식으로 de-serialization 해줘야 한다

 

 


API 서버 구현 시 필요한 부분

API (application programming interface)?

: 기계, 기계 SW의 SW간 커뮤니케이션이자

노드와 노드간 데이터 주고받기 위한 인터페이스이다.

* Interface? 모니터 프린터 마우스 키보드와 같이 기대되는 출력을 제공할 수 있는 것

기계끼리 맞춰져 있어야 사전 정의한 입력이 들어왔을때 적절한 출력을 전달할 수 있다

 

 

 

RESTful API

: 레스트 아키텍쳐를 따르는 API

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

http url을 통해 자원을 명시하며 HTTP Method를 통해 연산을 요청하고 반환한다.

(즉 우리 실습에선 데이터 값을 담아 요청, 모델이 추론한 결과에 대한 return을 json형태로 반환하도록 설계)

 

 

 


모델 구현 시 생각해야 하는 부분

Practical process of machine learning?

: 실제 서비스에 기계학습 모델을 적용하려면?

문제 정의 → 데이터 준비 → 모델 학습 및 검증 → 모델 배포 →  모니터링

 

Skelteon of handler to serve model

: 모델을 통해 결과를 받을 수 있는데, 이 결과는 확률과 같은 수치적인 값이다.

(왜냐면 모델은 단순히 freature 엔지니어링해서 freature로 만들어주기 때문 (보통 숫자의 조합))

 

그래서 이러한 결과값을 레이블링 하기위해 (정확하진 않음!)

핸들러를 통해 일련의 과정을 할 수 있도록 한다.

(물론 하드코딩으로 API 코딩할수있지만 핸들러하는게 유지나 관리가 좋다.)

 

Model serving을 위한 다양한 Frameworks

: 우리 실습에선 Flask를 써서 클라이언트 요청을 처리하는데 쓰지만,

딥러닝 모델의 안정적인 서빙이 중요하기 때문에 

실무에선 텐서플로우 같은걸로 전용서버를 통해 제공한다!

(외부통신은 플라스크등을 써서하는게 일반적임)

 

댓글