热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

模型部署利用TensorflowServing部署模型

文章目录TensorflowServing实战安装Tensorflowserving准备YOLOX模型部署YOLOX模型测试YOLOX模型多模型多版本部署模型的热部署参考Tenso

文章目录

  • Tensorflow Serving
  • 实战
    • 安装Tensorflow serving
    • 准备YOLOX模型
    • 部署YOLOX模型
    • 测试YOLOX模型
    • 多模型多版本部署
    • 模型的热部署
  • 参考


Tensorflow Serving

使用Tensorflow框架训练好模型后,想把模型部署到生产环境可以使用Tensorflow Serving进行部署。Tensorflow Serving具有以下作用:

  • 兼容Tensorflow训练的模型,提供gRPC和RESTful API服务
  • 便于实现,自带版本管理,支持模型热更新,可同时部署多个版本模型等优点
  • 使用docker进行部署,方便快捷

Docker Hub上的tensorflow/serving repo存在多个版本的的tensorflow serving docker 镜像,除tensorflow版本不同外,存在四种镜像版本号,分别为:

  • :latest:带有编译好的Tensorflow Serving的原始镜像,无法进行任何修改
  • latest-devel:devel指的是development,可开启镜像容器bash修改配置,然后使用docker commit制作新镜像
  • latest-devel-gpu:GPU版本的latest-devel

关于Tensorflow的部署过程如下,摘自:Tensorflow Serving Github

# Download the TensorFlow Serving Docker image and repo
docker pull tensorflow/servinggit clone https://github.com/tensorflow/serving
# Location of demo models
TESTDATA="$(pwd)/serving/tensorflow_serving/servables/tensorflow/testdata"# Start TensorFlow Serving container and open the REST API port
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 &# 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时需要挂载宿主模型目录(一般在XXX/serving//tensorflow_serving/servables/tensorflow/testdata/your_model_path_name)到容器里面(/models/your_model_path_name)。这个时候就会产生疑问,假设需要部署多个模型怎么办?某个模型有多个版本该如何做版本控制?接下来以实战介绍如何玩转Tensorflow serving,该例子以部署YOLOX为例。

实战

该部分以部署YOLOX为例,介绍如何部署YOLOX的多个版本模型以及部署多个不同的YOLOX模型。

安装Tensorflow serving

根据上面的操作步骤,安全并运行tensorflow-serving,然后进行测试
在这里插入图片描述
测试运行成功
在这里插入图片描述

准备YOLOX模型

准备YOLOX的pb模型
模型的路径:
在这里插入图片描述
使用saved_model_cli查看模型的信息:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
标记红框的是模型的输入输出,忽略名字。

部署YOLOX模型

部署YOLOX的Tensorflow Serving。这里遇到一个问题:我执行以下命令

docker run -t --rm -p 8501:8501 \-v /home/***/model/yolox_model:/models/yolox_model" \-e MODEL_NAME=yolox_model\tensorflow/serving &

出现以下错误:

2022-06-20 08:46:28.357370: W tensorflow_serving/sources/storage_path/file_system_storage_path_source.cc:268] No versions of servable yolox_model found under base path /models/yolox_model. Did you forget to name your leaf directory as a number (eg. '/1/')?

在这里插入图片描述
这个提示说你没有声明版本,对比一下tensorflow serving Demo文件的异同,发现yolox的文件下没有版本信息,即001002之类,版本可以自定义。
在这里插入图片描述
最终的文件夹下的结构:
在这里插入图片描述
修改完成后运行:
在这里插入图片描述

访问:http://[your host ip]:8501/v1/models/yolox_model
在这里插入图片描述
访问http://[your host ip]:8501/v1/models/yolox_model/metadata
在这里插入图片描述

测试YOLOX模型

为了方便起见,以下用Python测试Tensorflow serving的Rest Api服务。

调用也比较简单,具体如下。最终结果返回的是boxes,由于yolox不是end2end,所以还需要做进一步的后处理,这里不详细讲述了,具体可以参考我的github代码:tfx_inference
在这里插入图片描述

多模型多版本部署

这一块比较简单,主要是学会配置文件即可。以下是文件结构:
在这里插入图片描述
model.config配置文件内容如下:
在这里插入图片描述

这里要注意一点:config文件中的base_path并不是设定你服务器上的路径,而是容器里面模型的位置。 关于config文件可以参考:serving_config。
完成后执行以下命令:

docker run -p 8501:8501 -v /home/****/model:/models/model -t tensorflow/serving --model_config_file=/models/model/model.config

访问yolox_model1的模型:http://your ip:8501/v1/models/yolox_model_1,同理也可以访问yolox_model_2。

模型的热部署

在已有模型的服务已启动的情况下,想要在不停止原服务的情况下新增一个模型,可以通过配置模型配置文件定期检查时间,来支持热部署。

主要是在运行的时候添加参数:--model_config_file_poll_wait_seconds=60

参考
  1. Tensorflow serving
  2. TensorFlow Serving + Docker + Tornado机器学习模型生产级快速部署
  3. 使用tensorflow serving部署keras模型(tensorflow 2.0.0)
  4. Tensorflow Serving With Docker
  5. 如何将TensorFlow Serving的性能提高超过70%?

推荐阅读
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • php7 curl_init(),php7.3curl_init获取301、302跳转后的数据
    最近在做一个蜘蛛项目,发现在抓取数据时,有时会碰到301的页面,原本写的curl_init函数php7-远程获取api接口或网页内容&#x ... [详细]
  • 这篇文章给大家介绍怎么从源码启动和编译IoTSharp ,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。IoTSharp项目是 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • ZABBIX 3.0 配置监控NGINX性能【OK】
    1.在agent端查看配置:nginx-V查看编辑时是否加入状态监控模块:--with-http_stub_status_module--with-http_gzip_stat ... [详细]
  • 其实之前也有下载过完整的android源码,但是从来没有对这个做过一些总结,在加上最近需要经常去看,索性就在从新下载,编译一下,其实这些东西官网上面都有。http:sou ... [详细]
  • docker安装到基本使用
    记录docker概念,安装及入门日常使用Docker安装查看官方文档,在"Debian上安装Docker",其他平台在"这里查 ... [详细]
  • 1、DashAPI文档Dash是一个API文档浏览器,使用户可以使用离线功能即时搜索无数API。程序员使用Dash可访问iOS,MacOS, ... [详细]
  • 【BP靶场portswigger服务端10】XML外部实体注入(XXE注入)9个实验(全)
    前言:介绍:博主:网络安全领域狂热爱好者(承诺在CSDN永久无偿分享文章)。殊荣:CSDN网络安 ... [详细]
  • 【docker】启动docker连接数据库 出现FATAL: password authentucation failed for user homestatead问题...
    docker可以成功启动,启动命令如下:dockerrun-d-p54320:5432-vpwdpgdata:varlibpostgresqldata- ... [详细]
  • 表单代码 ... [详细]
  • linux下编译安装lnmp
    2019独角兽企业重金招聘Python工程师标准#######################安装依赖#####################安装必要的包:y ... [详细]
author-avatar
浪漫的没天份
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有