TensorFlow Serving (0)

Tensorflow Serving是一种将TensorFlow制作好的模型 用于应用的服务的工具。TensorflowServing是为训练好的模型提供对外rpc调用的接口服务器,它能够检测模型的最新版本并自动加载,使得模型到生产环境的部署更为便利。不得不说这个是一个非常好的工具,既免去了模型服务化的开发工作,又保证了迭代训练的模型能够快速上线。记得本博主去年还专门做过一段时间caffe模型的服务化,封装人脸识别和物体识别的http接口,一开始写起来还是挺麻烦的。最近团队内部NLP的模型训练切换到了Tensorflow,于是乎便简单体验了一下Tensorflow Serving,这里做个简单的总结。


TensorFlow Serving (0)_第1张图片
假装贴一个图  :)

1.如何制作Tesor Serving的应用?

基本分为两部分,

第一步:训练模型,并且导出(export)产生pb( protocol buffer )格式的文件。

第二步:使用gRPC服务讯早导出的模型并为模型开启服务。

如图1所示。


TensorFlow Serving (0)_第2张图片

图1构建Tensor Serving

详情参见:Building Standard TensorFlow ModelServer

2. Tensor Serving需要什么形式的模型才能使用?

Serving导出的模型文件格式是*.pb这种文件以二进制的形式保存模型每个节点的值。

3.  Tensorflow的导出和保存有区别么?

有的。

1.首先:两者操作后产生的文件不同(save操作的问件事ckp系列,export是pb,protocol buffer文件)。

2.其次,操作的目的不同: 保存(save)模型的目的是:防止在训练过程中突然断电导致训的参数据丢失。而不是用于Serving。

参见:tf.train.Saver

导出(export)模型的目的是:为了让RCP服务使用。

参见:tf.saved_model.builder.SavedModelBuilder

4.使用tensorflow训练好的模型保存下来以后,是否可以直接用在tensor Serving上?

回答:能。

经过Tesnsorflow的tf.train.save()保存下当前模型的权重,同时会产生三种文件:

model.ckpt-412506.data-00000-of-00001#这个文件保存下来的是数据

model.ckpt-412506.index#保存下来索引

model.ckpt-412506.meta#

这些文件是不能够直接用在Serving上的,需要转换成pb。方法也很简单:

把恢复原有的模型,然后使用tf.saved_model.builder.SavedModelBuilder导出。

在网上也找到了另一种实现方式tf_serving中各模型到saved_model的转换


2、Basic Serving Tutorial

basic tutorial:学习如何导出一个训练的tensorflow模型,并且建立一个服务器来服务导出模型。

3、Advanced Serving Tutorial

advanced tutorial:学习如何建立一个服务器,自动地发现并服务训练模型的新版本。

4、Serving Inception Model Tutorial

serving inception tutorial:学习如何使用TensorFlow Serving and Kubernetes来服务inception模型。

ۢ7t����`[�/

你可能感兴趣的:(TensorFlow Serving (0))