Week3 - 3
Flask 기반 감성분석 API 개발
전반적으로 handler가 어떻게 작동하는지는 이해했으나, 각 코드들이 정확히 어떤 역할을 하는지까지는 이해하지 못해서 아쉬웠다.. 매 주차마다 수업의 난이도가 가파르게 상승하는 느낌이 든다ㅠㅠ 수업을 이해하기 위해서는 갈수록 많은 노력이 필요할 것이라는 생각이 들었고, 그래서 더 노력해야겠다는 생각이 들었다..!!
+) 세션에서 이해의 영역이 아니라는 말씀을 해주셔서.... 마음이 한결 편안했다ㅎㅎ AWS를 만져본 것에 큰 의의를 두자!
🧚 DLModelHandler 개발해보기
import torch
def initialize(self, ):
from transformers import AutoTokenizer, AutoModelForSequenceClassification
self.model_name_or_path = 'sackoh/bert-base-multilingual-cased-nsmc'
self.tokenizer = AutoTokenizer.from_pretrained(self.model_name_or_path)
self.model = AutoModelForSequenceClassification.from_pretrained(self.model_name_or_path)
self.model.to('cpu')
def preprocess(self, text):
model_input = self._clean_text(text)
model_input = self.tokenizer(text, return_tensors='pt', padding=True)
return model_input
def inference(self, model_input):
with torch.no_grad():
model_output = self.model(**model_input)[0].cpu()
model_output = 1.0/ (1.0 + torch.exp(-model_output))
model_output = model_output.numpy().astype('float')
return model_output
postprocess랑 handle은 ML 모델에서 그대로 복사해와도 된다!
--> 원하는 대로 동작하는지 unittest
terminal을 열어서,
conda activate pytorch_p36
python -m unittest -v test_model_handler.py
🧚 Flask로 API 개발 & 배포
app.py 에서,
ml_handler = MLModelHandler()
dl_handler = DLModelHandler()
추가해주기
그리고, predict() 에서
#model inference
if do_fast:
predictions = ml_handler.handle(text)
else:
predictions = dl_handler.handle(text)
추가해주기
🧚 실제 배포하기!
terminal에서 app.py 실행해주기
python app.py
- host: 퍼블릭 IP 주소
- port: 5000
로컬 노트북에서 터미널 실행
cd kdt
curl -d '{"text": ["영화 오랜만에 봤는데 괜찮은 영화였어", "정말 지루했어"], "use_fast": false}' \
-H "Content-Type: application/json" \ -X POST \
http://"퍼블릭 아이피주소":500/predict
python3
import requests
url = "http://"퍼블릭 아이피주소":500/predict"
data = {"text": ["영화 오랜만에 봤는데 정말 재미있었어", "정말 지루했어"], "use_fast": False}'
response = request.post(url, json=data)
print(response.content)
Author And Source
이 문제에 관하여(Week3 - 3), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@lhg991222/Week3-3저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)