如何搭建tensorflow serving

这两天学习如何搭建tf.serving,就此总结一下.

1 安装、学习docker
tf.serving的运行环境比较繁琐,在这个环境配好了,另一个不行。docker解决了这个问题。官方文档中也推荐使用docker

2 参考tf.serving github README

# Download the TensorFlow Serving Docker image and repo
docker pull tensorflow/serving  ##从docker官方下载"tensorflow/serving"镜像

git clone https://github.com/tensorflow/serving ##这个clone整个工程的过程,也copy了一些example
# Location of demo models
TESTDATA="$(pwd)/serving/tensorflow_serving/servables/tensorflow/testdata"

#下面这个程序是基于“tensorflow/serving”镜像,开启一个docker容器
# $TESTDATA/saved_model_half_plus_two_cpu, 是本地模型路径
#/models/half_plus_two 模型在容器中挂载的地址
# Start TensorFlow Serving container and open the REST API port
docker run -t --rm -p 8501:8501 \
    -v "$TESTDATA/saved_model_half_plus_two_cpu:/models/half_plus_two" \
    -e MODEL_NAME=half_plus_two \
    tensorflow/serving &

# 服务建立好了,就可以请求了。
# "instances" 是默认的signature, 而输入默认是多组 [input1, input2, ...], 在这个例子中input是个数字,大部分场景input是个Tensor 
# Query the model using the predict API
curl -d '{"instances": [1.0, 2.0, 5.0]}' \
    -X POST http://localhost:8501/v1/models/half_plus_two:predict

# Returns => { "predictions": [2.5, 3.0, 4.5] }

3 再看一下一个官方的example(mnist)
这个example可以顺着跑一下来。我实验唯一不同的是,使用docker run tensorflow/serving, 而不是下载相关环境(太难配)。

  • 如何mount
    所以这里的问题是如何把本机模型mount到docker容器中,下面给一个例子
model_source="${your_local_path}"
docker run  -p 8501:8501 --mount src="${model_source}",target=/models/fasttext,type=bind -e MODEL_NAME=fasttext -t  tensorflow/serving &
  • 模型保存方式直接用:
    tf.saved_model.simple_save
    注意这个例子没有很复杂的signature配置,请求使用默认:
    curl -d ‘{“signature_name”: “serving_default”, “instances”: [[input tensor1], [input tensor2], …}’
    -X POST http://localhost:8501/v1/models/fasttext:predict

4 坑
tf.serving 每次返回不一样,看你是不是有drop out?保存的时候keep prob不是1?

你可能感兴趣的:(机器学习)