android - 如何(在运行时)确定 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!)。
解决方案
使用基准工具后,我将把结果放在这里:
首先,您可以看到没有 XNNPack 的 CPU 使用率模型:
如您所见,模型是由 GPU 处理的。我还使用了 2 部随机选择的手机。如果你想要任何特定的设备,请告诉我。最后,您可以从这里下载基准工具的所有结果。
推荐阅读
- python - Python - 如何打开 n 个不同的 json 文件并追加。一次
- java - 春季配置@RefreshScope
- swift - 我的 ViewController 中的侦听器到我的自定义 Cocoapod 类 - Swift
- javascript - NG-ZORRO 滑块 Angular 7
- javascript - 使用来自asp.net gridview函数的jquery的客户端搜索文本框不起作用
- tensorflow - 如何在 TF 对象检测 API 中指定要“微调”的层?
- machine-learning - 在模型中查找重要的预测变量
- vue.js - 使用 vue js 首次单击时 bootstrap 4 模态不会打开
- mysql - Grafana 变量 MySQL
- java - 手动删除 Tomcat 中 ServletContext(应用程序范围)的属性