保存定制的tf.estimator训练模型以进行张量流服务

时间:2019-03-22 05:37:29

标签: python tensorflow tensorflow-serving tensorflow-estimator

如果我有一个使用自定义估算器的张量流模型,我将如何保存该模型以便将其部署到生产环境中。

https://colab.research.google.com/github/google-research/bert/blob/master/predicting_movie_reviews_with_bert_on_tf_hub.ipynb#scrollTo=JIhejfpyJ8Bx

我正在使用的模型与此模型相似,并且想知道一旦对其进行了训练,如何保存该模型。尝试过使用Savedmodel并使用检查点进行还原,但两者均未成功(无法在本示例中进行调整)

1 个答案:

答案 0 :(得分:0)

一种方法是通过gRPC。 TF那里有一些不太直接的文档:https://www.tensorflow.org/tfx/serving/serving_basic 最困难的一点实际上是保存您的模型,之后通过docker托管它有很多文档。 最后,您可以使用gRPC客户端,即https://github.com/epigramai/tfserving-python-predict-client

进行推断

为此,您需要先保存模型。像这样,您需要在示例中对其进行一些调整:

  def save_serving_model(self,estimator):
      feature_placeholder = {'sentence': tf.placeholder('string', [1], name='sentence_placeholder')}

      # The build_raw_serving_input_receiver_fn doesn't serialize inputs so avoids confusion with bytes and strings. You can simply pass a string.
      serving_input_fn = tf.estimator.export.build_raw_serving_input_receiver_fn(feature_placeholder)

      # Save the model
      estimator.export_savedmodel("./TEST_Dir", serving_input_fn)

这会将模型保存在TEST_Dir中。 作为快速测试,您可以执行以下操作:

saved_model_cli run --dir /path/to/mode/ --tag_set serve --signature_def predict --input_exprs="sentence=['This API is a little tricky']"

下一步是托管此模型,或“为其提供服务”。我这样做的方法是通过docker,即

之类的命令
docker run -p 8500:8500 \
--mount type=bind,source=/tmp/mnist,target=/models/mnist \
-e MODEL_NAME=mnist -t tensorflow/serving &

最后,您可以使用预测客户端(通过gRPC)将一句话传递到服务器并返回结果。我在上面添加的github链接中有两个与此相关的博客文章。