目录

安装Docker for Windows

安装 tensorflow-serving-api

tensorflow serving on docker

测试tf server

方法3:grpc


安装Docker for Windows

  1. 前提:Docker for Windows需要带有Hyper-V的64位Windows 10 Pro,如果您的系统不符合运行Docker for Windows的要求,则可以安装 Docker Toolbox,它使用Oracle Virtual Box而不是Hyper-V。【注:我的是win10专业版1709,Docker现在可以使用Hyper-V技术在Windows上运行Linux容器(LCOW)。】
    点击查看详情页
  2. 打开Hyper-V服务:手动配置还是挺麻烦,可以通过Docker for Windows安装程序来启用Hyper-V,然后计算机会自动重启
  3. 等待docker小鲸鱼图标停止“喷水”——docker is starting或者docker is switching,成功后会是这样:
  4. 启动docker:建议使用powershell启动;
    • win+R,输入powershell
    • 运行一下命令验证安装:docker –version、docker-compose –version、docker-machine –version、docker version
    • 关闭自动更新与开机自启:小图标右键:settings
    • 查看更详细的初步教程
    • Sign in and get started | Docker Documentation

安装 tensorflow-serving-api

pip install -U grpcio
pip install -U grpcio-tools

pip install -U protobuf

tensorflow-serving要和TensorFlow版本配合使用,否则后期调用会有一些问题

pip install tensorflow-serving-api==2.9

原文链接:https://blog.csdn.net/weixin_48185819/article/details/110164923

tensorflow serving on docker

docker pull tensorflow/serving:2.10.0

Tensor-serving安装
将模型转化好之后,开始Tensor-serving的安装,这里推荐docker的方式安装,方便快捷。直接通过一下命令拉去即可:

如果要使用tensor-serving样例就需要去github上去拉取,地址如下:

https://github.com/tensorflow/serving

然后,Tensor-serving支持两种方式进行部署:

gRPC
REST FULL
以上分别对应的端口为8500和8501,接下来就使用docker命令进行模型部署,先展示REST FULL的方式启动:

docker run -p 8501:8501 --mount type=bind,source=D:\jupyter_space\tensorserving\nerCheck,target=/models/nerCheck -e MODEL_NAME=nerCheck -t tensorflow/serving &
1
以上说明,-p为绑定的端口,–mount为挂载对应到具体win10路径下对应的模型路径,source为对应pb文件的路径,target为映射到docker容器里面的路径,-e 为模型的名称对应的文件夹名称,&为后台启动模式。

启动成功之后如下图所示:

然后用postman进行接口测试如下:

可以看到已经返回结果了,下面再采用gRPC的模式进行部署,命令只需要改为8500即可。

docker run -p 8500:8500 --mount type=bind,source=D:\jupyter_space\tensorserving\nerCheck,target=/models/nerCheck -e MODEL_NAME=nerCheck -t tensorflow/serving &
1
启动成功界面如下:

测试请求,需要安装和导入依赖如下:

import grpc
from tensorflow_serving.apis import prediction_service_pb2_grpc, predict_pb2

然后定义请求方法:

def tfserving_grpc(charinputs, seginputs):server = '192.168.0.166:8500'channel = grpc.insecure_channel(server)stub = prediction_service_pb2_grpc.PredictionServiceStub(channel)request = predict_pb2.PredictRequest()request.model_spec.name = 'nerCheck'# request.model_spec.version.value = 1000001request.model_spec.signature_name = 'serving_default'# 构造输入request.inputs["charinputs"].CopyFrom(tf.contrib.util.make_tensor_proto(charinputs))request.inputs["seginputs"].CopyFrom(tf.contrib.util.make_tensor_proto(seginputs))request.inputs["dropout"].CopyFrom(tf.contrib.util.make_tensor_proto(1.0))response = stub.Predict(request, 300)# 获取结果results = {}for key in response.outputs:tensor_proto = response.outputs[key]results[key] = tf.contrib.util.make_ndarray(tensor_proto)# 输出结果logits = results["logits"]transitions = results["transitions"]return logits, transitions

以上参照代码进行对应自己本地IP,输入和输出的修改即可,测试结果如下:

