Tensorflow Serving Deploy 프로세스 - penny4860/study-note GitHub Wiki

1. saved_model 파일로 저장

1.1. keras model -> saved_model : Tensorflow 1.x

# 1. load keras model
model = models.load_model(MODEL_PATH, convert=True, backbone_name='resnet50')
# 2. SavedModelBuilder    
builder = saved_model.builder.SavedModelBuilder(EXPORT_PATH)
# 3. Define input/output signature     
signature = predict_signature_def(
	inputs={'images': model.input},
	outputs={
		'boxes': model.outputs[0],
		'scores': model.outputs[1],
		'labels': model.outputs[2]
	}
)
# 4. Save     
sess = K.get_session()
builder.add_meta_graph_and_variables(sess=sess,
										tags=[saved_model.tag_constants.SERVING],
										signature_def_map={'predict': signature})
# client 에서 요청할 때 signature name을 "predict"로 할 것.
builder.save()

2. Deploy

2.1. nvidia-docker 설치 (GPU 사용시)

https://github.com/NVIDIA/nvidia-docker#centos-7-docker-ce-rhel-7475-docker-ce-amazon-linux-12

sudo yum-config-manager --save --setopt=nvidia-docker.skip_if_unavailable=true

2.2 Docker 실행 : serving image를 deploy

Docker version 18.09.6

docker run --name tf_mm -p 9500:8500 -p 9501:8501 -v /Users/jeongjoonsup/git/saved_models:/models/mm -e MODEL_NAME=mm -e NVIDIA_VISIBLE_DEVICES=0 -t tensorflow/serving:1.12.0-gpu

Docker version 19.03.1

  • docker run --name tf_mm -p 8500:8500 -p 8501:8501 -v /Users/jeongjoonsup/git/saved_models:/models/mm -e MODEL_NAME=mm --gpus '"device=1,2"' -t tensorflow/serving:1.12.0-gpu
    • -e NVIDIA_VISIBLE_DEVICES=0 대신 --gpus '"device=1,2"' 를 써야 한다.

Trouble Shooting

  • GPUML8에서 tensorflow-gpu 를 서빙할때 에러가 난다.