我正在运行一个量化的TFLite模型(在Linux中),用于使用XNNPack后端进行推理。我意识到TFLite模型可能会遭受预测的高延迟,我正在尝试通过定义TFLite.Interpreter(num_threads=X)的线程数量来优化它的性能。
我使用X=4,6,8,None进行了一些试验,最好的方案是使用X=4,但这对我来说没有意义。如何定义最优线程数?更重要的是,定义num_threads自动与多个CPU一起工作,或者我必须使用另一个库/包吗?
(我们非常欢迎其他可以加快推理速度的优化!)我使用的模型是一个量化的google BERT。
谢谢。
发布于 2021-07-08 14:37:42
这取决于您的目标环境。如果目标是单核或双核机器,并且不允许您的应用程序使用多核,则应使用num_threads=1。否则,您可能会使用更多线程来利用多核。
如果您的目标只有4个内核,那么使用大于4的内核不会带来性能提升,而只会带来内存和上下文切换开销。(输入的形状也取决于op内核的实现)
在性能改进方面,整数运算通常比浮点数更快。所以你可以优化你的模型来使用整数运算。https://www.tensorflow.org/lite/performance/model_optimization
另外,如果你的目标有GPU,你可以尝试GPU委派。https://www.tensorflow.org/lite/performance/gpu
https://stackoverflow.com/questions/68275576
复制相似问题