向Tensorflow服务发送请求时难以格式化tf.example

时间:2018-11-30 22:04:29

标签: python tensorflow tensorflow-serving

关于向TensorFlow Serving提出请求的最佳方式,我有两个广泛的问题:

  1. 当稳定性比吞吐量更受关注时,使用gRPC而不是REST有什么好处,它既易于交互,又易于编码数据输入?

  2. 使用gRPC时,建议从python客户端创建tf.examples的建议方式是什么。我们已经看到了通过波束模式将其覆盖的过程,并通过乏味地遍历JSON并沿途构造了单个对象,从而完成了这一工作。对于这种重要的服务内容,这些方法似乎都不可靠,高效或简单。

预先感谢...

1 个答案:

答案 0 :(得分:0)

关于您的第二个问题:我本人不是专家,但这是我过去的做法。

假设您具有将request_dict映射为张量名称到numpy数组的多个输入的数据,则可以如下填充请求对象:

from tensorflow_serving.apis import predict_pb2
from tensorflow.contrib.util import make_tensor_proto    

request = predict_pb2.PredictRequest()
request.model_spec.name = 'tf_serving'
request.model_spec.signature_name = 
tf.saved_model.signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY 

for k, v in request_dict.items(): # keys are tensor names, values are np arrays
    request.inputs[k].CopyFrom(make_tensor_proto(v, shape=v.shape))

我同意这很乏味,并且python用户缺少此部分的文档。使用REST确实更容易,但是我无法评论您关于gRPC与REST的第一个问题。