TensorFlow Serving安装配置

TensorFlow Serving 是一个用于机器学习模型 serving 的高性能开源库。它可以将训练好的机器学习模型部署到线上,使用 gRPC 作为接口接受外部调用。更加让人眼前一亮的是,它支持模型热更新与自动模型版本管理。这意味着一旦部署 TensorFlow Serving 后,你再也不需要为线上服务操心,只需要关心你的线下模型训练。

1、安装Bazel 

把下面的文件放到/etc/yum.repos.d/vbatts-bazel-epel-7.repo

[vbatts-bazel]
name=Copr repo for bazel owned by vbatts
baseurl=https://copr-be.cloud.fedoraproject.org/results/vbatts/bazel/epel-7-$basearch/
type=rpm-md
skip_if_unavailable=True
gpgcheck=1
gpgkey=https://copr-be.cloud.fedoraproject.org/results/vbatts/bazel/pubkey.gpg
repo_gpgcheck=0
enabled=1
enabled_metadata=1

执行命令:

yum install bazel
yum install patch

2、安装gRPC 等包

pip install grpcio
pip install patch
pip install tensorflow
pip install tensorflow-serving-api

3、下载TensorFlow serving 源码

git clone --recurse-submodules https://github.com/tensorflow/serving
cd serving
cd tensorflow
./configure
cd ..
#构建
bazel build -c opt tensorflow_serving/...
#测试
bazel test -c opt tensorflow_serving/...

4、测试案例

导出模型

bazel方式

bazel-bin/tensorflow_serving/example/mnist_saved_model /tmp/mnist_model

python方式

        需要先pip安装好tensorflow-serving-api

python tensorflow_serving/example/mnist_saved_model.py /tmp/mnist_model

部署模型

bazel-bin/tensorflow_serving/model_servers/tensorflow_model_server --port=9000 --model_name=mnist --model_base_path=/tmp/mnist_model/

测试模型

        也有两种方式,bazel和python,同样bazel方式用不了

python tensorflow_serving/example/mnist_client.py --num_tests=1000 --server=localhost:9000

5、自定义模型导出代码实现过程

1、通过定义tf.app.flags标记接收命令行传递的参数

2、在main函数中编写模型训练代码和模型导出代码即可

3、在BUILD文件中添加代码的定义,格式如下

4、执行编译和导出命令、部署模型、使用客户端连接服务即可

存在问题

    tensorflow serving 模型发布与代码耦合太紧;官方给出的例子只有mnist和inception两个模型;要把普通的模型发布需要写较多代码,并且文档说明也很欠缺。
附:一个lstm模型代码lstm.py和 将lstm模型导出的代码 lstm_saved_model.py ;以及调用模型服务预测的代码 lstm_client1.py

猜你喜欢

转载自blog.csdn.net/zwahut/article/details/90637916