使用XLA的Tensorflow Serving

3

在Tensorflow Serving中进行推断时启用XLA编译是否可能?

(我希望这只是一些未记录的配置,而不需要实现自定义Servable。)


在TensorFlow Serving源代码中提到了XLA。它仍然依赖于TensorFlow,因此如果您从源代码编译它,它会先获取TensorFlow源代码并进行编译,然后再编译Serving。我建议您尝试直接从源代码构建,并使用XLA优化模型进行测试。如果失败了,您可能需要使用Bazel进行调整,以便您可以控制构建选项。 - clstl
我在预热的protobuf中看到了XLA的提及,这是有道理的,因为你希望JIT在服务生产流量之前完成。据我所知,XLA预编译仅适用于移动目标。对于普通GPU XLA加速,您需要使用TF会话ConfigProto(graph_options.optimizer_options.global_jit_level)打开它,但在Tensorflow Serving的情况下,我只传入一个冻结的图表定义。我无法在盒子内访问会话。 - njs
你解决了吗? - Andy Cheung
不,我最终转而使用Nvidia的TensorRT推理服务器。 - njs
1个回答

1

@njs,

不建议在推理过程中进行编译。推理时间的编译会导致HBM内存不足,使芯片无法处理请求。

推荐的解决方案是:

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

  2. 将这些允许的批处理大小的所有编译都放在模型加载时间而不是推理时间进行。这样,在加载后您的模型就准备好进行推理,而不是在推理时间经历高延迟的编译过程。


为什么在训练过程中没有出现HBM内存不足的情况? - Xiaolin Wu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接