我目前正在处理以可扩展方式服务我的Tensorflow模型的挑战。据我所知,推荐的解决方案是使用标准的Tensorflow Modelserver。这个常见的要求很好地解决了 - 但我想要更多。我想通过解析诸如" limit"之类的参数来定义顶部n logits probabilite以返回的参数来减少传输的数据量。
。在研究期间,我确定了以下解决方案:
1(在模型构建过程中创建一个更高级的SignatureDef。
2(自定义具有上述功能的基本张量/服务项目。
3(使用标准的张量型模型服务器为模型提供模型,并建立后处理服务以重组resp。以预定义的方式过滤结果。
有人比我更有经验的人可以详细介绍我的问题吗? - codesnippets或链接将很棒。
预先感谢。
您的解决方案编号3,
"使用标准Tensorflow Modelver为模型服务并构建一个 重组的后处理服务。过滤结果 预定义的方式。"
应该是最好的。
和客户端代码的链接是https://github.com/tensorflow/serving/blob/87e32bbb386f156fe208df6333333c1a7f489b57464e1/tensorflow_servod_serving_serving_serving/example/example/example/mnist_client.pleient.py.py。
如果我们想要top-n预测的值,我们可以调整函数的代码,在客户端文件中的 _create_rpc_callback
,如下所示。
def _create_rpc_callback(label, result_counter):
"""Creates RPC callback function.
Args:
label: The correct label for the predicted example.
result_counter: Counter for the prediction result.
Returns:
The callback function.
"""
def _callback(result_future):
"""Callback function.
Calculates the statistics for the prediction result.
Args:
result_future: Result future of the RPC.
"""
exception = result_future.exception()
if exception:
result_counter.inc_error()
print(exception)
else:
sys.stdout.write('.')
sys.stdout.flush()
response = numpy.array(result_future.result().outputs['scores'].float_val)
print('Top 4 responses = ', response[0:4])
最后一行中的print
语句将打印top-4预测。