AI Benchmark测试原理、v4测试项变化以及榜单数据解读

2024-04-01 03:58

本文主要是介绍AI Benchmark测试原理、v4测试项变化以及榜单数据解读,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

田海立@csdn 2020-10-3

AI Benchmark这里特指ETHZ(苏黎世联邦理工学院)的AI性能评测工具。最新其发布了v4版本以及基于这个版本的soc和手机AI性能数据。本文分析了AI Benchmark测试的原理,v4版本的变化,以及榜单头部海思麒麟990 5G与MTK天玑1000+的对比。据此也就能解读AI-Benchmark榜单上各个数据的含义了。

我尽量用公开的技术和客观的数据来说话,不用非公开渠道获得的信息,仅代表个人观点,不代表所服务公司态度。但有涉密或不可公开信息,会及时删除。

 

一、AI Benchmark测试相关

1. 移动端侧AI推理的碎片化

AI的发展,先是有了各家设备的私有实现,然后才有AndroidNN试图统一Android平台上端侧的推理框架。所以AI性能评测工具也就有了安兔兔、鲁大师的基于soc厂商私有sdk的实现,也就有了ETHZ基于AndroidNN的实现。安兔兔、鲁大师等起个大早赶了个晚集,AI评测领域并没有多大声音;而各soc厂商(高通、华为、MTK、紫光展锐...)却不断拿AI Benchmark说事,发布新芯片时宣传其AI性能。

2. AI Benchmark测试原理

AI Benchmark是基于AndroidNN的,所以讲AI Benchmark的原理离不开AndroidNN。先看一下,AndroidNN的框架:

See the source image

上层通过NNAPI提供API给上层使用,注意这里的API还是比较lower level的,对于不是关注AI实现的开发者来说不是很友好的。Android NN在诞生之初就不是提供给最终应用开发者的,更上层是推荐TensorFlow Lite这样的基于Model级别的ML框架的。

NN HAL定义一层NN device的抽象层,屏蔽细节,只要DSP/GPU/NPU基于NN HAL实现,NN Runtime就能基于其能力(Capabilities)来调度使用。

所以,AI Benchmark在这个生态链里,也就是应用层的概念,只是TFLite因为晚于AndroidNN集成于Android,所以TFLite是直接被打包于AI Benchmark的apk里的。

AI性能除了运行时间之外,基于数据集的精度也是一个很重要的指标。试想如果一个NN Device跑的是很快,但是丢失关键的数据结果都不对,那快又如何。所以,AI Benchmark里集成了很多的TFLite模型来分别测试CPU/INT8/FP16/FP32/INIT数据;还内置数据集测试特定测试项来评估精度数据。

 

二、AI Benchmark v4更新

前面说了v3之前的测试项,当然这也是一个变化的过程,比如性能测试是v3才加入的。

今年5月31号,AI Benchmark官方网站上公布了v4版本的变化,这里简要总结一下:

1. TFLite delegates

因为最近TFLite的变化,对Device利用Delegate机制直接做了支持,这些包括github里GPU的直接支持,也与Qualcomm合作实现了Hexagon的支持(与Samsung的合作未在TensorFlow官方发布,但AI Benchmark那里应该拿到了Samsung提供的Delegate支持)。

所以,v4版本里Qualcomm与Samsung的TFLite Delegate支持直接集成到了apk里,这两家的手机直接通过TFLite Delegate支持。

2. NNAPI-1.2

v3版本的时候,NNAPI-1.2还没正式发布,所以v3版本之前不会有NN1.2的特性。在V4版本里,针对NNAPI设计了case。

3. 并行执行

NNAPI可以看到可以有多个NN Device,这些Device是可以并行执行的。当然这里的并行也可以是不同数据类型的模型的支持。这里也有了很好的设计与实现。

4. 评分系统

这里数据集与测试模型以及测试项都有了变化,所以评分系统也有相应的变化。

不过这里,并没有详细列举测试项以及对应比值,而v3版本在其paper里是有详细描述评分标准里各个测试项所占的比重的。这里可以期待其在最新paper里公开,也或许可能不对大众开放了,仅对其合作伙伴开放。

 

三、AI Benchmark v4测试数据简要解读

AI Benchmark网站上已经发布了v4的性能数据,移动端数据包括了phone数据与soc数据。

Phone数据里采用同一soc的厂家差别都不大,所以手机厂商所做的努力有限,基本还是由soc来决定。但phone厂家的这点微小的差异也反应了各家的实力。

这里来看soc榜单

1. 执行设备

MTK/海思使用的NN device,也就是TFLite -> NNAPI -> NNHAL到NN Device这一同之前版本一样的路径;

而Qualcomm对quantized走的是Hexagon Delegate;FP类型走的是GPU Delegate。Samsung的Quantized与FP类型走的都是其Eden Delegate。

当然没有NN设备的终端,直接走的是TFLite / NNRuntime的CPU实现。

2. 类别支持的差异

