首页 > 解决方案 > 如何(在运行时)确定 TensorFlow Lite 是否使用 GPU?

问题描述

我有没有办法确保或至少在运行时确定在使用 TensorFlow Lite 库时使用了正确的加速器(CPU、GPU)?

尽管我遵循了指南,并将Interpreter.Options()对象设置为在具有 GPU(三星 S9)的设备上使用 GPU 委托,但在某些情况下它很可能会使用 CPU。例如,如果您使用带有默认委托选项对象的量化模型,它将默认使用 CPU,因为quantizedModelsAllowed设置为 false。我几乎可以肯定,即使传递给解释器的选项对象有一个GPUDelegate,而是使用了 CPU。不幸的是,我不得不根据推理速度和准确性进行猜测。

没有警告,我只是注意到推理时间变慢并提高了准确性(因为在我的情况下,GPU 的行为很奇怪,给了我错误的值,我试图找出原因作为一个单独的问题)。目前,我必须猜测是否正在使用 GPU/CPU,并做出相应的反应。现在,我认为还有其他类似的情况会退回到 CPU,但我不想猜测。


我听说过 AGI(Android GPU Inspector),它目前只支持 3 像素设备。使用它来查看 GPU 在分析器中的使用会很好。我也试过三星的 GPUWatch,这根本不起作用(在 OpenGL 和 Vulkan 上),因为我的应用程序不使用这些 API 中的任何一个(它不渲染东西,它使用 tensorflow!)。

标签: androidtensorflow-lite

解决方案


使用基准工具后,我将把结果放在这里:

首先,您可以看到没有 XNNPack 的 CPU 使用率模型: 在此处输入图像描述

第二个带有 XNNPack 的 CPU 模型: 在此处输入图像描述

第三个使用 GPU 的模型!!!!!!: 在此处输入图像描述

最后是 Hexagon 或 NNAPI 委托: 在此处输入图像描述

如您所见,模型是由 GPU 处理的。我还使用了 2 部随机选择的手机。如果你想要任何特定的设备,请告诉我。最后,您可以从这里下载基准工具的所有结果。


推荐阅读