머신러닝

본문 바로가기
사이트 내 전체검색


머신러닝
머신러닝

3. Tensorflow 2.0과 flask를 활용한 딥러닝 모델 서빙하기

페이지 정보

작성자 관리자 댓글 0건 조회 1,623회 작성일 20-08-07 23:58

본문

3. Tensorflow 2.0과 flask를 활용한 딥러닝 모델 서빙하기

tensorflow-serving 모듈을 활용할 경우에는 전처리가 불가능하다는 것이 제일 큰 문제점입니다.


mnist 데이터를 학습할 때, 불러온 픽셀 데이터를 0~1사이의 값으로 변환하기 위하여 255로 나눠서 학습하죠.


그래서 서버에 요청하기 전에 255를 나눠주어야만 합니다.


특히, 자연어 처리의 경우에는 텍스트 문장이 들어오면 해당 문장을 형태소 분석 그리고 각 형태소를 id로 변환해주는 것과 같은 여러가지 전처리 과정이 필요합니다.


flask를 활용하여 서빙을 처리할 경우, 이러한 과정을 서버에서 처리하여 인퍼런스하고 반환할 수 있습니다.

 


모델 학습은 동일한 모델을 활용할 것이니 생략하도록 하겠습니다.



그러면 바로 flask 서버 소스코드로 넘어가보도록 하겠습니다.


# vi flask_server.py


import numpy as np

import tensorflow as tf

from flask import Flask, request


load = tf.saved_model.load('mnist/1')

load_inference = load.signatures["serving_default"]


app = Flask(__name__)

@app.route('/inference', methods=['POST'])

def inference():

    data = request.json

    result = load_inference(tf.constant(data['images'], dtype=tf.float32)/255.0)

    return str(np.argmax(result['dense_1'].numpy()))


if __name__ == '__main__':

    app.run(host='0.0.0.0', port=2431, threaded=False)



flask를 활용하여 서빙을 할 경우 위와 같이 구현할 수 있습니다.


위의 소스코드를 실행하기 위해서는 python3 flask_server.py와 같이 실행하시면 됩니다.


# python3 flask_server.py 


위와 같이 서빙을 하실 때, saved_model 포맷이 아닌 체크포인트 포맷을 활용하셔도 무관합니다.

 

flask를 활용한 서빙의 경우에는 Tensorflow가 아닌 pytorch와 같은 라이브러리에도 쉽게 적용할 수 있습니다.



이제 테스트 해보겠습니다.


# vi flask_test.py


import json

import requests

import numpy as np

from PIL import Image


image = Image.open('test_image.jpg')

pixels = np.array(image)


headers = {'Content-Type':'application/json'}

address = "http://127.0.0.1:2431/inference"

data = {'images':pixels.tolist()}


result = requests.post(address, data=json.dumps(data), headers=headers)


print(str(result.content, encoding='utf-8'))


python3 flask_test.py 로 실행하시면 바로 테스트 되는 것을 확인할 수 있습니다. 



# python3 flask_test.py

7


댓글목록

등록된 댓글이 없습니다.


개인정보취급방침 서비스이용약관 모바일 버전으로 보기 상단으로

TEL. 063-469-4551 FAX. 063-469-4560 전북 군산시 대학로 558
군산대학교 컴퓨터정보공학과

Copyright © www.leelab.co.kr. All rights reserved.