可以看到已经返回了,logits和trans只不过后续你自己根据返回的结果进一步写自己的预测代码即可。

以上即为win10+docker+tensorserving的模型两种方式的部署,本人做过测试,传统实例化加载模型的方式进行预测和利用tensorserving部署进行预测时间分别为:2.31s和0.05s,所以极大的提高了预测速度。
————————————————
版权声明:本文为CSDN博主「TheBugTao」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u013206079/article/details/110766412

tf加载pb模型:

这个能加载:

    output_graph_path="./1"new_model = tf.keras.models.load_model(output_graph_path)new_model.predict(x_test)

这个加载报错:

    output_graph_path="./1/saved_model.pb"new_model = tf.keras.models.load_model(output_graph_path)new_model.predict(x_test)

D:\Users\Administrator\miniconda3\envs\pynew\python.exe F:/project/shida/skipnet_cls/models/onnx_tf_demo.py 
Traceback (most recent call last):
  File "F:/project/shida/skipnet_cls/models/onnx_tf_demo.py", line 22, in <module>
    new_model = tf.keras.models.load_model(output_graph_path)
  File "D:\Users\Administrator\miniconda3\envs\pynew\lib\site-packages\keras\utils\traceback_utils.py", line 67, in error_handler
    raise e.with_traceback(filtered_tb) from None
  File "D:\Users\Administrator\miniconda3\envs\pynew\lib\site-packages\h5py\_hl\files.py", line 533, in __init__
    fid = make_fid(name, mode, userblock_size, fapl, fcpl, swmr=swmr)
  File "D:\Users\Administrator\miniconda3\envs\pynew\lib\site-packages\h5py\_hl\files.py", line 226, in make_fid
    fid = h5f.open(name, flags, fapl=fapl)
  File "h5py\_objects.pyx", line 54, in h5py._objects.with_phil.wrapper
  File "h5py\_objects.pyx", line 55, in h5py._objects.with_phil.wrapper
  File "h5py\h5f.pyx", line 106, in h5py.h5f.open
OSError: Unable to open file (file signature not found)

对tf-serving部署好奇,工作中又没有用到,故本人尝试在自己的笔记本电脑上安装docker进行实验。过程中不断踩坑,总结如下,心得是尝试新的东西要多看几篇博客嗯。

电脑版本说明
本人电脑原是Win10家庭中文版(我的电脑右键属性可以查看系统版本),按照网上一些参考文章安装了Typer V,修改注册表等操作,强行安装了docker,发现装好之后还是有问题,多次尝试未解决,升级为Win10专业版之后问题迎刃而解,关于两个版本的区别可自行百度。个人建议将Win10家庭版本直接升级为Win10专业版,升级方法非常简单,在“设置-更新和安全-激活”中更改产品密钥即可,点此参考。
以下操作是在Win10专业版中进行,之所以起这个标题是为了让更多Win10家庭版的人有个参考,不至于像我一样踩好多坑。

docker安装

不能识别docker-machine命令
我当时安装发现运行 docker-machine --version提示没有这个docker-machine命令。按照官网安装docker-machine,但是仍旧没有解决,故决定自己下载放在Docker所在路径下。
在官网 docker-machine下载相应版本的exe文件,然后将其放在目录下,我的目录是C:\Program Files\Docker\Docker\resources\bin,供参考,然后就可以用docker-machine命令了。
这个目录是如何找到的呢,右键我的电脑-属性-高级系统设置-高级-环境变量,选中path点击编辑,可以看到当前的环境变量,看到Docker所在的目录。

当系统运行一个命令没有完整的路径时,在当前目录下若找不到命令,系统会去环境变量路径搜索,像是Anaconda中离线下载的第三方库也可以放在相应的路径下。

安装tf-serving和运行样例
安装tf-serving
如果没有Git,先安装,在Power Shell中直接运行如下代码下载安装(安装路径可修改):

# 下载镜像和库
mkdir F:/tmp/tfserving
docker pull tensorflow/serving
git clone https://github.com/tensorflow/serving

