在win10 系统上利用docker 用TF_Serving 部署模型进行远程使用(不用docker模拟Linux环境)

原创,转载需附链接,谢谢。

最近阅读了一本《深度学习之TensorFlow 工程化项目实战》书籍,在阅读到第十三章 部署TensorFlow模型——模型与项目的深度结合。 想在win10系统上,用TF_Serving 部署一个模型并远程调用。由于书中作者只详细介绍了在Linux下部署,简单提及了win10下部署,由于不详细,省略了其中一些步骤,导致win10部署失败。在自己查阅许多文章,试错多次之后,终于摸索出部署方法,秉持着分享的态度,自己也通过QQ给作者提了建议。下面简要记录一下大概步骤,为和我一样想法的朋友提供一个案例。(其中有一些趟过的坑,只能用文字描述一下,错误代码图还原比较麻烦,就不重现了)

首先说一下我的电脑环境。win10系统。Anaconda上部署了一个环境:命名为:tensorflow1_13_1_python3_6 。在win10上安装了docker(提供一下自己收藏的几篇关于docker的文章,有兴趣的可以读一下https://blog.csdn.net/u014767496/article/details/97661754

https://segmentfault.com/a/1190000002882567

https://my.oschina.net/jamesview/blog/2994112)。

我的模型放在E盘下,如下图:

在win10 系统上利用docker 用TF_Serving 部署模型进行远程使用(不用docker模拟Linux环境)_第1张图片

在win10 系统上利用docker 用TF_Serving 部署模型进行远程使用(不用docker模拟Linux环境)_第2张图片

本篇文章目的,尝试在win10下,不通过docker模拟Linux环境,安装TF_Serving部署模型并进行远程使用。

我的部署详细步骤(仅供参考):

一、打开tensorflow1_13_1_python3_6 环境中的Terminal 命令行,输入docker pull tensorflow/serving 目的是下载一个带有TF_Serving的镜像。

下载完成后输入 docker images 查看

二、在命令行中继续输入

docker run -p 8501:8501 --mount type=bind,source=E:\远程调用\log\tfservingmodelv1,target=/models/tfservingmodelv1 -e MODEL_NAME=tfservingmodelv1 -t tensorflow/serving &

参数说明(一篇博客中介绍的https://blog.csdn.net/u011734144/article/details/82107610):

--mount:   表示要进行挂载
source:    指定要运行部署的模型地址, 也就是挂载的源,这个是在宿主机上的模型目录
target:     这个是要挂载的目标位置,也就是挂载到docker容器中的哪个位置,这是docker容器中的目录
-t:         指定的是挂载到哪个容器
-p:         指定主机到docker容器的端口映射
docker run: 启动这个容器并启动模型服务(这里是如何同时启动容器中的模型服务的还不太清楚)
综合解释:
         将source目录中的例子模型,挂载到-t指定的docker容器中的target目录,并启动

这里有两个坑,记录一下:

(1)docker访问模型所在磁盘的权限没有打开在win10 系统上利用docker 用TF_Serving 部署模型进行远程使用(不用docker模拟Linux环境)_第3张图片

在settings设置一下,如下图:

在win10 系统上利用docker 用TF_Serving 部署模型进行远程使用(不用docker模拟Linux环境)_第4张图片

(2)提示没有--mount 不存在。

注意两个箭头的地方不要有空格

如果这一步执行没有问题的话,结果如下图:TF_Serving服务启动成功,事件监听循环中:

在win10 系统上利用docker 用TF_Serving 部署模型进行远程使用(不用docker模拟Linux环境)_第5张图片

三、测试,通过CURL访问服务(这一步上述书籍中详细介绍了,这里摘抄一下)

由于我的系统是windows的,输入的代码如下:

curl -d  "{\"inputs\":[2.0,3.0],\"signature_name\":\"my_signature\"}" -X POST http://localhost:8501/v1/models/tfservingmodelv1:predict

具体参数简要说明一下,具体看书籍:

curl:命令样式

-d:具体的数据内容,它是JSON格式的数据

由于是windows下,所以要对JSON格式的字符做转义\",并且字符串中全部用双引号,勿用单引号

inputs:输入的样本字段,预测的结果将以列的形式显示

signature_name:模型中的签名。如果服务端模型使用的是默认签名,则可以不填,本例中的模型签名是my_signature

-X POST:以POST方式发送请求,后面跟的是URL连接。其中:服务器地址+v1/models/+版本信息

成功运行后结果如下:

在win10 系统上利用docker 用TF_Serving 部署模型进行远程使用(不用docker模拟Linux环境)_第6张图片

你可能感兴趣的:(深度学习)