使用tensorflow-serving部署tensorflow模型

使用docker部署模型的好处在于,避免了与繁琐的环境配置打交道。不需要安装Python,更不需要安装numpy、tensorflow各种包,直接一个docker就包含了全部。docker的方式是如今部署项目的第一选择。

一、docker用法初探

1、安装

docker安装需要两个命令:

sudo apt-get install docker
sudo apt-get install docker.io

好的学习资料不必远求
docker --help
docker run --help

2、基础命令

docker ps 查看当前正在运行的实例
docker images查看现有的镜像
docker kill xxxx 杀死正在运行的实例
docker pull xxxx 从远程docker仓库拉下来别人已经配置好的镜像

3、避免每次都sudo

docker命令默认只能root权限使用,这样实在有些繁琐。docker安装完成之后,docker组已经存在了,但是当前用户不在docker组里面,所以只需要把当前用户添加到docker组即可。
groups 查看当前用户所在的那些组
groupadd docker 添加组
sudo usermod -aG docker $USER 把当前用户添加到docker组,还有另外一种方法:sudo gpasswd -a ${USER} docker
newgrp - docker 刷新docker组
sudo service docker restart 重启服务

4、docker映射

docker就是一个镜像,我们需要做的就是把docker和外部世界建立联系。最紧密的联系有如下三种:

  • 网络映射:IP和端口号
  • 磁盘映射
    使用docker -v 宿主机目录:docker目录
    一律采用绝对路径,不要投机取巧使用相对路径,这样可以给自己减少许多麻烦,大智若愚正是此意。
  • 环境变量
    使用docker -e one=two,three=four 这样的命令

二、快速运行tensorflow-serving

安装docker和docker.io两个包。
sudo docker pull tensorflow/serving 把serving的镜像拉下来
git clone https://github.com/tensorflow/serving 复制一份现有的模型,当然也可以使用自己的模型,这个仓库是tensorflow serving的整个源码库,里面给出了一些demo,我们只需要demo那一部分

使用docker命令启动服务

TESTDATA="$(pwd)/serving/tensorflow_serving/servables/tensorflow/testdata"
docker run -t --rm -p 8501:8501    -v "$TESTDATA/saved_model_half_plus_two_cpu:/models/half_plus_two"    -e MODEL_NAME=half_plus_two    tensorflow/serving &

docker -e设置环境变量
docker -p设置端口映射
docker -v设置磁盘映射
建立映射时,都是形如“宿主机:docker容器”这种格式。

最后万事俱备,只欠东风了。

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

# Returns => { "predictions": [2.5, 3.0, 4.5] }

容器启动之后,使用docker ps查看有哪些实例,使用docker kill 实例ID 杀死实例,使用docker inspect 实例ID查看实例详情。

建立磁盘映射除了使用-v参数,也可以使用mount参数。

docker run -p 8501:8501 --mount type=bind,\  source=/tmp/tfserving/serving/tensorflow_serving/servables/tensorflow/testdata/saved_model_half_plus_two_cpu,  target=/models/half_plus_two   -e MODEL_NAME=half_plus_two -t tensorflow/serving &

三、tensorflow-serving的默认配置

我们需要了解tensorflow/serving这个镜像的默认配置,镜像的默认配置就像电路板的引脚一样,是固定的。

serving镜像提供了两种调用方式:gRPC和HTTP请求。gRPC默认端口是8500,HTTP请求的默认端口是8501,serving镜像中的程序会自动加载镜像内/models下的模型,通过MODEL_NAME指定/models下的哪个模型。

参考资料

https://www.tensorflow.org/serving/api_rest

原文地址:https://www.cnblogs.com/weiyinfu/p/9928363.html

时间: 2024-08-11 14:37:35

使用tensorflow-serving部署tensorflow模型的相关文章

Tensorflow r1.12及tensorflow serving r1.12 GPU版本编译遇到的问题

