转载自:NeuralTalk
作者:ai-performance
- 测试标准基于:embedded-ai.bench Spec(ADB Shell环境 benchmark公约,见后文【本次测试标准】);
- 测试框架:3个;
- 测试平台:2个。android-armv7,android-aarch64;
- 硬件后端:CPU(1/2/4线程),GPU(CL/GL/VK,若有);
- 测试模型:4个。tensorflow\_mobilenetv1、tensorflow\_mobilenetv2、caffe\_mobilenetv1、caffe\_mobilenetv2;
- 涵盖12部手机,对应SoC分别为:
- 高通骁龙系列:865/855/845/835/625/410;
- 华为麒麟系列:990/980/970/820/810;
- 三星猎户座系列:exynos5。
- 总计1153条benchmark数据;
- 具体请详见release页面assets的文件。
注:因为是CSV文件,可以用Excel表格打开。通过对【表格】->【筛选】功能,对表头筛选,进行细致分析。本次不给结论,在不同的手机上,不同框架表现不同。
https://github.com/AI-performance/embedded-ai.bench/releases
定期发布性能数据
- 网站:https://ai-performance.com/embedded-ai.bench;
- 微信:NeuralTalk:
本次测试标准
- 用同一台手机(必须同一台),在同一时间段,测试不同框架性能。因为即使相同SoC型号的同一品牌手机,性能也有不同;同一手机,在不同时间段测出的性能也可能不同;
- 非root手机测试。用root的手机测试,不保证是否有锁频或者设置性能模式,虽然数据好看稳定但不符合实际,root后对调优kernel的参考价值大于实际应用的价值;
- 亮屏测试环境【人为干预设置】。是否亮屏,对部分手机如低端骁龙型号SoC的CPU、GPU性能影响较为明显。屏幕需要保持常亮,从经验来看,亮屏、熄屏、反复点亮熄屏的瞬间,对电压带来极大变化,会造成极大性能波动,测出极快的性能不符合用户实际使用;
- 不同组之间设置时间间隔。每组测试案例,需要间隙,避免长时的测试带来温度上升降频影响结果准确率,一般设置3到5秒(本次设置的是3秒),让CPU的状态恢复;
- CPU大小核绑定,以绑定大核为主,得到稳定性能。对CPU、GPU性能都有很大影响,绑定策略通常有绑定大核、小核、不绑定。不绑定更符合APP开发者。但测试过程一般以绑定大核为主。此外也有绑定失败、抢占等情况带来性能波动;
- 电量90~100%测试。苹果在发热,低电量会降频,安卓机不同厂家在不同场景下可能规则不同,也可人为设定,但统一100%电量下测试性能;
- 测试前reboot。避免开机后,系统长时间运行带来其它进程的内存、CPU资源干扰;
- 统一模型源头。不同框架横向比较同一模型时,采用同一源头模型如caffe\_mobilenetv1、tf\_mobilenetv2、onnx\_vgg16等。排除、统一模型转换带来的冗余或不规范OP。各个端侧框架可以有自己的模型转换优化模式,但源头必须统一;
- 需提供性能耗时标准差。一般有性能在最快、最慢、平均耗时的统计,此外还需提供稳定性度量指标,即总体耗时的标准差或方差。
往期回顾
本作品采用知识共享署名-相同方式共享 4.0 通用许可协议进行许可。
欢迎关注公众号,关注模型压缩、低比特量化、移动端推理加速优化、部署。
更多嵌入式AI相关技术干货请关注嵌入式AI专栏。