首页 > 解决方案 > TFLite 解释器:定义最佳线程数

问题描述

我正在运行一个量化的 TFLite 模型(在 Linux PC 中)以使用 XNNPack 后端进行推理。我知道 TFLite 模型可能会遭受高延迟的预测,我正在尝试优化其性能,将线程数定义为TFLite.Interpreter(num_threads=X).

我使用 X=[4, 6, 8, None] 进行了一些试验,最好的情况是使用 X=4,但这对我来说没有意义。它是如何定义最佳线程数的?而且,num_threads自动定义适用于多个 CPU,还是我必须使用另一个库/包?

(非常欢迎其他可以加速推理的优化!)。我使用的模型是量化的谷歌 BERT。

谢谢。

标签: pythontensorflowtensorflow2.0tensorflow-litequantization

解决方案


这取决于您的目标环境。如果目标是单核或双核机器,并且您的应用程序不允许使用多核,则应使用 num_threads=1。否则,您可能会使用更多线程来利用多个内核。

如果您的目标只有 4 个核心,则使用高于 4 的核心不会提高性能,而只会产生内存和上下文切换开销。(输入的形状也取决于操作内核的实现)

关于性能提升,通常整数运算比浮点运算快。因此,您可以优化模型以使用整数运算。 https://www.tensorflow.org/lite/performance/model_optimization

此外,如果您的目标有 GPU,您可以尝试 GPU 委托。 https://www.tensorflow.org/lite/performance/gpu


推荐阅读