-
4주차 - Day 2. 클라우드를 활용한 머신러닝 모델 Serving API개발교육/프로그래머스 인공지능 데브코스 2021. 5. 13. 13:27728x90
1. AWS를 활용한 인공지능 모델 배포1 - 클라우드 환경에서의 인공지능 모델 서빙 API 개발
1.클라우드 기초
과거 : 인터넷 환경에서 서비스를 제공하기 위해 서비스 제공자는 서비스 호스팅에 필요한 모든 것(데이터 센터, 서버, 보안, OS 등)을 직접 구축
->자원, 인력 비용이 크고 변화에 능동적으로 대응하기 어려움
->IDC(Internet Data Center)등장, 하지만 IDC 서버 임대는 계약을 통해 일정기간 임대를 하는 유연성이 떨어지는 구조
->인터넷 사용자 증가+다양한 서비스 제공으로 필요한 때에 필요한 만큼 서버를 증설하기 원하는 On Demand 수요 증가
현재 : 클라우드 컴퓨팅 등장
클라우드 컴퓨팅이란 인터넷 기반 컴퓨팅의 일종으로 언제 어디서나 필요한 만큼 컴퓨팅 자원을 필요한 시간만큼 인터넷을 통하여 활용할 수 있는 컴퓨팅 방식
4차 산업혁명 시대에 빅데이터를 위한 자원과 AI 개발을 위한 환경 마련
클라우드 컴퓨팅 특징 : 속도, 접근성, 확장성, 생산성, 보안, 안전성, 측정가능성 등
클라우드 컴퓨팅 운용 모델
1. 퍼블릭 : 서비스 유지를 위한 모든 인프라와 IT 기술을 클라우드에서 사용
2. 프라이빗 : 고객이 자체 데이터 센터에서 직접 클라우드 서비스를 구축하는 형태
3. 하이브리드 : 고객의 핵심 시스템은 내부에 두면서도 외부의 클라우드를 활용하는 형태, 퍼블릭의 경제성+프라이빗의 보안성
클라우드 서비스 제공 모델
On-Premises : A-Z까지 다 내가 관리, 구축
IaaS : 인프라 부분만 클라우드에서 사용, 나머지는 직접 관리
Paas : +플랫폼 부분도 클라우드에서 사용, 나머지는 직접 관리
SaaS : 모든 부분을 제공받음 ex)인터넷만 제공되면 MS Office 사용가능
클라우드 서비스 제공 사업자 : AWS, GCP, Azure, NCP 등
2. AWS를 활용한 인공지능 모델 배포2 - 실습 : AWS & 실습 환경 세팅
오늘은 뭘해도 안될날인듯 환경세팅만 6시간이상하고 글 다 써놨는데 다 날아갔다ㅎ...
환경세팅 시 기억해둘것
1. aws에서 ec2로 들어가서 ami검색하기 window말고 ubuntu로 깔것
2. aws에서 상태검사1/2 인스턴스 연결성 어쩌구하면 재부팅이나 중지/시작 할것 종료XXXXX종료하면 인스턴스가 삭제된다 그래서 다시 만들었음ㅎ..
3. putty에서 들어갈 때는 ubuntu@탄력적 id 로 들어갈 것
4. vscode는 config수정시 HostName에 인스턴스/ssh연결 예제에 있는 주소들고올것
3. AWS를 활용한 인공지능 모델 배포3 -
글이 날아가서 멘탈이 두번 터진 관계로 나중에 작성할 것ㅎ..
4. AWS를 활용한 인공지능 모델 배포4
아래 코드는 실행할때마다 입력 후 실행해줄것
conda activate pytorch_p36 python import torch torch.__version__ exit()
#De-serialization import joblib model = joblib.load('model/ml_model.pkl') #모델 불러오기 vectorizer=joblib.load('model/ml_vectorizer.pkl') #vectorizer 불러오기 #vectorizer? #지금 학습하려는 모델은 nlp 한글은 수치형으로 표현하기 위한 방법이 필요 #단어의 음절단위로 쪼갠 후 문장내에서 음절이 몇 번 반복, 출현했는지 카운팅해서 벡터형태로 표현해주는 전처리 #text에 영화 리뷰가 들어오면 이 영화가 재미있는지 아닌지 예측하는 모델 text="재미있는 영화입니다." model_input=vectorizer.transform(text) #모델이 학습할 수 있는 형태로 전처리 model_output=model.predict_proba(model_input) #모델 학습 #predict_proba : 예측을 확률로 나타냄 dir(model)을 하면 다른 함수들도 볼 수 있음 model_output #>>>array([[a,b]]) a : 0에 속할 확률 b : 1에 속할 확률 #label을 통해서 사람이 이해할 수 있는 형태로 후처리 #argmax()를 통해 더 큰 값이 있는 인덱스를 뽑고 인덱스 자체가 label이 됨 model_output=model_output.argmax(axis=1) model_output #>>>array([1]) #후처리해주는 dictionary id2label={0:'negative',1:'positive'} print(f'sentiment : {id2label[model_output[0]]}') #>>>sentiment : positive
모델을 학습하고 저장했던 방식 그대로 불러와야하고 학습된 모델 전처리방식, 후처리방식 그대로 활용
5. AWS를 활용한 인공지능 모델 배포 5 - 실습 : Inference를 위한 model handler 개발
모델을 가지고 입력된 데이터에 대해서 예측을 수행하는 handler를 실습
Serving Model - Define inference : 전처리를 어떻게 하고 최종적으로 어떤 형태로 저장할건지
#skeleton of model handler to serve model의 기본 구조 #BaseHandler에서 상속받을 건 상속 받고 class ModelHandler(BaseHandler): #초기화하면서 필요한 것들 초기화 def __init__(self){: pass #데이터 처리, 모델, configuration 등 초기화 def initialize(self,**kwargs){: pass #입력된 값에 대해서 전처리수행 def preprocess(self,data){: pass #모델에 대해서 추론 def inference(self,data){: pass #후처리 def postprocess(self,data){: pass #요청 정보를 받아 적잘한 응답을 반환 #1.정의된 양식으로 입력? 2.전처리 3.모델추론 4.후처리 5.결과반환 def handle(self,data){: pass
6. AWS를 활용한 인공지능 모델 배포 5 - 실습 : Flask 기반 감성분석 API개발
네이버 영화리뷰 감성분석 개요
나이브베이지안 모델+bert모델 0 : 부정 1: 긍정
#요청 #[POST] /predict json={ "text":["review1","review2",...,], #리뷰 리스트 "do_fast":true or flase #true : 머신러닝모델 / false : 딥러닝모델 }
#반환 #response {"idx0" : { "text":"review1", "label" : "positive" or "negative", "confidnece" : float }, ... }
'교육 > 프로그래머스 인공지능 데브코스' 카테고리의 다른 글
4주차 - Day 4. EDA Project (0) 2021.05.13 4주차 - Day 3. 데이터 씹고 뜯고 맛보고 즐기기 - EDA (0) 2021.05.13 4주차 - Day 1. Web Application with Flask (0) 2021.05.13 3주차 - Day 5. python으로 시각화 프로젝트 (0) 2021.05.13 3주차 - Day 4. python으로 시각화하기 - Matplotlib (0) 2021.05.13