关于向TensorFlow Serving提出请求的最佳方式,我有两个广泛的问题:
当稳定性比吞吐量更受关注时,使用gRPC而不是REST有什么好处,它既易于交互,又易于编码数据输入?
使用gRPC时,建议从python客户端创建tf.examples的建议方式是什么。我们已经看到了通过波束模式将其覆盖的过程,并通过乏味地遍历JSON并沿途构造了单个对象,从而完成了这一工作。对于这种重要的服务内容,这些方法似乎都不可靠,高效或简单。
预先感谢...
答案 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的第一个问题。