product에 모델을 배포

 

*직접 API를 만드는 것 vs Tensorflow Serving API를 사용하는 것

 

*Model Serving

- model serving한다는 것은 inference를 의미

- Tensorflow Serving

- Google Cloud CloudML

- Flask를 사용한 API

 

*Tensorflow Serving

- Python : tensorflow-serving-api 사용

- 다른 언어 : bazel 빌드

- serving 시 python 사용하면 퍼포먼스가 상대적으로 좋지 않음

 

*Google Cloud CloudML

- 장점 : 쉽고, CloudML이 다 해 줌

- 단점 : 비용 발생

 

*Flask를 사용한 API

- 장점 : 빠르게 proto type 만들 때 좋음

- 단점 : 초당 API Request 가 많은 대용량 서비스에는 부적합

 

(1) docker image 다운

docker pull tensorflow/tensorflow:1.13.1-py3-jupyter

docker pull tensorflow/serving:1.13.0

 

(2) tensorflow container를 실행

docker run --name my_tf -it -p 8881-8889:8881-8889 -v C:\notebooks\:/notebooks/ tensorflow/tensorflow:1.13.1-py3-jupyter bash

 

(3) jupyter notebook 실행

cd /notebooks && jupyter notebook --allow-root --ip=0.0.0.0 --port=8881 &

 

(4) web browser 접속

http://localhost:8881/

 

(5) 모델 학습 및 결과 저장하는 소스코드 작성 및 실행

 

(6) tensorflow serving container를 3개 실행 (안정적인 운영을 위해 2개 이상 사용)

docker run --rm --name serving_1 -v 경로 -p 8501:8501 -e MODEL_NAME=xxx -e MODEL_BASE_PATH=/models tensorflow/serving:1.13.0

docker run --rm --name serving_2 -v 경로 -p 8502:8501 -e MODEL_NAME=xxx -e MODEL_BASE_PATH=/models tensorflow/serving:1.13.0

docker run --rm --name serving_3 -v 경로 -p 8503:8501 -e MODEL_NAME=xxx -e MODEL_BASE_PATH=/models tensorflow/serving:1.13.0

 

(7) 호스트 PC 또는 호스트 서버 등에서 API를 호출

- 요청 URL 형식

- POST http://host:port/v1/models/MY_MODEL:predict

- 요청 메시지 형식 (instances 대신 inputs 형식도 가능)

- curl -x POST http://127.0.0.1:8501/v1/models/iris_dnn:predict -d "{""signature_name"":""predict"",""instances"":[{""sepal_length"":[5.0],""sepal_width"":[3.3],""petal_length"":[1,4],""petal_width"":[0.2]}]}"

- curl -x POST http://127.0.0.1:8501/v1/models/iris_dnn:predict -d "{""signature_name"":""predict"",""instances"":[{""sepal_length"":[5.7],""sepal_width"":[2.8],""petal_length"":[4,1],""petal_width"":[1.3]}]}"

- curl -x POST http://127.0.0.1:8501/v1/models/iris_dnn:predict -d "{""signature_name"":""predict"",""instances"":[{""sepal_length"":[5.9],""sepal_width"":[3.0],""petal_length"":[5,1],""petal_width"":[1.8]}]}"

반응형

'스타트업 > AI' 카테고리의 다른 글

[AI] BERT을 이용한 NER 적용 방법 정리  (0) 2020.08.18
[AI] firebase  (0) 2020.08.14
[AI] Faiss  (0) 2020.08.14
[AI] redis  (0) 2020.08.14
[AI] 딥러닝 추천 시스템 in production  (0) 2020.08.13

+ Recent posts