TensorFlow Serving 是一个用于机器学习模型 serving 的高性能开源库,可以将训练好的模型直接上线并提供服务。其一个重要特性是:它支持模型热更新与自动模型版本管理,这意味着一旦部署 TensorFlow Serving 后,你再也不需要为线上服务操心,只需要关心你的线下模型训练。 TF Serving采用客户端/服务端模式,其通信方式有两种 gRPC和REST API(注:后者需TensorFlow 1.8及更高版本),下图为TensorFlow Serving的框架图:
安装TensorFlow Serving有三种方法:Docker,二进制,源码编译。本文只介绍其中最简单、最直接的方法:Docker 安装。如想尝试其他方式可以参考 https://www.tensorflow.org/tfx/serving/setup.
可参考:https://www.runoob.com/docker/windows-docker-install.html
如需拉取其他版本可以参考dockers hub tensorflow / serve repo
建立磁盘映射除了使用-v参数,也可以使用mount参数:
docker run -p 8501:8501 --mount type=bind,source=E:/serving/tensorflow_serving/servables/tensorflow/testdata/saved_model_half_plus_two_cpu,target=/models/half_plus_two -e MODEL_NAME=half_plus_two -t tensorflow/serving '&'其中参数解析:
–mount: 表示要进行挂载 source: 指定要运行部署的模型地址, 也就是挂载的源,这个是在宿主机上的servable模型目录(pb格式模型而不是checkpoint模型)==注意:==此地址必须是模型的绝对路径!!! target: 这个是要挂载的目标位置,也就是挂载到docker容器中的哪个位置,这是docker容器中的目录,模型默认挂在/models/目录下,如果改变路径会出现找不到model的错误 -t: 指定的是挂载到哪个容器 -d: 后台运行 -p: 指定主机到docker容器的端口映射 -e: 环境变量 -v: docker数据卷 –name: 指定容器name,后续使用比用container_id更方便
运行效果:
重新打开一个测试窗口,这里使用curl命令:
curl -XPOST http://localhost:8501/v1/models/half_plus_two:predict -d "{\"instances\":[1.0, 2.0, 5.0]}"(注:这里需要注意,源码中half_plus_two的模型版本是00000123,但在访问时也必须输入v1而不是v000000123。) 运行效果:
官方介绍 TensorFlow Serving使用指南 TensorFlow Serving入门 tensorflow serving docker tensorflow serving + docker部署模型 使用tensorflow-serving部署tensorflow模型
