【问题标题】:Tensorflow Serving with XLATensorFlow 服务与 XLA
【发布时间】:2019-02-13 13:28:56
【问题描述】:

是否可以在使用 Tensorflow Serving 进行推理时启用 XLA 编译?

(我希望这只是未记录的配置问题,并且我可以避免实现自定义 Servable)。

【问题讨论】:

  • 在 tensorflow 服务源中提到了 XLA。它仍然依赖于 tensorflow,所以如果你从源代码编译它,它会获取 tensorflow 源代码,先编译它,然后再编译服务。我会尝试从源代码构建并尝试使用 XLA 优化模型。如果失败,您可能需要与 Bazel 一起玩,以便您负责构建选项。
  • 我看到预热 protobuf 中提到了 XLA,这是有道理的,因为您希望在服务生产流量之前完成 JIT。据我了解,XLA 提前编译仅适用于移动目标。对于正常的 GPU XLA 加速,您需要使用 TF 会话 ConfigProto (graph_options.optimizer_options.global_jit_level) 打开它,但在 Tensorflow Serving 的情况下,我只提交冻结的图形定义。我无权访问框内的会话。
  • 你明白了吗?
  • 不。我最终改用了 Nvidia 的 TensorRT 推理服务器。

标签: tensorflow-serving tensorflow-xla


【解决方案1】:

@njs,

实际上不建议在推理过程中进行编译。推理时的编译会导致 HBM 内存不足,导致芯片无法服务请求。

推荐的解决方案是:

  1. 使用具有允许批处理大小的批处理函数来限制运行时的编译次数。

  2. 在模型加载时而不是推理时针对这些允许的批量大小进行所有编译。这样一来,您的模型就可以在加载后立即进行推理,而不是在推理时进行高延迟编译。

【讨论】:

  • 为什么在训练过程中不会出现 HBM 的内存不足?
猜你喜欢
  • 1970-01-01
  • 2020-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-16
  • 2017-03-05
  • 2019-12-20
相关资源
最近更新 更多