启动TensorFlow Serving

Note

一旦有了一个可以做出惊人预测的漂亮模型,下一步就是要把它投入到生成环境。
这种情况下,把模型包装在Web服务中是最合理的,因为任何人有需要时请求服务就行了,而且实现了解耦。
TensorFlow Serving可以帮助我们把模型包装成Web服务。

准备好模型

from tensorflow import keras

# 假设它是我们训练好的模型
model = keras.models.load_model("my_mnist_model")
import os
import tensorflow as tf

model_version = "0001"
model_name = "serve_mnist"
model_path = os.path.join(model_name, model_version)
# 这样有版本的模型就保存好啦
tf.saved_model.save(model, model_path)
INFO:tensorflow:Assets written to: serve_mnist/0001/assets

Warning

TF Serving使用的模型必须要有版本

安装

有很多方法可以安装TF Serving,最推荐的是使用Docker镜像。

首先需要安装Docker,然后下载官方的TF Serving Docker镜像:

docker pull tensorflow/serving

启动

下载好镜像后,就可以创建一个Docker容器来运行该镜像

docker run -it --rm -p 8500:8500 -p 8501:8501 \
           -v "/Users/facer/PycharmProjects/recommender-system-tools/serve_mnist:/models/serve_mnist" \
           -e MODEL_NAME=serve_mnist \
           tensorflow/serving

TF Serving就此运行,它加载了我们的MNIST模型。

它可以通过REST API(端口8501)提供服务,REST API是使用标准HTTP动词(如GET、POST、PUT和DELETE)并使用JSON输入和输出的API。

它也可以通过gRPC(端口8500)提供服务,gRPC更复杂但效率跟高。

-it 使容器具有交互性(因此可以通过按住Ctrl-C停止它)并显示服务器的输出。

-rm 停止容器时将其删除(不会使中断的容器搞乱机器),但是它不会删除镜像。

-v 使主机目录/Users/facer/…可用于容器的路径/models/serve_mnist。

# 可以看出主机目录就是主机上模型的绝对路径
!pwd
/Users/facer/PycharmProjects/recommender-system-tools

-e 设置容器的MODEL_NAME环境变量。

tensorflow/serving 这是要运行的镜像的名称。