什么是Tensorflow Serving?

众所周知,Tensorflow 是Google开源的一个机器学习库,通过TensorFlow可以编写并训练多种机器学习模型,那么得到模型后如何对外界提供服务呢?
Tensorflow Serving 是一个Google官方给出的一个解决方案。TensorFlow Serving 是一个用于机器学习模型 serving 的高性能开源库。它可以将训练好的模型部署到线上,外部程序可以通过gRPC接口来调用模型。TensorFlow Serving有个亮点就是,它支持模型的热更新和模型版本的自动管理。这样将线上程序部署好了之后,我们只需要关注模型线下的训练部分就行了。

Tensorflow Serving 安装

这个按照官方教程一步步来就行. 不过这里有有个坑就是,千万不要把从window下git clone的代码放到linux下去编译( ̄へ ̄,不过一般没有人这么干。。。。)。

Tensorflow Serving Architecture

要理解Tensorflow Serving 的Architecture 有几个关键的概念需要知道。

  • Servables
    • Servable Versions
    • Servable Streams
    • Models
  • Loaders
  • Sources
  • Managers

Servables

Servable是Tensorflow Serving的一个核心抽象概念。Servable 是Tensorflow Serving的主要计算单元,关于模型的计算主要由它来完成,一个Servable可以包含一个模型,也可以包含多个模型。常用的Servable主要是SavedModelBundle,对应的是tensorflow::Session,client程序主要通过它来获取模型的计算结果。但是Servable只管计算,它的生命周期由Loaders模块管理。

Servable Versions 顾名思义指的是Servable的版本,Tensorflwo可以同时管理一个或多个版本的Servable。关于模型的版本管理,改天再写,现在先知道这么多。
Servable Streams 当然就指的是同一个Servable的多个版本啦。
Model 在Tensorflow Serving 中一个model最终表示为一个或多个Servable,感觉Model和Servable好像是多对多的关系。

Loader

Loader的作用就简单多了,就是用来管理一个Servable的声明周期的,Loader提供了加载和卸载Servable的API。

Source

Source是用来发现和提供Servable的,每个Source提供一个或多个Servable Stream, 对于Stream中的每个版本的Servable, Tensorflow为其提供一个Loader用来加载。
Aspired Versions 指的是选中的要加载的版本。

Manager

Manager用来处Servables的整个生命周期,从加载,到运行,到卸载。

Tensorflow Serving的大致架构如下:
Tensorflow Serving 架构图

总的来说,Tensorflow Serving 的运行过程大致是这样的: Sources为Servables创建Loaders,版本为Aspired Versions的Servables的Loaders被发送到Manager,Manager为运行Servables为client提供服务。

更细节的步骤如下:

  1. Source为一个指定版本的Servable创建Loader。
  2. Source告诉Manager那个版本是Aspired Version。
  3. Manager 根据configured Version Policy来确定下一步干什么,是卸载旧的的Version还是加载新的Version。
  4. 如果Manager认为可以加载,那么它就会给Loader需要的资源让Loader加载Servable。
    5.当client寻求服务时, Manager就会返回一个Servable的Handler。

总的来说,TensorFlow Serving的框架的大概的运行过程就是这样,具体的使用过程,改天再写。

 posted on 2018-02-08 14:23  wxhzt  阅读(514)  评论(0)    收藏  举报