1.git clone tensorflow serving 及tensorflow代码 2. ERROR: /root/.cache/bazel/_bazel_root/f71d782da17fd83c84ed6253a342a306/external/local_config_cuda/crosstool/BUILD:4:1: Traceback (most recent call last): File "/root/.cache/bazel/_bazel_root/f71d782da17

移动端目标识别(3)——使用TensorFlow Lite将tensorflow模型部署到移动端(ssd)之Running on mobile with TensorFlow Lite (写的很乱,回头更新一个简洁的版本)

承接移动端目标识别(2) 使用TensorFlow Lite在移动设备上运行         在本节中,我们将向您展示如何使用TensorFlow Lite获得更小的模型,并允许您利用针对移动设备优化的操作. TensorFlow Lite是TensorFlow针对移动和嵌入式设备的轻量级解决方案.它支持端上的机器学习推理,具有低延迟和小二进制模型大小. TensorFlow Lite使用了许多技术,例如允许更小和更快(定点数学)模型的量化内核. 对于本节,您需要从源代码构建TensorFlow

Tensorflow serving的编译

Tensorflow serving提供了部署tensorflow生成的模型给线上服务的方法,包括模型的export,load等等. 安装参考这个 https://github.com/tensorflow/serving/blob/master/tensorflow_serving/g3doc/setup.md ? ? 但是由于被qiang的问题 (googlesource无法访问) https://github.com/tensorflow/serving/issues/6 需要修改一下 W

tensorflow serving 之minist_saved_model.py解读

最近在学习tensorflow serving,但是就这样平淡看代码可能觉得不能真正思考,就想着写个文章看看,自己写给自己的,就像自己对着镜子演讲一样,写个文章也像自己给自己讲课,这样思考的比较深,学到的也比较多,有错欢迎揪出, minist_saved_model.py 是tensorflow的第一个例子,里面有很多serving的知识,还不了解,现在看.下面是它的入口函数,然后直接跳转到main if __name__ == '__main__': tf.app.run() 在main函数里

tensorflow serving 中 No module named tensorflow_serving.apis,找不到predict_pb2问题

最近在学习tensorflow serving,但是运行官网例子,不使用bazel时,发现运行mnist_client.py的时候出错, 在api文件中也没找到predict_pb2,因此,后面在网上看到,它在这里 "bazel-bin/tensorflow_serving/example/mnist_client.runfiles/tf_serving/tensorflow_serving/apis" 好像这是bazel编译生成的(网上观点,出处找不到啦),好吧,又回到bazel了.

部署tensorflow后导入出现如下错误解决办法

部署环境: 操作系统:CentOS release 6.5 (Final) Python版本: Python 2.7.10 (default, Dec 22 2016, 14:45:25) [GCC 4.8.2] on linux2 [[email protected] ~]# python Python 2.7.10 (default, Dec 22 2016, 14:45:25) [GCC 4.8.2] on linux2 Type "help", "copyright&

tensorflow serving目录解读

tf_serving-----WORKSPACE | -----tensorflow-serving/----BUILD |                      | |                      -----workspace.bzl |                      | |                      -----example/-------BUILD |                                  | |          

TensorFlow Saver 保存最佳模型 tf.train.Saver Save Best Model

TensorFlow Saver 保存最佳模型 tf.train.Saver Save Best Model Checkmate is designed to be a simple drop-in solution for a very common Tensorflow use-case: keeping track of the best model checkpoints during training. The BestCheckpointSaver is a wrapper arou

Win10 子系统Linnux部署tensorflow

原因: 最近在win10上部署TensorFlow和Pytorch的环境,用于复现别人的论文,原有的环境不能用了,重新部署,但是一直报一些莫名奇妙错,使用虚拟机的话,电脑又带不动,所以想到了Windows10的子系统,经测试使用效果与linux一样,下面来介绍一下吧: 1.到微软应用商店下载 ubuntu18.04lts(可以选择自己喜欢的发行版): 2.下载完完成后,win10开始菜单会由 Ubuntu18.04LTS的图标,因为没有开启linux子系统还是不能用的. 3.Win10 开启li