3

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

  • 该模型是一个 CNN,长度约为 50 的输入向量。
  • TF Serving 在具有 6 个标准节点的 Kubernetes 集群上运行
  • 我尝试了大小为 5 和 10 的批次。我没有使用 TF Serving 的批处理实现,我只是发送了一个带有形状数组的请求,(batch_size, input_size)而不是(1, input_size)

我的直觉是,即使批处理在与 GPU 一起使用以使用其吞吐量时带来最大的好处,但与 CPU 一起使用不应使其变慢。减速如下图所示 - req/s 是相当预测/s 即 20 将分为 4 个或 2 个对服务器的请求。

我理解这不会将工作负载均匀地分布在集群上以获得较少数量的请求 - 但即使在查看 60 或 120 时,延迟也会更高。

知道为什么会这样吗?

批量大小为 1 的图表

批量大小为 5 的图表

批量大小为 10 的图表

4

0 回答 0