Tensorflow Serving是一種將TensorFlow制作好的模型 用于應(yīng)用的服務(wù)的工具胜臊。TensorflowServing是為訓(xùn)練好的模型提供對外rpc調(diào)用的接口服務(wù)器柱锹,它能夠檢測模型的最新版本并自動加載,使得模型到生產(chǎn)環(huán)境的部署更為便利棉钧。不得不說這個(gè)是一個(gè)非常好的工具谬哀,既免去了模型服務(wù)化的開發(fā)工作昔榴,又保證了迭代訓(xùn)練的模型能夠快速上線。記得本博主去年還專門做過一段時(shí)間caffe模型的服務(wù)化者疤,封裝人臉識別和物體識別的http接口,一開始寫起來還是挺麻煩的叠赦。最近團(tuán)隊(duì)內(nèi)部NLP的模型訓(xùn)練切換到了Tensorflow驹马,于是乎便簡單體驗(yàn)了一下Tensorflow Serving,這里做個(gè)簡單的總結(jié)除秀。
1.如何制作Tesor Serving的應(yīng)用糯累?
基本分為兩部分,
第一步:訓(xùn)練模型鳞仙,并且導(dǎo)出(export)產(chǎn)生pb(?protocol buffer?)格式的文件寇蚊。
第二步:使用gRPC服務(wù)訊早導(dǎo)出的模型并為模型開啟服務(wù)。
如圖1所示棍好。
圖1構(gòu)建Tensor Serving
詳情參見:Building Standard TensorFlow ModelServer
2. Tensor Serving需要什么形式的模型才能使用仗岸?
Serving導(dǎo)出的模型文件格式是*.pb這種文件以二進(jìn)制的形式保存模型每個(gè)節(jié)點(diǎn)的值。
3. ?Tensorflow的導(dǎo)出和保存有區(qū)別么借笙?
有的扒怖。
1.首先:兩者操作后產(chǎn)生的文件不同(save操作的問件事ckp系列,export是pb业稼,protocol buffer文件)盗痒。
2.其次,操作的目的不同: 保存(save)模型的目的是:防止在訓(xùn)練過程中突然斷電導(dǎo)致訓(xùn)的參數(shù)據(jù)丟失低散。而不是用于Serving俯邓。
導(dǎo)出(export)模型的目的是:為了讓RCP服務(wù)使用。
參見:tf.saved_model.builder.SavedModelBuilder
4.使用tensorflow訓(xùn)練好的模型保存下來以后熔号,是否可以直接用在tensor Serving上稽鞭?
回答:能。
經(jīng)過Tesnsorflow的tf.train.save()保存下當(dāng)前模型的權(quán)重引镊,同時(shí)會產(chǎn)生三種文件:
model.ckpt-412506.data-00000-of-00001#這個(gè)文件保存下來的是數(shù)據(jù)
model.ckpt-412506.index#保存下來索引
model.ckpt-412506.meta#
這些文件是不能夠直接用在Serving上的朦蕴,需要轉(zhuǎn)換成pb。方法也很簡單:
把恢復(fù)原有的模型弟头,然后使用tf.saved_model.builder.SavedModelBuilder導(dǎo)出吩抓。
在網(wǎng)上也找到了另一種實(shí)現(xiàn)方式tf_serving中各模型到saved_model的轉(zhuǎn)換
2、Basic Serving Tutorial
basic tutorial:學(xué)習(xí)如何導(dǎo)出一個(gè)訓(xùn)練的tensorflow模型赴恨,并且建立一個(gè)服務(wù)器來服務(wù)導(dǎo)出模型疹娶。
advanced tutorial:學(xué)習(xí)如何建立一個(gè)服務(wù)器伦连,自動地發(fā)現(xiàn)并服務(wù)訓(xùn)練模型的新版本雨饺。
4挣饥、Serving Inception Model Tutorial
serving inception tutorial:學(xué)習(xí)如何使用TensorFlow Serving and Kubernetes來服務(wù)inception模型。
?7t????`[?/