若网速过慢可能会下载失败或是等很久,可在docker设置中添加国内镜像,如下图中的"registry-mirrors",这里我添加的是注册阿里云得到的专属镜像(注册之后马上就收到电话问候了),有需要可用我的:“https://mylo00gg.mirror.aliyuncs.com”

运行样例
安装tf-serving之后可在目录“F:\tmp\tfserving\serving\tensorflow_serving\servables\tensorflow\testdata”看到很多模型案例,运行其中的一个进行测试,在shell中运行

cd F:/tmp/tfserving
# 设置路径名
Set-Variable -Name "TESTDATA" -Value "$(pwd)/serving/tensorflow_serving/servables/tensorflow/testdata"
docker run -t --rm -p 8503:8501 -v "$TESTDATA/saved_model_half_plus_two_cpu:/models/half_plus_two" -e MODEL_NAME=half_plus_two tensorflow/serving

如下图则表示运行成功:

测试tf server

方法1 新建一个test_tf.py文件放置如下代码:

import json
import requestsurl = 'http://localhost:8503/v1/models/half_plus_two:predict'
data = {"instances": [1.0, 2.0, 5.0]}
r =requests.post(url,json.dumps(data))
print(r)
print(r.text)
print(r.content)

方法2.

http://192.168.3.4:8501/v1/models/abnormal_img/metadata

方法3:grpc

import cv2
import numpy as np
from grpc.beta import implementationsimport tensorflow as tfdef grpc():from tensorflow_serving.apis import predict_pb2, prediction_service_pb2_grpcchannel = implementations.insecure_channel('localhost', 8501)stub = prediction_service_pb2_grpc.PredictionServiceStub(channel._channel)# 模型签名request = predict_pb2.PredictRequest()request.model_spec.name = 'abnormal_img'# request.model_spec.version = 'latest'request.model_spec.signature_name = ''# 构造入参img= cv2.imread("caoyuan.jpeg")img=cv2.resize(img,(128,128))img=img.astype(np.float32)x_data=np.expand_dims(img.transpose(2,0,1),0)drop_out = 1sequence_length = [3*288*288]request.inputs['input'].CopyFrom(tf.make_tensor_proto(x_data, dtype=tf.float32))request.inputs['sequence_length'].CopyFrom(tf.make_tensor_proto(sequence_length, dtype=tf.int32))# request.inputs['drop_out'].CopyFrom(tf.make_tensor_proto(drop_out, dtype=tf.float32))# 返回CRF结果,输出发射概率矩阵和状态转移概率矩阵result = stub.Predict(request, 10.0) # 10 secs timeoutprint(result)if __name__ == '__main__':# grpc()import jsonimport requestsurl = 'http://192.168.3.4:8501/v1/models/abnormal_img:predict'img = cv2.imread("caoyuan.jpeg")img = cv2.resize(img, (128, 128))img = img.astype(np.float32)x_data = np.expand_dims(img.transpose(2, 0, 1), 0)data = {"instances": x_data.tolist()}r = requests.post(url, json.dumps(data))print(r)print(r.text)print(r.content)

另开一个shell运行该文件则可以得到输出:

要测试自己的模型只需要将案例中的模型文件和输入进行替换即可,至此,在自己电脑上体验用docker部署tf-serving模型完成。

更多有关docker的安装和练习可参考如下博客:
Win10中docker的安装与使用
————————————————
版权声明:本文为CSDN博主「Loysun」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Loysun/article/details/108850375

