我正在尝试在GKE上部署TF服务并尝试 Build 一个高度可用的在线预测系统 . 我试图通过将多个请求一起批处理来优化延迟 . 然而,延迟似乎遭受而不是改善 .

  • 该模型是CNN,长度约为50的输入向量 .

  • TF服务在具有6个标准节点的Kubernetes集群上运行

  • 我尝试了批量5和10的批次 . 我没有使用来自TF服务的batching implementation,我只是发送了一个形状为 (batch_size, input_size) 而不是 (1, input_size) 的数组请求

我的直觉是,尽管批处理在与GPU一起使用时带来了最大的好处,但是将它与CPU一起使用不应该让它变慢 . 下面的图表说明了减速 - req / s是预测/ s,即20将被分成对服务器的4或2个请求 .

我理解这对于少量请求而言如何不会在工作负载上均匀分布工作负载 - 但即使在查看60或120时,延迟也会更高 .

知道为什么会这样吗?

chart with batch size 1

chart with batch size 5

chart with batch size 10