如何使用多个model_spec创建单个PredictRequest()?

时间:2019-05-09 16:32:28

标签: tensorflow tensorflow-serving

我正尝试将多个model_spec及其受尊重的输入添加到单个predict_pb2.PredictRequest()中,如下所示:

tmp = predict_pb2.PredictRequest()

tmp.model_spec.name = '1'
tmp.inputs['tokens'].CopyFrom(make_tensor_proto([1,2,3]))


tmp.model_spec.name = '2'
tmp.inputs['tokens'].CopyFrom(make_tensor_proto([4,5,6]))

但是我只得到2的信息:

>> tmp

model_spec {
  name: "2"
}
inputs {
  key: "tokens"
  value {
    dtype: DT_INT32
    tensor_shape {
      dim {
        size: 3
      }
    }
    tensor_content: "\004\000\000\000\005\000\000\000\006\000\000\000"
  }
}

如何为具有各自输入的多个模型获得单个PredictRequest()?

我的目标是创建一个请求并将其发送到为两个模型提供服务的tensorflow服务。还有其他解决方法吗?为两个模型分别创建两个请求,并从tf_serving一个接一个的工作中获得结果,但是我想知道是否可以将两个请求合并为一个。

2 个答案:

答案 0 :(得分:0)

恐怕是不可能的。在tensorflow_serving / api / predict.proto中,每个PredictRequest仅具有一个ModelSpec。您可以尝试添加一些代码来做到这一点。

答案 1 :(得分:-1)

您尝试使用配置文件。

配置文件的内容如下:

model_config_list {
  config {
    name: 'my_first_model'
    base_path: '/tmp/my_first_model/'
  }
  config {
    name: 'my_second_model'
    base_path: '/tmp/my_second_model/'
  }
}

有关更多信息,您可以参考以下链接:

https://www.tensorflow.org/tfx/serving/serving_config