使用int8量化模型进行评测,结果感觉不太合理,不知道是什么问题。ncnn使用最新发布版本20200226。
看到issue里面量化速度问题比较普遍,不知道是否有解。https://github.com/Tencent/ncnn/issues/1562
测试手机redminote8pro(G90T CPU部分由2个ARM Cortex-A76大核和6个Cortex-A55小核组成,GPU方面搭载了ARM Mali-G76 MC4)。
测试1:将benchmark目录下所有模型push到android机器测试:
./benchncnn 8 2 0
loop_count = 8
num_threads = 2
powersave = 0
gpu_device = -1
cooling_down = 1
squeezenet min = 20.98 max = 21.72 avg = 21.27
squeezenet_int8 min = 35.29 max = 36.91 avg = 36.03
mobilenet min = 32.87 max = 33.68 avg = 33.16
mobilenet_int8 min = 84.55 max = 85.94 avg = 85.42
mobilenet_v2 min = 24.00 max = 25.39 avg = 24.58
mobilenet_v3 min = 20.43 max = 21.37 avg = 20.76
shufflenet min = 15.03 max = 16.45 avg = 15.81
shufflenet_v2 min = 12.75 max = 13.37 avg = 13.08
mnasnet min = 23.26 max = 23.84 avg = 23.53
proxylessnasnet min = 26.21 max = 27.39 avg = 26.70
googlenet min = 73.78 max = 88.44 avg = 78.46
googlenet_int8 min = 122.91 max = 126.85 avg = 124.20
resnet18 min = 67.84 max = 70.15 avg = 68.55
resnet18_int8 min = 92.64 max = 94.56 avg = 93.30
alexnet min = 69.03 max = 74.19 avg = 70.58
vgg16 min = 330.70 max = 338.08 avg = 333.95
vgg16_int8 min = 537.72 max = 556.10 avg = 545.69
resnet50 min = 178.27 max = 191.41 avg = 181.29
resnet50_int8 min = 291.39 max = 298.49 avg = 294.69
可以看到量化后的速度明显变慢,而且是所有模型都变慢。这一测试结果和bencnmark页面测试结果有较大出入(当然处理器型号不同情况下)
测试2:将几个人脸检测模型push到andorid手机直接运行和人脸工程中运行,测试时间差别很大(运行配置默认或按照benchmark中设定差不多,直接安卓手机运行的参数和图片数据为随机数据,应用中数据和参数为真实数据):
a. 直接安卓手机运行
benchncnn 16 2 0
slim_320 min = 8.49 max = 10.00 avg = 9.00
slim_320-int8 min = 22.94 max = 24.26 avg = 23.44
RFB-320 min = 11.68 max = 13.06 avg = 12.30
b.人脸安卓应用中运行
slim_320 ave=31
slim_320-int8 ave=40
RFB-320 ave=40
@dreadlord1984 那个benchmark很久没有更新了,最近这半年ncnn的float32进行了大幅度优化,所以fp32是int8更快了。另外由于redmi note 8 pro是armv8.2的新CPU,需要使用新的int8 dot指令集才有加速效果。
@dreadlord1984 那个benchmark很久没有更新了,最近这半年ncnn的float32进行了大幅度优化,所以fp32是int8更快了。另外由于redmi note 8 pro是armv8.2的新CPU,需要使用新的int8 dot指令集才有加速效果。
哇。回复好迅速啊。原来是这样啊。那就是说现在情况下fp32比int8快是个正常情况了? 至于新cpu的指令集问题,一时半会儿应该不会更新吧。现在的手机迭代这么快,就是说有一部分手机注定没法被快速适配了吧
@dreadlord1984 虽然进展缓慢,但是社区的小伙伴在持续开展
@dreadlord1984 虽然进展缓慢,但是社区的小伙伴在持续开展
👍 了解了,非常感谢啊。 在量化benchmark那个页面是不是可以写点提示说明,避免有些人像我一样捣鼓到最后还是要求助于开发者确认。
@BUG1989
多谢大佬们坚持不懈的更新优化,请问一下转换成float16之后,模型inference速度跟float32相比也会慢吗???
@dreadlord1984 最近这半年ncnn的float32进行了大幅度优化,主要体现在什么优化上面,指令集吗,我看int8也都用了NEON指令集优化
Most helpful comment
@dreadlord1984 虽然进展缓慢,但是社区的小伙伴在持续开展