首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tensorflow Lite Android: GPU委托和NNAPI委托都比CPU慢

Tensorflow Lite Android: GPU委托和NNAPI委托都比CPU慢
EN

Stack Overflow用户
提问于 2022-07-26 15:01:58
回答 1查看 343关注 0票数 0

我目前正在评估和比较一些tensorflow模型在不同智能手机上的性能。我正在测试MNIST和CIFAR10数据库。奇怪的是,当我试图用硬件加速来加快推理时间时,它们的表现总是比以前差。例如,这些是我在Galaxy Note 20 Ultra上获得的结果,它肯定有一些功能强大的GPU和NPU(每个推断的结果都是毫秒):

MNIST : 0.040

MNIST GPU: 2.322

MNIST NNAPI: 2.839

CIFAR10 CPU: 0.810

CIFAR10 GPU: 8.120

CIFAR10 NNAPI: 6.608

我在基准测试之前对处理单元进行了热身,并多次执行推理,因此这些都是平均值,不应该是随机的。下面可以看到用于配置TensorFlow-Lite的NNAPI或GPU的代码:

代码语言:javascript
复制
val model = loadModelFile(assetManager, modelPath)
val compatList = CompatibilityList()
var nnApiDelegate: NnApiDelegate? = null

val options = Interpreter.Options().apply{
    if (USE_NNAPI && Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
        nnApiDelegate = NnApiDelegate()
        this.addDelegate(nnApiDelegate)
    }
    else if(USE_GPU && compatList.isDelegateSupportedOnThisDevice){
        val delegateOptions = compatList.bestOptionsForThisDevice
        this.addDelegate(GpuDelegate(delegateOptions))
    } else {
        // if the GPU is not supported, run on 4 threads
        this.setNumThreads(4)
    }
}

val interpreters = Interpreter(model, options)

有谁知道这是什么原因或者如何解决的?谢谢你提供任何提示或线索!

编辑:输入大小MNIST: 24 x 24 x 255输入大小CIFAR10: 32 x 32 x 3 x 255

我通过测量在设备上执行一次推理的时间来测量推理次数,然后计算出之后的平均值。

EN

回答 1

Stack Overflow用户

发布于 2022-08-10 00:03:31

这两种模型在CPU上的表现似乎都很好,推理延迟< 1ms。

加速器并不总是比CPU快。通常,当访问加速器时会有一些开销。另外,加速器可以很好地运行某些模型/操作符,但它们可能不支持CPU支持的所有操作符。此外,如果模型的性能是内存绑定的,那么CPU可能会很快甚至更快。

可能值得尝试一些更大的视觉模型,例如mobilenet_v1_1.0_224,看看是否有加速与GPU或其他加速器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73125716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档