18. 딥러닝 모델 Serving
교육 간 사용할 프로그램
(파이썬은 3.10 버전 이상으로 재설치 필요)
18-1. Pycharm 설치 및 설정
Pycharm 웹사이트: https://www.jetbrains.com/ko-kr/pycharm/download/?section=windows
PyCharm 다운로드: JetBrains가 만든 전문 개발자용 Python IDE
www.jetbrains.com
새로운 프로젝트 생성
왼쪽 상단 햄버거 버튼 > File > New Project 클릭
Pycharm을 사용할 경로 및 Python의 정상적인 설치 확인
맨 하단의 체크박스는 해제하는 것을 추천
새로운 프로젝트 리스트를 우클릭한 후 New > Python File을 클릭
파일 이름 작성
새로운 edit 파일이 만들어진 모습
새로운 패키지 가져오기
우측 상단의 톱니바퀴 버튼 클릭 후 Settings 클릭
현재 본인의 Project가 위치한 메뉴를 클릭하여 Python Interpreter를 클릭
' + ' 버튼 클릭
본인이 필요한 패키지를 입력하여 가져오기 > Install Package 클릭
정상적으로 패키지가 설치됨
Flask를 이용해 서버를 구축하고 Postman으로 모델을 검증해보는 예제
<model.py> 파일
import torch
import torch.nn as nn
import torch.optim as optim
x_train = torch.FloatTensor([[73, 80, 75],
[93, 88, 93],
[89, 91, 90],
[96, 98, 100],
[73, 66, 70]])
y_train = torch.FloatTensor([[152], [185], [180], [196], [142]])
model = nn.Linear(3, 1)
optimizer = optim.SGD(model.parameters(), lr=0.00001)
epochs = 1000
for epoch in range(epochs + 1):
y_pred = model(x_train)
loss = nn.MSELoss()(y_pred, y_train)
optimizer.zero_grad()
loss.backward()
optimizer.step()
if epoch % 100 == 0:
print(f'Epoch {epoch}/{epoch} Loss:{loss:.6f}')
torch.save(model.state_dict(), 'model.pth')
코드를 이용해서 model.pth 파일을 저장
<app.py> 파일
저장한 model.pth 파일을 불러온 후, data를 json으로 return해주는 함수 생성
from flask import Flask, request, jsonify
import torch
import torch.nn as nn
app = Flask(__name__)
model = nn.Linear(3, 1)
model.load_state_dict(torch.load('model.pth'))
model.eval()
@app.route('/predict', methods=['POST'])
def predict():
data = request.json['data']
x_test = torch.FloatTensor(data)
y_pred = model(x_test)
return jsonify(y_pred.tolist())
if __name__ == '__main__':
app.run(debug=True)
app.py 파일을 실행
실행되고 있는 내용을 Postman으로 확인
POST 메서드로 주소는 Localhost, Body에 json형식의 데이터를 입력
학습시킨 모델에 대한 출력값이 정상적으로 나오는 것을 확인