Win10 基于Docker使用tensorflow serving部署模型相关推荐

  1. Win10下基于Docker使用tensorflow serving部署模型

    windows就是更坑 安装Docker for Windows 前提:Docker for Windows需要带有Hyper-V的64位Windows 10 Pro,如果您的系统不符合运行Docke ...

  2. 用Docker容器自带的tensorflow serving部署模型对外服务

    相信很多人和我一样,在试图安装tensorflow serving的时候,翻遍了网上的博客和官网文档,安装都是以失败而告终,我也是一样,这个问题折磨了我两个星期之久,都快放弃了.幸运的是在同事的建议下 ...

  3. 用Docker容器自带的tensorflow serving部署模型对外服务(成功率100%)

    前传: 相信很多人和我一样,在试图安装tensorflow serving的时候,翻遍了网上的博客和官网文档,安装都是以失败而告终,我也是一样,这个问题折磨了我两个星期之久,都快放弃了.幸运的是在同事 ...

  4. TensorFlow Serving部署文本分类模型(LSTM+CNN)

    项目来源于:https://github.com/NLPxiaoxu/Easy_Lstm_Cnn 使用LSTM的文本分类项目,非常感谢项目贡献者 一.模型序列化 由于有之前项目的经验,这里模型序列化就 ...

  5. Tensorflow Serving部署tensorflow、keras模型详解

    写在篇前   本篇介绍如何使用Tensorflow Serving组件导出训练好的Tensorflow模型,并使用标准tensorflow model server来部署深度学习模型预测服务.tens ...

  6. 使用tensorflow serving部署keras模型(tensorflow 2.0.0)

    点击上方"AI搞事情"关注我们 内容转载自知乎:https://zhuanlan.zhihu.com/p/96917543 Justin ho 〉 Tensorflow 2.0.0 ...

  7. tensorflow/serving部署keras的h5模型服务

    当我们使用keras训练好模型之后,下一步就是部署服务了,采用flask直接加载keras的h5模型,服务的并发性能会很低.如果为了追求高并发性能,就可以采用Nginx+gunicorn+gevent ...

  8. Centos系统基于Docker安装tensorflow

    要基于Docker安装tensorflow,当然首先要安装Docker了,下面先说安装Docker的步骤 1.  首先卸载电脑上可能存在的老的版本,如果没有安装过可以不执行 $ sudo yum re ...

  9. docker 启动容器的时候没-p 后面怎么加-p_基于Docker搭建基础自动化部署

           阅读本文约需要7分钟  大家好,我是你们的导师,我每天都会在这里给大家分享一些干货内容(当然了,周末也要允许老师休息一下哈).上次老师跟大家分享了下SpringBoot如何实现全链路调用 ...

最新文章

  1. cdata节 赋值变量_JS原生练习题:第二课第5~12节
  2. 编程之美-饮料供货方法整理
  3. CRM_ORGMAN_CHECK_OW
  4. 怎么读取mysql库绘制柱状图_从数据库中取出最近三十天的数据并生成柱状图
  5. 新0-Day漏洞或将给Linux桌面发行版带来浩劫
  6. Maxcompute造数据-方法详解
  7. 安全测试工具-kali_无需整理
  8. MacOS下安装Grafana、InfluxData、telegraf
  9. 股票点买3.0交易系统接口设计思路
  10. 拉丁字母发音表及常用指代意义
  11. vnc远程控制软件配置,vnc远程控制软件怎么配置,教程详解
  12. Storm之——使用monit监控Storm
  13. 入门数据科学必读书单推荐
  14. 人脸识别摄像头开发板和模组选型
  15. Julia Computing获得 2400 万美元融资,前 Snowflake CEO 加入董事会
  16. mac安全性与隐私 不允许_隐私不仅仅是安全
  17. 全面理解Gradle - 定义Task
  18. Imperfect C++读书笔记(二):前置条件、后置条件和不变式
  19. 体育和旅游融合成为今夏显著的旅行趋势
  20. 6.22 Java练习(根据输入的值计算BMI的值,根据标准判断BMI的值并给出相应健康提示。)

热门文章

  1. 常用H5标签-第三部分
  2. 戴尔710服务器硬盘灯,DELL R710服务器,做RAID5,更换一个硬盘后硬盘灯,黄灯和绿灯交替不断亮??急急求助...
  3. 前端面试题汇总及答案十二
  4. 南都周刊 别了 老兵乔布斯
  5. 【转载】犀利哥:无法犀利的人生
  6. 计算机考研公共课考英语几,考研公共课考政治数学英语,专业课还要考几门
  7. vue 视频播放插件vue-video-player自定义样式、自动播放设置、设置一开始全屏播放视频
  8. Cesium量算-贴地形距离
  9. GetContactInfoUtils(一个获取手机联系人名称,电话,头像的工具类)
  10. 如何用C语言汉字编码输出汉字,【C语言学习】C语言汉字编码。。。C语言中汉字的输入...