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

环境: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

一、拉取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的文件结构应该是这样。

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

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

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

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

四、模型调用

另开一个终端,输入

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

输出:

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

发布了437 篇原创文章 · 获赞 590 · 访问量 61万+

猜你喜欢

转载自blog.csdn.net/heiheiya/article/details/103799461