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

TensorFlowServinggpu机器学习模型部署

1TensorFlowServing简单介绍TensorFlowServing是一个用于机器学习模型serving的高性能开源库。它可以将训练好的机器学习模型部署到线上,使用res

1 TensorFlow Serving简单介绍

TensorFlow Serving 是一个用于机器学习模型 serving 的高性能开源库。它可以将训练好的机器学习模型部署到线上,使用 restful api或者grpc 作为接口接受外部调用,部署 TensorFlow Serving 后,你再也不需要为线上服务操心,只需要关心你的线下模型训练, 模型训练好打包成pd文件,传入tf-serving 中,调用即可。

2 docker 安装 tensorflow-serving ,using your gpu

TensorFlow Serving最简单的安装方法之一就是使用Docker,其他安装方式不在介绍。

2.1 step 1 安装 install nvida-docker

2.2 step 2 pull一个tfserver镜像

docker pull tensorflow/serving:latest-gpu

3 TensorFlow Serving gpu的使用

docker run –runtime=nvidia -p 8501:8501 \

–mount type=bind,\

source=/tmp/tfserving/serving/tensorflow_serving/servables/tensorflow/my_model,\

target=/models/my_model \

-e MODEL_NAME=half_plus_two -t tensorflow/serving:latest-gpu \

–model_config_file =/models/models.config

解释 :

source 模型源地址

Target docker 映射地址

-e MODEL_NAME 模型名字

-t 用到的镜像

–model_config_file 配置文件(单模型可以不加这个参数)

多模型下有一点务必要注意的是,models.conf文件中model的base_path应该是与target的路径保持一致,否则会报错找不到模型。

看到以下画面,tf-serving 正在加载模型,几秒后看到暴露8501端口,

则部署成功。

《TensorFlow Serving gpu 机器学习模型部署》
《TensorFlow Serving gpu 机器学习模型部署》

注意:传入的模型结构 应该是

《TensorFlow Serving gpu 机器学习模型部署》

4 TensorFlow Serving 客户端如何调用

模型是 predict Api, 其他的模型请求方式请看官方文档

链接:https://www.tensorflow.org/tfx/guide/serving

curl -d ‘{“instances”: [1.0, 2.0, 5.0]}’ -X POST

http://localhost:8501/v1/models/yolo_digit/versions/版本号:predict

当然你可以编写你的脚本文件

返回的预测结果以json格式:

{

“predictions”: [

{

“detection_classes”: [2, 9, 10],

“detection_boxes”: [[0.0138582, 0.791607, 0.847469, 0.989209], [0.0783433, 0.0179386, 0.96922, 0.329528], [0.0382449, 0.376244, 0.919879, 0.685031]],

“detection_scores”: [0.999997, 0.999993, 0.999994]

}

]

}

5 TensorFlow Serving 总结

TensorFlow Serving是GOOGLE开源的一个服务系统,适用于部署机器学习模型,灵活、性能高、可用于生产环境。 TensorFlow Serving可以轻松部署新算法和实验,同时保持相同的服务器架构和API,它具有以下特性:

1支持模型版本控制和回滚

2支持并发,实现高吞吐量

3开箱即用,并且可定制化

4支持多模型服务

5支持批处理

6支持热更新

7支持分布式模型

8易于使用的inference api

9为gRPC expose port 8500,为REST API expose port 8501

注意 : tensorflow serving 服务不会占用一整块gpu,当你去post数据的时候才会调用服务器的gpu运算,本此测试用本14000张循环请求,服务器GPU占用率在5%左右,性能非常好。

有问题 微信 ljcyygyepq1


推荐阅读
  • Tomcat安装与配置教程及常见问题解决方法
    本文介绍了Tomcat的安装与配置教程,包括jdk版本的选择、域名解析、war文件的部署和访问、常见问题的解决方法等。其中涉及到的问题包括403问题、数据库连接问题、1130错误、2003错误、Java Runtime版本不兼容问题以及502错误等。最后还提到了项目的前后端连接代码的配置。通过本文的指导,读者可以顺利完成Tomcat的安装与配置,并解决常见的问题。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 本文介绍了在Python张量流中使用make_merged_spec()方法合并设备规格对象的方法和语法,以及参数和返回值的说明,并提供了一个示例代码。 ... [详细]
  • Java 11相对于Java 8,OptaPlanner性能提升有多大?
    本文通过基准测试比较了Java 11和Java 8对OptaPlanner的性能提升。测试结果表明,在相同的硬件环境下,Java 11相对于Java 8在垃圾回收方面表现更好,从而提升了OptaPlanner的性能。 ... [详细]
  • Java如何导入和导出Excel文件的方法和步骤详解
    本文详细介绍了在SpringBoot中使用Java导入和导出Excel文件的方法和步骤,包括添加操作Excel的依赖、自定义注解等。文章还提供了示例代码,并将代码上传至GitHub供访问。 ... [详细]
  • php缓存ri,浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理)
    thinkPHP的F方法只能用于缓存简单数据类型,不支持有效期和缓存对象。S()缓存方法支持有效期,又称动态缓存方法。本文是小编日常整理有关thinkp ... [详细]
  • Annotation的大材小用
    为什么80%的码农都做不了架构师?最近在开发一些通用的excel数据导入的功能,由于涉及到导入的模块很多,所以开发了一个比较通用的e ... [详细]
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社区 版权所有