我有一个小型Web服务器,它根据句子获取输入,并需要使用Tensorflow服务返回模型预测。它使用我们的单GPU能够很好地工作,但是现在我希望启用批处理,以便Tensorflow Serving在GPU上一次处理它们之前等待输入的句子。在Tensorflow服务中调试批处理(没有观察到效果)
我使用predesigned server framework与predesigned batching framework使用Tensorflow服务的初始版本。我使用--batching
标志启用批处理,并设置了batch_timeout_micros = 10000
和max_batch_size = 1000
。日志记录确认批处理已启用并且正在使用GPU。
但是,向服务器发送请求时,批处理的影响很小。在发送5个请求的同时,发送50个请求的时间几乎是线性的。有趣的是,服务器的predict()
函数针对每个请求运行一次(请参阅here),这表明批处理没有得到正确处理。
我错过了什么吗?如何检查批次的问题?
注意,这是从How to do batching in Tensorflow Serving?不同,因为这个问题只检查如何从一个客户端发送多个请求,而不是如何让Tensorflow服务的幕后的配料为多个独立的请求。