什么是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 的运行过程大致是这样的: Sources为Servables创建Loaders,版本为Aspired Versions的Servables的Loaders被发送到Manager,Manager为运行Servables为client提供服务。
更细节的步骤如下:
- Source为一个指定版本的Servable创建Loader。
- Source告诉Manager那个版本是Aspired Version。
- Manager 根据configured Version Policy来确定下一步干什么,是卸载旧的的Version还是加载新的Version。
- 如果Manager认为可以加载,那么它就会给Loader需要的资源让Loader加载Servable。
5.当client寻求服务时, Manager就会返回一个Servable的Handler。
总的来说,TensorFlow Serving的框架的大概的运行过程就是这样,具体的使用过程,改天再写。
posted on
浙公网安备 33010602011771号