Tersonflow Serving原理

Tersonflow Serving原理

前言

​当我们将模型训练完毕后,往往需要将模型在生产环境中部署。最常见的方式,是在服务器上提供一个 API,即客户机向服务器的某个 API 发送特定格式的请求,服务器收到请求数据后通过模型进行计算,并返回结果。如果仅仅是做一个 Demo,不考虑高并发和性能问题,其实配合 Flask 等 Python 下的 Web 框架就能非常轻松地实现服务器 API。
不过,如果是在真的实际生产环境中部署,这样的方式就显得力不从心了。这时,TensorFlow 为我们提供了 TensorFlow Serving 这一组件,能够帮助我们在实际生产环境中灵活且高性能地部署机器学习模型。

Tensorflow Serving 是google为机器学习模型生产环境部署设计的高性能的服务系统。具有以下特性:

  • 支持模型版本控制和回滚
  • 支持多模型服务,比如用最新版本/所有版本/指定版本
  • 支持 gRPC/ REST API 调用
  • 支持批处理batching
  • 支持模型的热更新

Tersonflow Serving实现原理

首先我们需要花一些时间来了解TF Serving如何处理ML模型的整个生命周期。在这里,我们将介绍TF服务的主要构建块。
TF Serving服务由一些抽象组成,这些抽象类用于不同任务的API,其中最重要的是Servable,Loader,Source,Aspired Versions和Manager。
让我们来看看他们之间是如何互动的:

TensorFlow Serving架构,图片来源于TensorFlow Serving官方文档

TensorFlow Serving架构,图片来源于TensorFlow Serving官方文档

Servable

Servable是TF Serving的核心概念,也就是对算法模型的抽象,任何能够能提供算法或者资料查询服务的实体都可以是Servable,不一定是机器学习模型,在我们常用的场景下,Servable就是模型。

Loader

Loader对Servable的生命周期进行控制, 包括如何加载以及如何估计模型所需的资源,例如请求的RAM和GPU内存。Loader还有一个指向磁盘上模型的指针以及用于加载它的所有必要的元数据。但是有一个问题:加载器不允许加载模型。创建Loader后,Source会将其作为Aspired Version发送给Manager,由Manager负责加载。

Source

Source是对Servable的来源(Source)的抽象,Source监控文件系统(一般是磁盘), 发现新的模型版本。
目前实现了两种Source, 一种是StaticStoragePathSource,一种是FileSystemStoragePathSource. 前者是简单的静态的模型地址, 仅仅在启动时触发模型的载入,没有其他动作。 后者是动态的Source, 能监测磁盘上模型文件的变化并发出通知。

Aspired Versions

Aspired Versions代表一组新的已准备就绪的模型版本的集合,Source把Aspired Versions传递给Manager后,Manager会卸载老模型并加载新模型。

Manager

Manager处理Servable的整个生命周期,包括:

  • 加载模型
  • 提供模型计算服务
  • 卸载模型

Manager会监听Source请求并追踪所有模型版本。一般情况下,Manager会处理所有Source请求除非请求资源不足。Manager也有可能延迟卸载老模型直至新模型完成加载,Manager会保证至少有一个模型在提供服务。

TF Serving的工作流程主要分为以下几个步骤:

  • Source会识别磁盘上的新模型后会创建一个Loader,Loader中会包含要加载模型的全部信息;
  • Source通知Manager有新的模型需要进行加载;
  • Manager通过版本管理策略(Version Policy)来确定哪些模型需要被下架,哪些模型需要被加载;
  • Manger在确认需要加载的模型符合加载策略,便通知Loader来加载最新的模型;
  • 客户端向服务端请求模型结果时,可以指定模型的版本,也可以默认使用最新模型的结果;

Tersonflow Serving模型部署

具体的步骤可以参考官方文件.主要包括两个部分:

  1. 导出模型
  2. 启动服务

需要说明的是导出模型部分.如果要把我们训练的模型拿来提供服务,除了模型本身外,还需要一些额外的信息,比如模型的名称,输入、输出对应的tensor信息,方法名,这些东西可以让TF Serving进行请求资料的格式检查以及目标模型查询.这就是模型导出的作用.直接拿一个checkpoint档案之类的是不能用的。
Tersonflow提供了相关的工具(tf.saved_model.builder.SavedModelBuilder),可以以SavedModel格式导出模型, SavedModel格式的模型可以直接使用Tersonflow Serving部署。

总结

将机器学习(ML)模型应用于生产环境已成为一个火热的的话题,许多框架提供了旨在解决此问题的不同解决方案。Tersonflow Serving就是其中一种较为合适的方案,可以极大地方便算法模型的迭代和部署工作,如果模型训练就是用的Tersonflow,可以尝试一下。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值