为 nvidia triton 使用字符串参数

问题描述 投票:0回答:2

我正在尝试在 Triton 推理服务器上部署一个简单的模型。它加载良好,但我在格式化输入以执行正确的推理请求时遇到问题。

我的模型有一个像这样设置的config.pbtxt

  max_batch_size: 1
  input: [
    {
      name: "examples"
      data_type: TYPE_STRING
      format: FORMAT_NONE
      dims: [ -1 ]
      is_shape_tensor: false
      allow_ragged_batch: false
      optional: false
    }
  ]

我尝试使用非常简单的Python代码来设置输入数据,如下所示(输出未写入,但设置正确)

        bytes_data = [input_data.encode('utf-8')]
        bytes_data = np.array(bytes_data, dtype=np.object_)
        bytes_data = bytes_data.reshape([-1, 1])
        inputs = [
            httpclient.InferInput('examples', bytes_data.shape, "BYTES"),
        ]
        inputs[0].set_data_from_numpy(bytes_data)

但我不断收到相同的错误消息

tritonclient.utils.InferenceServerException: Could not parse example input, value: '[my text input here]'
         [[{{node ParseExample/ParseExampleV2}}]]

我尝试了多种对输入进行编码的方法,例如字节,甚至是 TFX 服务用于这样询问的

{ "instances": [{"b64": "CjEKLwoJdXR0ZXJhbmNlEiIKIAoecmVuZGV6LXZvdXMgYXZlYyB1biBjb25zZWlsbGVy"}]}

我不太确定问题出在哪里,有谁知道吗?

python tensorflow nvidia tfx tritonserver
2个回答
2
投票

如果有人遇到同样的问题,这解决了它。我必须创建一个 tf.train.Example() 并正确设置数据

example = tf.train.Example()
example_bytes = str.encode(input_data)
example.features.feature['utterance'].bytes_list.value.extend([example_bytes])
inputs = [
    httpclient.InferInput('examples', [1], "BYTES"),
]
inputs[0].set_data_from_numpy(np.asarray(example.SerializeToString()).reshape([1]), binary_data=False)
    

0
投票

我稍微修改了接受的示例,没有必要创建

f.train.Example
- 您可以简单地将文本编码为字节并直接创建 numpy 数组。

input_data_bytes = str.encode(input_data)

inputs = [tritonhttpclient.InferInput('TEXT', [1], "BYTES")]
inputs[0].set_data_from_numpy(np.asarray(input_data_bytes).reshape([1]), binary_data=False)
© www.soinside.com 2019 - 2024. All rights reserved.