Serving Framework

  • Train:训练模型的过程
  • exporter:负责将训练好的模型导出
  • Sever:负责存储操作,例如将对象存储到磁盘
  • Server:提供grpc server,组织request调用Module,将结果response client
  • ModuleManager:负责加载训练好的模型
  • Scheduler:负责请求的调度,例如BatchScheduler(buffer 某一批数据才发给Service)
  • client:负责发送Request请求接收Response

TensorFlow Serving 1.0的特性包括:多种批量处理(Batching)选项;一个用于生命周期管理的模型管理器;为同一模型的多版本同时提供服务;支持子任务;数据源定义标准化,用于可插拔、可调用的模型存储。

TensorFlow社区中的一个核心挑战,是如何将模型从磁盘上取出并被服务调用,进而实现为可重生流水线的一部分。TensorFlow Serving允许用户原生地推出同一模型的多个版本,并同时地运行它们,而且可在不额外使用独立CI/CD工具的情况下还原更改。

TensorFlow Serving 1.0将会在小版本上与所有的TensorFlow的发布保存同步,同时也通过apt-get提供得到维护的Debian软件包。

TensorFlow Serving具有三个主要组件。

第一个组件是一系列的C++软件库,支持使用标准的“保存并导出”格式保存和加载TensorFlow模型。

第二个组件是一个通用的“配置驱动”核心平台,提供了与其它机器学习平台在某种层次上的互操作性,但是报告中并未对此做详细介绍。核心平台中打包了可执行的二进制和托管服务,其中二进制使用了据估计最优的默认设置,并经实践得以改进。

第三个组件是通过Cloud ML所提供的一些商业选项。

核心平台关注的是低延迟的请求和响应时间,以及更优的计算时间分配。对于GPU/TPU和CPU密集型任务,TensorFlow Serving使用独立的线程库对请求做小批量(mini-batching)处理,提供了更少的往返调用,以及更高效的资源分配。

软件库是经过优化的,主要针对使用“读取-拷贝-更新”(read-copy-update)模式的高性能处理、服务器启动时的模型快速加载以及引用计数(reference count)指针。软件库为指针提供了容错,以追踪指定时刻一个模型在图模型中的执行状态。

TensorFlow Serving提供非阻塞的模型加载和推理服务,这是通过独立的线程池处理的。具有队列的小批量(Mini-batching)处理是TensorFlow Serving中的一个重要概念。其中,异步请求被一并小批量处理,并传递给一个TensorFlow Session,由该Session去协调Manager处理请求。推理请求也被一并小批量处理,以降低延迟。请求处理使用ServableHandle实现,ServableHandle是一个指向特定客户请求的指针。

SessionBundle模型格式已被弃用,取而代之的是新的SavedModel格式。TensorFlow Serving中引入了MetaGraph这一概念,其中包括处理器架构的信息,经训练的模型将运行在该处理器架构上。MetaGraph包含了模型的词汇、嵌入(Embedding)、训练权重及其它一些模型参数。SavedModel对象由MetaGraphs组成,设计为可移植的并且可调用的工件(Artifact)。SavedModel抽象可用于训练、部署服务(Serving)和离线评估,并可在新的CLI上运行。SignatureDef是SavedModel的一个组件,帮助实现图模型中各层的标注(Annotate)和特征化。

TensorFlow Serving提供了数据源(Source)库的API,并为模型类型提供了SourceAdapter。Source模块为SavedModels发射出Loader,并估计内存需求情况。Source API发射元数据到Manager模块,由Manager模块为模型加载数据,并加载该模型本身。Fiedel指出,通过封装通用代码模式为一个用于注入(Injection)的配置文件,新的ServerCore实现将模板(Biolerplate)的代码行数(LOC,Line Of Code)从约300行减少到10行。

新的Inference API为通用用例提供了多个可重用的组件。其中,Predict组件用于预测配置和部署服务(Serving),Regress组件用于回归模型,Classify组件用于分类算法,Multi-inference组件用于将Regress组件和Classify组件的API组合在一起使用。

现在TensorFlow Serving还支持Multi-headed inferencing。Multi-headed inferencing是新出现于机器学习领域中的一个研究热点,试图解决存在并发一致请求的问题。通过去除被识别为错误的或重复的请求,Mutil-headed Inferencing可进一步提高小批量处理(Mini-batch)的效率。 一些产生错误的数据源所生成的输入量非常大,并且代价高昂。具有对这样数据源的弹性,有助于阻止资源消费和数据质量上的负面级联效应。

