启动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 这是要运行的镜像的名称。