分析一下头部MTK天玑1000+与海思990 5G的差异(这里只大致从官方数据分析,更详细的也不便再公开分析,再说真有这数据也不能随便给你了

记得v3最后版本的时候,海思990 5G应该是遥遥领先,但这个版本MTK天玑1000+却领先这么多。(可惜v3版本的结果没有截图,如果你有数据,麻烦给个链接)

海思990 5G对FP16做了很好的支持,而v3之前的版本FP16评分中占的比重较大,所以990 5G芯片领先于其他家。反观现在这个榜单:

CPU数据,海思990 5G略低于MTK天玑1000+,这CPU架构决定,厂家能做的有限;

量化数据,NNAPI1.1,海思990 5G略低于MTK天玑1000+,正常情况;

量化数据,NNAPI1.2,海思990 5G远低于MTK天玑1000+,这说明了对新NNAPI的支持,海思做的比起MTK很差,或根本没做支持;(感兴趣的读者,有他们家手机可以自己抓数据分析一下)

FP16数据,NNAPI1.1,海思990 5G虽然远高于MTK天玑1000+(近两倍,24964 vs 12876);而NN1.2,海思990 5G却仅与MTK天玑1000+相当,真的是NN1.2没做升级支持啊。

LSTM/RNN,MTK天玑1000+也做了更好的支持。

 

结语

本文简要分析AI Benchmark测试的原理,v4版本的变化,以及榜单头部海思990 5G与MTK天玑1000+的对比。

当然了,这个榜单高也并不能说明问题的全部,比如海思990 5G位置在v3/v4榜单的变化也说明了这类榜单并不能反应AI能力的全部。真正注重用户体验,场景做得好的话,也就不用靠这个榜单来说话了。

而这里评分标准的变化也反应了产业界对量化与浮点模型支持的趋势,虽然AI Benchmark算是学院派做的,但这一趋势反应的是产业的变化。AI趋势的引导甚至是产业界领先于学术界,谁做的好,占据了产业生态主导谁就掌握了话语权。

 

参考资源

1. AI Benchmark:All about Deep Learning on Smartphones

2. Android Neuralnetworks

3. github TensorFlow Lite

4. AI Benchmark v4:  Pushing Mobile NPUs to Their Limits

5. AI Benchmark soc ranking

6. AI tests

 

 

 

这篇关于AI Benchmark测试原理、v4测试项变化以及榜单数据解读的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/866148

相关文章

C++类和对象之默认成员函数的使用解读

《C++类和对象之默认成员函数的使用解读》:本文主要介绍C++类和对象之默认成员函数的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、默认成员函数有哪些二、各默认成员函数详解默认构造函数析构函数拷贝构造函数拷贝赋值运算符三、默认成员函数的注意事项总结一

使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)

《使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)》字体设计和矢量图形处理是编程中一个有趣且实用的领域,通过Python的matplotlib库,我们可以轻松将字体轮廓... 目录背景知识字体轮廓的表示实现步骤1. 安装依赖库2. 准备数据3. 解析路径指令4. 绘制图形关键

MySQL的ALTER TABLE命令的使用解读

《MySQL的ALTERTABLE命令的使用解读》:本文主要介绍MySQL的ALTERTABLE命令的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、查看所建表的编China编程码格式2、修改表的编码格式3、修改列队数据类型4、添加列5、修改列的位置5.1、把列

解决mysql插入数据锁等待超时报错:Lock wait timeout exceeded;try restarting transaction

《解决mysql插入数据锁等待超时报错:Lockwaittimeoutexceeded;tryrestartingtransaction》:本文主要介绍解决mysql插入数据锁等待超时报... 目录报错信息解决办法1、数据库中执行如下sql2、再到 INNODB_TRX 事务表中查看总结报错信息Lock

apache的commons-pool2原理与使用实践记录

《apache的commons-pool2原理与使用实践记录》ApacheCommonsPool2是一个高效的对象池化框架,通过复用昂贵资源(如数据库连接、线程、网络连接)优化系统性能,这篇文章主... 目录一、核心原理与组件二、使用步骤详解(以数据库连接池为例)三、高级配置与优化四、典型应用场景五、注意事

Linux CPU飙升排查五步法解读

《LinuxCPU飙升排查五步法解读》:本文主要介绍LinuxCPU飙升排查五步法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录排查思路-五步法1. top命令定位应用进程pid2.php top-Hp[pid]定位应用进程对应的线程tid3. printf"%

使用C#删除Excel表格中的重复行数据的代码详解

《使用C#删除Excel表格中的重复行数据的代码详解》重复行是指在Excel表格中完全相同的多行数据,删除这些重复行至关重要,因为它们不仅会干扰数据分析,还可能导致错误的决策和结论,所以本文给大家介绍... 目录简介使用工具C# 删除Excel工作表中的重复行语法工作原理实现代码C# 删除指定Excel单元

Linux lvm实例之如何创建一个专用于MySQL数据存储的LVM卷组

《Linuxlvm实例之如何创建一个专用于MySQL数据存储的LVM卷组》:本文主要介绍使用Linux创建一个专用于MySQL数据存储的LVM卷组的实例,具有很好的参考价值,希望对大家有所帮助,... 目录在Centos 7上创建卷China编程组并配置mysql数据目录1. 检查现有磁盘2. 创建物理卷3. 创

Nacos日志与Raft的数据清理指南

《Nacos日志与Raft的数据清理指南》随着运行时间的增长,Nacos的日志文件(logs/)和Raft持久化数据(data/protocol/raft/)可能会占用大量磁盘空间,影响系统稳定性,本... 目录引言1. Nacos 日志文件(logs/ 目录)清理1.1 日志文件的作用1.2 是否可以删除

使用Python获取JS加载的数据的多种实现方法

《使用Python获取JS加载的数据的多种实现方法》在当今的互联网时代,网页数据的动态加载已经成为一种常见的技术手段,许多现代网站通过JavaScript(JS)动态加载内容,这使得传统的静态网页爬取... 目录引言一、动态 网页与js加载数据的原理二、python爬取JS加载数据的方法(一)分析网络请求1