资源经验分享【Tensorflow】Tensorflow serving模型部署(一):运行官方demo

【Tensorflow】Tensorflow serving模型部署(一):运行官方demo

2020-01-03 | |  103 |   0

原标题:【Tensorflow】Tensorflow serving模型部署(一):运行官方demo

原文来自:CSDN      原文链接:https://blog.csdn.net/heiheiya/article/details/103799461


环境:Ubuntu16.04 LTS

           Docker 18.09.7

           Nvidia-docker2 2.0.3

           Nvidia-container-runtime 2.0.0

           Nvidia driver 390.87

           CUDA 9.0

           CUDNN 7.1

           Tensorflow-serving:1.12.0-gpu


NVIDIA driver的安装请参考链接:【Linux】Ubuntu16.04安装NVIDIA驱动390.87

CUDA和CUDNN的安装请参考链接:【CUDA】linux ubuntu16.04 卸载cuda8.0 安装cuda9.0

Docker的安装请参考链接:【Docker】Ubuntu16.04安装docker

Nvidia-docker2的安装请参考链接:【Docker】Ubuntu16.04安装nvidia-docker2


先查看一下docker的信息。

docker version

03.png

一、拉取tensorflow/serving镜像

这里我使用的tensorflow serving 1.12.0-gpu的版本。

docker pull tensorflow/serving:1.12.0-gpu

二、获取tensorflow serving源码

这里下载源码是因为源码里有可以直接测试的模型。

git clone https://github.com/tensorflow/serving

为了和tensorflow serving镜像的版本保持一致,clone源码之后我将源码也切换到r1.12分支上。

git checkout r1.12

三、运行tensorflow serving容器

这里使用的RESTful API的方式。更多内容请参考RESTful API

docker run --runtime=nvidia --rm -p 8501:8501 
    -v "/home/myworl/serving/tensorflow_serving/servables/tensorflow/testdata/saved_model_half_plus_two_gpu:/models/half_plus_two" 
    -e MODEL_NAME=half_plus_two 
    -t tensorflow/serving:1.12.0-gpu &

另一种写法:

docker run --runtime=nvidia --rm -p 8501:8501 
  --mount type=bind,
   source=/home/myworl/serving/tensorflow_serving/servables/tensorflow/testdata/saved_model_half_plus_two_gpu,
target=/models/half_plus_two 
-e MODEL_NAME=half_plus_two -t tensorflow/serving &

几点说明:

1.  --runtime=nvidia, 修改docker的Runtime为nvidia runtime工作。

2. --rm表示如果实例已经存在,则先remove掉该实例再重新启动新实例。

3. -p,指定主机到docker容器的端口映射。

4. -e,设置环境变量。

5. -t,指定的是挂载到哪个容器。

6. -v,docker数据卷,挂载宿主机的一个目录。

比如这里是将我下载的tensorflow serving的源码目录下的saved_model_half_plus_two_gpu挂载到docker容器的/models/half_plus_two。tensorflow_model_server会自动在这个目录下去加载模型。

7. --mount,也是进行挂载,老版本的docker没有--mount这个命令。

source:指定要运行部署的模型地址,也就是挂载的源,这个是在宿主机上的servable模型目录(pb格式模型而不是checkpoint模型)。

saved_model_half_plus_two_gpu的文件结构应该是这样。

04.png

saved_model_half_plus_two_gpu下有一个文件夹00000123,这个表示模型的版本号。00000123下面有一个pb模型和一个variables文件夹。

target:  这个是要挂载的目标位置,就是挂载到docker容器中的哪个位置,这是docker容器中的目录,模型默认挂在/models/目录下,如果改变路径会出现找不到model的错误。

注意:--mount后面的几个“,”不能有空格。

成功运行模型之后,终端输出如下信息:

05.png

四、模型调用

另开一个终端,输入

curl -d '{"instances": [1.0, 2.0, 5.0]}' -X POST http://localhost:8501/v1/models/half_plus_two:predict

输出:

06.png

说明已经成功调用到模型了。

免责声明:本文来自互联网新闻客户端自媒体,不代表本网的观点和立场。

合作及投稿邮箱:E-mail:editor@tusaishared.com

上一篇:[吐血]opencv_contrib配置成功吐血经验(没准你也是因为这个)

下一篇:牛顿迭代法

用户评价
全部评价

热门资源

  • Python 爬虫(二)...

    所谓爬虫就是模拟客户端发送网络请求,获取网络响...

  • TensorFlow从1到2...

    原文第四篇中,我们介绍了官方的入门案例MNIST,功...

  • TensorFlow从1到2...

    “回归”这个词,既是Regression算法的名称,也代表...

  • TensorFlow2.0(10...

    前面的博客中我们说过,在加载数据和预处理数据时...

  • 机器学习中的熵、...

    熵 (entropy) 这一词最初来源于热力学。1948年,克...