Paddle-Lite
Paddle-Lite copied to clipboard
经过静态量化后性能却由150ms变为250ms
- 版本、环境信息: 1)Paddle Lite 版本:v2.11 2)Host 环境:Ubuntu 18.04 -问题信息如下: apu_question.zip
- 模型信息 1)模型名称:yolo -描述: 使用Android nnapi方式,使用静态量化以后性能下降
您好,我们已经收到了您的问题,会安排技术人员尽快解答您的问题,请耐心等待。请您再次检查是否提供了清晰的问题描述、复现代码、环境&版本、报错信息等。同时,您也可以通过查看官网文档、常见问题、历史Issue来寻求解答。祝您生活愉快~
Hi! We've received your issue and please be patient to get responded. We will arrange technicians to answer your questions as soon as possible. Please make sure that you have posted enough message to demo your request. You may also check out the API,FAQ and Github Issue to get the answer.Have a nice day!
是否能提供量化前和量化后的原始paddle模型?我们在 MTK 手机上验证下。
inference_model.zip 压缩包中含有经过x2paddle转换后的模型(三个model.*文件)、一个经过静态量化和动态量化的模型static_apu_int8.nb
inference_model.zip 压缩包中含有经过x2paddle转换后的模型(三个model.*文件)、一个经过静态量化和动态量化的模型static_apu_int8.nb
我看压缩包内只有fp32的原始paddle模型,是否能额外提供静态离线后量化的paddle模型?(不是paddlelite的nb模型)
@yingshengBD 关注下
paddle_static.zip 静态量化脚本以及静态量化后的模型@hong19860320@yingshengBD
好的,我们明天看下能不能复现
paddlepaddle 2.2.0 paddleslim 2.0.0 @hong19860320 有没有可能微信或者其他方式交流?这里沟通效率太低了。
paddlepaddle 2.2.0 paddleslim 2.0.0 @hong19860320 有没有可能微信或者其他方式交流?这里沟通效率太低了。
github 主页有微信公众号,然后让她拉你进微信群。
你提供下微信号,我直接拉你进群
yangda737003898
我们在红米10X(MT6875 Dimensity 820 5G)上复现了类似结果:
模型 | Lite CPU 性能(ms) | Lite+NNAPI 性能(ms) |
---|---|---|
float | 176.267 | 40.435 |
int8 | 94.307 | 55.853 |
log 文件log.zip
从结果上看,在 NNAPI 在 float 和 int8 模型上比 CPU 性能好,但 NNAPI 在 float 和 int8 的性能出现不符合预期的效果,理论上 int8 的性能要比 float 性能好,目前猜测出现该问题的原因有几点:1)MTK 的 NNAPI HAL 在遇到 float32 模型时,可能会放在 GPU 上运行,而 int8 模型放在 DSP 上执行,DSP 的算力没有 GPU 算力高 2)模型中部分算子在 DSP 上执行效率比较低,例如 conv2d_transpose,可以尝试去掉该算子试试。
按照这个逻辑,NNAPI的接口是走的GPU,不会走APU吗
按照这个逻辑,NNAPI的接口是走的GPU,不会走APU吗
我理解 APU 是 CPU+GPU+DSP 的统称,模型具体跑在哪个运算单元上,得问问 MTK 的同学。
通过在设备端添加如下命令开启 APU profiling 功能:
$ setprop debug.nn.profiler.supported 1 $ setprop debug.nn.partitionext.type OPERATION
fp32模型和int8 模型可以分别得到如下的 log:
fp32
07-20 01:56:39.726 21105 21105 I NeuroEaraMgr: [notifyExecutionEnd] step0 @UNKNOWN, execTime:736, minExecTime:782 (MTag_514693535616) 07-20 01:56:39.726 21105 21105 I NeuroEaraMgr: [notifyExecutionEnd] step1 @MDLA, execTime:3558, minExecTime:3860 (MTag_514693535616) 07-20 01:56:39.726 21105 21105 I NeuroEaraMgr: [notifyExecutionEnd] step2 @GPU, execTime:9482, minExecTime:9690 (MTag_514693535616)
int8
07-20 01:50:01.590 21105 21105 I NeuroEaraMgr: [notifyExecutionEnd] step0 @UNKNOWN, execTime:8, minExecTime:7 (MTag_515000231488) 07-20 01:50:01.590 21105 21105 I NeuroEaraMgr: [notifyExecutionEnd] step1 @CPU, execTime:60, minExecTime:63 (MTag_515000231488) 07-20 01:50:01.590 21105 21105 I NeuroEaraMgr: [notifyExecutionEnd] step2 @MDLA, execTime:1295, minExecTime:1261 (MTag_515000231488) 07-20 01:50:01.590 21105 21105 I NeuroEaraMgr: [notifyExecutionEnd] step3 @VPU, execTime:13911000, minExecTime:15033250 (MTag_515000231488)
可以证明,fp32模型确实跑在 GPU 上,而int8模型跑在 VPU 上。
大佬们,看看我的报错好不好。目前没有受让人呢QAQ。https://github.com/PaddlePaddle/Paddle-Lite/issues/9262
#9262 还是你催得花哨doge,我在那边回复