gpt4 book ai didi

tensorflow - 为什么 TensorFlow Lite 比桌面版 TensorFlow 慢?

转载 作者:行者123 更新时间:2023-12-04 22:39:31 32 4
gpt4 key购买 nike

我目前正在研究单图像超分辨率,并且我设法卡住了现有的检查点文件并将其转换为 tensorflow lite。但是,使用 .tflite 文件执行推理时,对一张图像进行上采样所需的时间至少是使用 .ckpt 文件恢复模型时的 4 倍。

使用 .ckpt 文件的推理是使用 session.run() 完成的,而使用 .tflite 文件的推理是使用interpreter.invoke() 完成的。这两项操作都是在典型 PC 上运行的 Ubuntu 18 VM 上完成的。

我为了解有关该问题的更多信息所做的是运行 top在单独的终端中查看执行任一操作时的 CPU 利用率。 .ckpt 文件的利用率达到 270%,但 .tflite 文件的利用率保持在 100% 左右。

interpreter.set_tensor(input_details[0]['index'], input_image_reshaped)
interpreter.set_tensor(input_details[1]['index'], input_bicubic_image_reshaped)
start = time.time()
interpreter.invoke()
end = time.time()

对比
y = self.sess.run(self.y_, feed_dict={self.x: image.reshape(1, image.shape[0], image.shape[1], ch), self.x2: bicubic_image.reshape(1, self.scale * image.shape[0], self.scale * image.shape[1], ch), self.dropout: 1.0, self.is_training: 0})

一个假设是 tensorflow lite 没有配置为多线程,另一个假设是 tensorflow lite 针对 ARM 处理器(而不是我的计算机运行的英特尔处理器)进行了优化,因此速度较慢。但是,我不能确定,我也不知道如何追踪问题的根源 - 希望那里的人会对此有更多的了解?

最佳答案

是的,当前的 TensorFlow Lite 运算内核针对 ARM 处理器进行了优化(使用 NEON 指令集)。
如果 SSE 可用,它将尝试使用 NEON_2_SSE使 NEON 调用适应 SSE,因此它应该仍然使用某种 SIMD 运行。然而,我们并没有花太多精力来优化这个代码路径。

关于线程数。有一个SetNumThreads C++ API 中的函数,但它还没有在 Python API 中公开。如果未设置,底层实现可能会尝试探测可用内核的数量。如果您自己构建代码,您可以尝试更改该值,看看它是否会影响结果。

希望这些有所帮助。

关于tensorflow - 为什么 TensorFlow Lite 比桌面版 TensorFlow 慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54093424/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com