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를 써서 클라이언트 요청을 처리하는데 쓰지만,
딥러닝 모델의 안정적인 서빙이 중요하기 때문에
실무에선 텐서플로우 같은걸로 전용서버를 통해 제공한다!
(외부통신은 플라스크등을 써서하는게 일반적임)
'2021 프로그래머스 인공지능 데브코스 > AWS' 카테고리의 다른 글
[4주차 - Day2] 실습 STEP2: inference를 위한 model handler 개발 (0) | 2021.05.20 |
---|---|
[4주차 - Day2] 실습 STEP1, STEP2 serialization & De-serialization (0) | 2021.05.20 |
VS Code에서 AWS instance 연결 시 SSH 오류 (0) | 2021.05.19 |
[4주차 - Day2] AWS 실습 - VS Code에서 AWS 연결하기 (0) | 2021.05.19 |
SSH 파일이 없거나 실행할 수 없는 경우 (0) | 2021.05.19 |
댓글