본문 바로가기

7. ML | DL | NLP

7/20(목) IT K-DT(93일차) / 18.딥러닝 모델 Serving

 

 

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형식의 데이터를 입력

 

 

학습시킨 모델에 대한 출력값이 정상적으로 나오는 것을 확인