클라우드(Cloud)
- 과거에는 인터넷 환경에서 서비스를 제공하기위해 서비스 제공자가 서비스 호스팅에 필요한 모든 것을 직접 구축해야했다. 하지만 이러한 방식은 자원과 인력 비용이 크고 운영 상황의 변화에 능동적으로 대응하기 어려웠다. 그래서 등장한 것이 IDC(Internet Data Center)이고 서버 운영에 필요한 공간, 네트워크, 유지보수 등의 서비스를 제공한다. 하지만 이 또한 일정기간 계약을 통해 임대하는 방식으로 유연성이 떨어졌기 때문에 필요한 때 필요한 만큼만 효율적으로 사용하고 비용을 지불하는 클라우드 컴퓨팅, 클라우드 서비스가 등장했다. 대표적으로 아마존의 AWS가 있고 아마존은 클라우드 서비스를 이렇게 정의했다.
클라우드 컴퓨팅의 특징
- 속도, 주문형 셀프 서비스 : 제공자와 커뮤니케이션 없이 원하는 서비스 이용가능
- 접근성 : 인터넷을 통해 어디서도 접근가능
- 확장성 : 이용량 증가에 유연함
- 생산성 : 시간, 비용 절감
- 보안, 안전성 : 공급자가 전체적으로 안전, 보안성에 대비
- 측정가능성 : 분/초 단위로 사용자가 사용한 만큼만 계량해 과금
클라우드 컴퓨팅 운용 모델
- Public : 인터넷, 개방적 환경에서 접근가능. AWS, GCP, Azure 등
- Private : 폐쇄적. 보안이 좋고 커스터마이징이 가능하다.
- Hybrid : 퍼블릭의 경제성과 프라이빗의 보안성을 모두 고려. 고객의 핵심 시스템은 프라이빗 그외는 퍼블릭을 활용하는 형태
클라우드 서비스 제공 모델
- On-Premises : 처음부터 끝까지 모두 구축 관리
- IaaS : 인프라적인 측면만 클라우드 서비스가 제공
- Paas : 인프라, 플랫폼적인 것까지 클라우드 서비스가 제공
- SaaS : 클라우드 서비스가 모든 것을 제공하는 형태, 사용자가 선별적으로 활용하기가 유연하지 못하다.
AWS를 활용한 인공지능 배포
1. Amazon EC2 컴퓨팅 위에서 API를 만드는 것이 목표
2. 클라이언트가 http 프로토콜을 통해 요청했을 때 학습된 모델로 부터 예측을하는 API를 만든다.
3. 모델은 학습을 통해 storage에 저장하거나 불러와서 다시 클라이언트에게 최종적으로 응답한다.
- API : application programming interface의 약자로 기계와 기계, sw와 sw 간의 커뮤니케이션을 위한 인터페이스
- RESTful API : REST 아키텍처를 따르는 API로 HTTP URI를 통해 자원을 명시하고 HTTP Method를 통해 필요한 연산을 요청하고 반환하는 API를 지칭한다. 일반적으로 데이터 값을 담아 요청하고 모델이 추론한 결과에 대한 return을 json형태로 보통 반환하도록 설계한다.
일반적인 머신러닝 프로세스
Model Serving
- 모델 전처리/학습/평가 -> 배포/저장 -> 불러오기/추론하기위한 handler 생성/API를 통해 배포
Serialization & De-serialization
Skeleton of handler to serve model
- 모델을 불러와서 사람이 이해할 수 있는 형태로 후처리하는 작업
Model Serving을 위한 다양한 Framework
감성분석 API 개발방향
API는 요청/응답을 위해 사전에 정의한 약속으로 아래와 같이 정하였다.
- 모두 json 형태로 전달함