Tensorflow Serving是一种将TensorFlow制作好的模型 用于应用的服务的工具。TensorflowServing是为训练好的模型提供对外rpc调用的接口服务器,它能够检测模型的最新版本并自动加载,使得模型到生产环境的部署更为便利。不得不说这个是一个非常好的工具,既免去了模型服务化的开发工作,又保证了迭代训练的模型能够快速上线。记得本博主去年还专门做过一段时间caffe模型的服务化,封装人脸识别和物体识别的http接口,一开始写起来还是挺麻烦的。最近团队内部NLP的模型训练切换到了Tensorflow,于是乎便简单体验了一下Tensorflow Serving,这里做个简单的总结。
1.如何制作Tesor Serving的应用?
基本分为两部分,
第一步:训练模型,并且导出(export)产生pb( protocol buffer )格式的文件。
第二步:使用gRPC服务讯早导出的模型并为模型开启服务。
如图1所示。
图1构建Tensor Serving
详情参见:Building Standard TensorFlow ModelServer
2. Tensor Serving需要什么形式的模型才能使用?
Serving导出的模型文件格式是*.pb这种文件以二进制的形式保存模型每个节点的值。
3. Tensorflow的导出和保存有区别么?
有的。
1.首先:两者操作后产生的文件不同(save操作的问件事ckp系列,export是pb,protocol buffer文件)。
2.其次,操作的目的不同: 保存(save)模型的目的是:防止在训练过程中突然断电导致训的参数据丢失。而不是用于Serving。
导出(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模型,并且建立一个服务器来服务导出模型。
advanced tutorial:学习如何建立一个服务器,自动地发现并服务训练模型的新版本。
4、Serving Inception Model Tutorial
serving inception tutorial:学习如何使用TensorFlow Serving and Kubernetes来服务inception模型。
ۢ7t����`[�/