Создание экземпляров или входных данных для API REST TensorFlow Serving
Я готов опробовать мой REST API TensorFlow Serving на основе сохраненной модели, и мне было интересно, есть ли простой способ генерировать экземпляры JSON (на основе строк) или входные данные (столбцы), которые мне нужно отправить с моим запросом.
У меня есть несколько тысяч функций в моей модели, и я не хотел бы вручную вводить JSON. Есть ли способ, которым я могу использовать существующие данные, чтобы получить сериализованные данные, которые я могу выдать в API прогнозирования?
Я использую TFX для всего конвейера (включая tf.Transform), поэтому я не уверен, есть ли аккуратный способ, встроенный в TFX, который я могу использовать.
Выход из saved_model_cli
это:
The given SavedModel SignatureDef contains the following input(s):
inputs['examples'] tensor_info:
dtype: DT_STRING
shape: (-1)
name: input_example_tensor:0
Что не говорит мне много.
2 ответа
Вы можете использовать клиент Python REST для программного вызова, вместо того, чтобы вручную составлять запрос. Это пример кода в github tenorflow_serving:
https://github.com/tensorflow/serving/blob/master/tensorflow_serving/example/resnet_client.py
Вы можете попробовать следующий код:
examples = []
for _, row in Inputs.iterrows():
example = tf.train.Example()
for col, value in row.iteritems():
example.features.feature[col].float_list.value.append(value)
examples.append(example)
print(examples)
Это будет JSON, как показано ниже:
[features {
feature {
key: "PetalLength"
value {
float_list {
value: 5.900000095367432
}
}
}
feature {
key: "PetalWidth"
value {
float_list {
value: 2.0999999046325684
}
}
}
feature {
key: "SepalLength"
value {
float_list {
value: 7.099999904632568
}
}
}
feature {
key: "SepalWidth"
value {
float_list {
value: 3.0
}
}
}
}
]
Затем вы можете выполнить вывод, используя следующую команду:
curl -d '{"inputs":examples}' \
-X POST http://localhost:8501/v1/models/1554294699:predict