Google推荐使用针对GCP客户做了优化的静态二进制,以更好地利用对gRPC函数默认设置的最优估计。为使用户可尽快上手TensorFlow Serving ,1.0版本还提供了Docker镜像以及K8教程。

TensorFlow Serving Architecture相关推荐

  1. 如何将TensorFlow Serving的性能提高超过70%?

    点击上方↑↑↑蓝字关注我们~ 「2019 Python开发者日」7折优惠最后2天,请扫码咨询 ↑↑↑ 译者 | Major 出品 | AI科技大本营(ID:rgznai100) TensorFlow已 ...

  2. TensorFlow serving远程访问引擎的容器部署

    2019独角兽企业重金招聘Python工程师标准>>> TensorFlow Serving是通过rpc接口远程访问tensorflow引擎的服务器. TensorFlow Serv ...

  3. tensorflow从入门到精通100讲(六)-在TensorFlow Serving/Docker中做keras 模型部署

    前言 不知道大家研究过没有,tensorflow模型有三种保存方式: 训练时我们会一般会将模型保存成:checkpoint文件 为了方便python,C++或者其他语言部署你的模型,你可以将模型保存成 ...

  4. TensorFlow Serving 尝尝鲜

    2019独角兽企业重金招聘Python工程师标准>>> 作者:Mao Chan BitTiger尊重原创版权,转载已经过作者授权. 2016年,机器学习在 Alpha Go 与李世石 ...

  5. TensorFlow Serving + Docker + Tornado机器学习模型生产级快速部署

    点击上方"AI搞事情"关注我们 内容转载自知乎:https://zhuanlan.zhihu.com/p/52096200 Justin ho 〉 本文将会介绍使用TensorFl ...

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

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

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

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

  8. 基于TensorFlow Serving的深度学习在线预估

    一.前言 随着深度学习在图像.语言.广告点击率预估等各个领域不断发展,很多团队开始探索深度学习技术在业务层面的实践与应用.而在广告CTR预估方面,新模型也是层出不穷: Wide and Deep[1] ...

  9. 构建并用 TensorFlow Serving 部署 Wide Deep 模型

    Wide & Deep 模型是谷歌在 2016 年发表的论文中所提到的模型.在论文中,谷歌将 LR 模型与 深度神经网络 结合在一起作为 Google Play 的推荐获得了一定的效果.在这篇 ...

  10. Tensorflow Serving 介绍

    TensorFlow Serving Introduction TensorFlow Serving 系统非常适用于大规模运行能够基于真实情况的数据并会发生动态改变的多重模型.它给出了一个把模型应用到 ...

最新文章

  1. CentOS 7 搭建docker仓库
  2. win10禁止dpi缩放在哪_Win10最新DPI缩放技术怎么设置?
  3. Java ArrayList的不同排序方法
  4. Raising Modulo Numbers
  5. 使用rapid-framework自动生成struct2
  6. 武汉游记,三件新鲜奇葩事
  7. 【负载观测】永磁同步电机的负载观测及前馈补偿
  8. 因为一个YYYY-MM-dd的Bug,我被老板骂的狗血淋头!
  9. php绕过验证码注册,验证码被绕过的处理方法_PHP教程
  10. 火星开发板_数据科学家来自火星,软件开发人员来自金星
  11. 数据模型、概念模型、逻辑模型、物理模型
  12. windows bat脚本实现ftp自动下载 删除
  13. vim光速开发,你值得拥有
  14. RabbitMQ 工作队列模型(任务队列)
  15. unity打开除主菜单其他地方黑屏或白屏与unityHub安装unity简介
  16. thinkphp6 框架源码分析
  17. JavaScript-原型详解
  18. thinkphp查询条件被叠加
  19. D. Epic Transformation
  20. 对于Tencent Files文件夹需要来自LAPTOP-PH9TIHGE\用户名的权限才能删除的解决办法

热门文章

  1. 房屋租赁合同可不可以用笔修改
  2. centos 加密解密
  3. mybatis case when
  4. 【181018】纯C 编写的太空大战打字游戏
  5. 搜狗公众号爬虫学习系列一公众号的biz
  6. PhantomReference虚引用
  7. Emacs指北(做一个搬运工好累)
  8. OpenGL鼠标移动方块
  9. 回归模型+自变量和因变量之间的关系、回归模型的种类、回归模型的输出类型、个数角度
  10. 计算机开机一直无法访问,电脑开机时显示:AutoIt 错误 不能打开脚本文件 如何处理...