Я преобразовал модель Keras в оценщик Tensorflow, добавил Tensorflow Transform к графику, а затем экспортировал модель для обслуживания.
Когда я проверяю подпись модели, я вижу следующую информацию:
signature_def['serving_default']:
The given SavedModel SignatureDef contains the following input(s):
inputs['examples'] tensor_info:
dtype: DT_STRING
shape: (-1)
name: input_example_tensor:0
The given SavedModel SignatureDef contains the following output(s):
outputs['specialities'] tensor_info:
dtype: DT_FLOAT
shape: (-1, 154)
name: specialities/Softmax:0
Method name is: tensorflow/serving/predict
Я преобразовал спецификации функций с tf.estimator.export.build_parsing_serving_input_receiver_fn
, поэтому имя входного узла в подписи - example
. Имя входного узла в моей модели - procedures
.
Затем я использую saved_model_cli
, чтобы вручную протестировать экспортированную модель, и все выглядит хорошо (у меня есть список вероятностей)
!saved_model_cli run --dir=/model_dir/1533849825
--tag_set serve
--signature_def serving_default
--input_examples 'examples=[{"procedures": ["99214,17000,17000,13121,99203"]}]'
Теперь я загружаю эту модель в TF Serving, сервер модели запускается нормально.
Когда я запрашиваю прогноз модели с полезной нагрузкой json ниже (application / json), я получаю следующую ошибку:
{
"signature_name":"serving_default",
"instances":[
{
"examples":["99214,17000,17000,13121,99203"]
}
]
}
Ошибка:
"error": "Expected serialized to be a vector, got shape: [1,1]
Другая структура полезной нагрузки приводит к этой ошибке
{
"signature_name":"serving_default",
"examples":[
{
"procedure":["99214,17000,17000,13121,99203"]
}
]
}
Ошибка:
"error": "JSON Value: {\n \"signature_name\": \"serving_default\",\n
\"examples\": [\n {\n \"procedures\":
["99214,17000,17000,13121,99203"]]\n }\n ]\n} not formatted
correctly. Expecting object with \'instances\' key and a list/array as the value."
Каков правильный формат полезной нагрузки для запроса TensorFlow Serving в этом случае прогнозирования?
Нужно ли форматировать полезную нагрузку в структуре tf.Example?