一、参考资料

TOPS(处理器运算能力单位)
芯片的算力到底有什么用?算力是怎么评估的?
NPU架构与算力分析

二、相关介绍

1. FLOPS

FLOPS(floating-point operations per second)表示“每秒所执行的浮点运算次数”。它常被用来估算电脑的执行效能,尤其是在使用到大量浮点运算的科学计算领域中。正因为FLOPS字尾的那个S,代表秒,而不是复数,所以不能省略掉。

1.1 FLOPS换算

1PFLOPS=1024TFLOPS1TFLOPS=1024GFLOPS1GFLOPS=1024MFLOPS

一个MFLOPS(megaFLOPS)等于每秒一百万(=10^6)次的浮点运算;

一个GFLOPS(gigaFLOPS)等于每秒十亿(=10^9)次的浮点运算;

一个TFLOPS(teraFLOPS)等于每秒一万亿(=10^12)次的浮点运算;

一个PFLOPS(petaFLOPS)等于每秒一千万亿(=10^15)次的浮点运算;

2. TOPS

TOPS(Tera Operations Per Second)表示”每秒操作次数“,1TOPS代表处理器每秒钟可进行一万亿次(10^12)操作。

3. OPS与FLOPS

OPS是操作数量,FLOPS为浮点操作数量,通常情况下,FLOPS比OPS稍大。如果按照FP16衡量标准,两者可近似于相等。

传统的GPU采用GFLOPS,NPU的时代为了支持AI计算,采用TOPS。

4. 算力

算力是芯片单位时间里处理数据的能力,算力越高,单位时间里处理的数据量越大。简单理解,算力就是芯片解决某一个领域问题时单位时间内所能计算的次数。

第一是是算力可以用客观的数据去衡量,比如说常见的 GFLOPS 也就是每秒十亿/十亿(109)次的浮点运算) , TFLOPS 则是等于每秒一兆/一万亿(1012)次的浮点运算,PFLOPS(petaFLOPS)等于每秒一千兆/一千万亿(1015)次的浮点运算;

第二则是算力限定了领域,不同类型的芯片有自己侧重的场景,没必要跨领域对比,不同测试方法的结果也不太能直接横向对比。

所以要确定不同精度算力的性能,需通过各自领域内的专用测试程序来测试:比如说测超算有 Linpack 主要考察平台的双精度浮点算力;测人工智能应用性能的 Resnet-50 更看重的是半精度算力。

4.1 AI芯片算力

低标准下的高算力是比不上高标准下的低算力的,比如INT4标准下的100TOPS算力是要远弱于INT8标准下的90TOPS的。高标准下高算力,才能称之为强算力芯片。

评估AI芯片算力的常见单位是OPS,意为每秒执行的操作(operation)数量。不同于CPU和GPU等通用处理器,在单个时钟周期下的可执行操作数量很低;AI芯片通过设计特殊的计算单元,实现了超高的操作数量。

例如谷歌的初代TPU,其256×256的脉动阵列,在单个时钟周期下可执行65536个操作数量。由于其乘法单元是8bit的,主频700MHz,故算力为int8@65536x(1+1)700MHz=92Tops。其中1+1分别代表1次加法操作和1次乘法操作。

4.2 自动驾驶领域的算力



Orin芯片

蔚来汽车,其首款轿车ET7宣布,该车型搭载4颗英伟达Orin芯片,其制造工艺竟然达到7nm,总算力甚至高达1016TOPS。蔚来CEO李斌还断言,未来高端智能电动汽车新的定义标准为马力和算力。

而当下热门特斯拉FSD ,采用的制造工艺为14nm,其算力为144TOPS。两家主机厂不同产品的算法相差接近10倍,可想而知算力的竞赛有多激烈。蔚来CEO李斌还断言,未来高端智能电动汽车新的定义标准为马力算力

华山二号A1000芯片

黑芝麻智能发布的华山二号A1000系列,这款自动驾驶计算芯片已经正式通过AEC-Q100 Grade 2级别的车规认证。

黑芝麻智能发布的华山二号A1000系列,这款自动驾驶计算芯片已经正式通过AEC-Q100 Grade 2级别的车规认证。

4.3 手机领域的算力

芯片名称芯片类型衡量标准算力
华为麒麟9804.2TOPS
华为麒麟9701.92TOPS
芯片名称芯片类型衡量标准算力
OPPO MariSilicon XNPUINT818TOPS
芯片名称芯片类型衡量标准算力
苹果A15INT815.8TOPS
苹果A14INT811TOPS
苹果A13INT86TOPS
苹果A12INT85TOPS
芯片名称芯片类型衡量标准算力
骁龙888INT826TOPFS
骁龙870INT815TOPFS
骁龙865INT815TOPFS
骁龙855INT87TOPFS
骁龙8 Gen1芯片INT86TOPFS
芯片名称芯片类型衡量标准算力
联发科天玑120015TOPFS
联发科天玑10004.5TOPFS

骁龙888、苹果A15都是系统级的芯片。

除开自动驾驶,深度学习在手机拍照方面先行者Google也有很多探索,Google在2017年的Pixel 2就加入了Pixel Visual Core,PVC严格的说只能算是特殊领域专属架构(Domain-Specific Architecture)的ISP,但还不能算是NPU(Neural Processing Unit 神经网络处理器),直到2019年的Pixel 4搭载的Pixel Neural Core才能算是真正的神经网络处理器。

OPPO的马里亚纳X(MariSillicon X)是全球首个移动端6nm影像专用NPU,拥有出色的AI算力和超高的能效比,在INT8标准下,MariSilicon X的算力达到了18TOPS,超过了苹果A15芯片,是目前已经公布的INT8量化标准下的手机NPU算力最高的,是行业共识的INT8标准下的的第一算力。而应用到实际场景下的能效,每瓦性能也达到了11.6TOPS,这基本也是手机NPU能效的里程碑了。

马里亚纳X不同于骁龙Gen 1或者天机9000那样SoC片上内置NPU ,而是一个整合NPU和ISP(Image Signal Processor 图像信号处理器)功能的独立芯片。和Pixel Neural Core比较类似,这个芯片位于SoC的前端,在CMOS和SoC之间,这样图片数据在进入SoC之前就可以进行预处理。

马里亚纳X的ISP部分率先支持20bit的超高动态范围,而高通骁龙8 Gen 1和天玑9000都仅能支持18Bit,20Bit相比18Bit有更高的画面宽容度,此外Find X5 Pro的RGBW像素传感器的RGB和W分隔处理也是由ISP完成。

ISP初步处理好的数据再通过NPU进行降噪和HDR处理,提升画面的高感和宽容度表现(具体的方式应该和前面提及Google HDR算法差不多)。并且进行这个HDR处理的并不只是针对的单帧照片,不能等待拍摄完再慢悠悠转圈圈,而是需要实时处理4K30的超高清视频,有更高的实时性需求。

骁龙888的内置NPU 4K处理性能只有2FPS,基本是幻灯片级别。而在使用马里亚纳X的NPU之后,40FPS的性能就可以满足实时处理4K30视频HDR的性能需要。

能够实现4K30的实时HDR处理,是需要由马里亚纳X高达18 TOPS的INT8精度的算力来支撑的。

马里亚纳X有18TOPS的INT8算力,是明显高于前面介绍Google Tensor的5.7 TOPS,也要高于iPhone 13搭载A15的15.8 TOPS,骁龙8 Gen1和天玑9000的INT 8性能数据官方并没明确说明,这里就不做比较。但马里亚纳X同SoC内的NPU并不是抢占或者排他关系,而是可以分工负责流程处理不同的阶段,达成合作共赢。

除开马里亚纳X,其他手机或者独立芯片设计公司发布的NPU或ISP也都会宣告算力数据。无论是开发人员还是用户,面对算力数据的时候要有量化指标,一般是INT8或者INT16,少部分会使用INT4,实际上我们看全球大多数芯片公司的宣发,绝大多数会采用INT8或者INT16量作为指标。因为INT4算正负标识只能表示-8到7的整数,不算则是0-15的整数,能够实现的精度和范围太低,在神经网络中使用有比较大的限制,即使可以转到更小的神经网络也会有性能损失。

手机同车机的NPU虽然在架构方面差不多,但在具体需求上还是有不同:车机的NPU由于供电和散热都有更大冗余,对于功耗控制就没有敏感,就可以用相对落后的工艺,比如前面说的Tesla的FSD和海思的MC810都是采用的14/16nm工艺;而手机对于功耗也更为敏感,在马里亚纳X是采用的台积电先进6nm工艺。TSMC N6是N7节点的改良工艺,相比14/16nm在相同性能的情况,功耗大概要低上2/3。

N6先进工艺加持再加上专用电路的效率优势,使用马里亚纳X功耗仅为传统芯片的47%,再考虑20倍的性能差距,马里亚纳X有接近骁龙888的内置NPU的50倍效能比。更高的 FPS可以提供更为流畅的预览和拍摄性能,更高的效能比可以大幅降低手机拍摄时候的发热和电力消耗,这些改变都是可以大幅提升用户拍摄时候的使用体验的。

流片

OPPO的产品经理曾经介绍马里亚纳X的台积电6nm工艺流片费用超过人民币一亿元,流片的意思是将芯片生产全要素流程完整走一遍的试生产,如果不顺利需要反复调整这个成本还会更高,之前华为海思9000作为5nm首发试验的流片费用传说更是高达3亿。所以OPPO刚刚宣布要给TSMC下1000万片的订单,有效降低单片成本。而且马里亚纳X并不像有些厂商的“自主研发芯片”更像是贴牌冠名,马里亚纳X从芯片IP设计到算法,都是依靠自己组建的团队完全自主一步一步踏踏实实的走出来的,再加上量产封装测试的成本,马里亚纳X早期成本是非常贵的。另外,之前和他们聊的时候,听说早期他们本来采用的是12nm工艺的方案,后来觉得没啥用,做出来的时候SOC都可能进化到4nm甚至更先进了,所以下决心直接从6nm出发。

马里亚纳X的定位是影像专用NPU,特殊领域专属架构DSA使得其比较封闭,第三方应用是很难调用的,这样并不利于整体生态的发展。因此欧加集团的自研路线应该会和Google从Pixel Visual Core到Google Tensor的路线相近,先从马里亚纳X这样的特殊领域专属架构开始,在研发和运营过程中积累经验/培养团队,后续的最终目标还是作为Fabless(无晶圆生产能力的设计公司)研发独立设计的整体SoC,并形成完整的从硬到软的生态。

UV域与RAW域

在马里亚纳芯片加入后,OPPO做了另一件很重要的事儿,把计算摄影从UV域提前到了RAW域。

手机图片的处理,一般会经历三个过程:原始的RAW文件采集,转成RGB信号,再转成YuV信号编码,目前主流的手机HDR算法都是在YuV上进行的。

熟悉摄影的朋友应该知道,我们一般使用的图片是JEPG格式的,但如果是需要后期修图,则一般是用RAW文件,它能够记录更多的原始信息,图片后期处理本质就是算法,而算法输出结果和记录的原始信息是息息相关的,这就相当于极度保鲜的食材,越好的食材,越能够做出美味。

越是前端原始素材,它的细节保留越多,在处理的时候,能够用的信息就越多,OPPO在SoC的前端直接在RAW上做HDR,效果一定是最好的。

5. FP32与IN8

5.1 FP32

FP32是32位的二进制数,除开第一位(蓝色)是标明正负,除开后23位尾数(黄色),还有8位指数位(绿色)来提升数值范围和精度。传统以图像渲染为目标任务的GPU就是主要针对FP32来设计,流处理器的结构就十分复杂。

上面的图表我有写明具体转换算法,有兴趣的话,大家可以用下面链接的浮点转换器试试,就可以有更为深刻的理解:

浮点转换器:IEEE-754 Floating Point Converter

5.2 INT8

深度学习主要用到的是整型的INT8,甚至是更低精度范围的INT4。INT8除开第一位正负标识,后面的7位就说只能区分2的7次方即128个整数,再加上正负,也就-128到127一共256个数据(如果不算正负,那是0-255,也是256个数据)。但也就是这样的数据范围和精度,对于大多深度学习神经网络而言也是基本够用的。INT8能够更好的兼顾效率和泛用性,行业内的无论是intel的OpenVINO和NVIDIA的TensorRT应用都是以INT8为主。用INT4标注只是算力数值大比较好看而已,INT8的算力数据才是有更大的实用价值。

说明:传统GPU流处理器占大头的FP32部分是针对图像任务设计(Maxwell以前GPU和A100/H100这样的专业卡还有更高精度的FP64),对于大多深度学习任务而言就是多余的,仅仅只用的上少数的INT32。因此用传统GPU跑还不如用更多更小的纯INT计算单元来跑深度学习,这样来的性能更好,效率更高,成本更低,这也就是前面那些车企都不约而同选择专用神经网络处理器的原因。

5.3 INT4

个别场合里可以使用 INT4,个别场合就是指对准确度安全性要求相对较低的情况,毕竟 INT4 在有符号的情况下所能提供的正数数值范围只有 0 到 7、负数范围是 -7 到 -1,无符号时的正数范围是 0 到 15,其数值范围相当有限,当卷积核有负值或者之后归一化的时候,INT4 就会捉襟见肘。

6. INT8是个性能和精度的良好折衷

**目前在学术研究和业界实践中,INT8是个性能和精度的良好折衷。**例如Intel的OpenVINO和Nvidia的TensorRT推理加速框架,以及谷歌的Coral Edge TPU套件,对神经网络模型量化精度都优选了INT8,而且对CNN等常见神经网络模型的实际转换效果可以做到性能近似无损。 也因此,各类人工智能芯片基本都支持INT8。不管是隔壁华为海思,还是Intel家的FPGA,还是寒武纪,还是英伟达,在芯片算力上都标注了INT8。

模型量化的原理

通过一系列算法将神经网络模型的权值、激活值等从高精度转化成低精度,在定点与浮点等数据类型之间建立一种映射关系,目标是以较小的精度损失代价获得较大的收益:减少内存带宽和存储空间需求、提高系统吞吐量、降低系统延时。但这个操作过程是一种近似算法方法,不可避免的或多或少都会有精度损失,故存在一个全局最优解

7. 算法/算力/数据的逻辑

人工智能的三驾马车 —— 算法、算力、数据,这三者的关系是相互影响、相互支撑的,它们缺一不可。

算力提升→能运行更强的算法→可以收集更多的信息→需要更强的算法→需要更强的算力→算力提升→能运行更强的算法…… 这就是一个很好的正向循环。 为什么很多自动驾驶的车企卖硬件是不需要花钱,而软件是需要额外付费的,就是因为他们要利用一切可以利用的摄像头来收集尽可能多的信息。 对于手机来说,有个更强的 NPU, 也需要尽可能给更多的产品用上,这样才能均摊成本,收集记录更多信息,反哺算法 目前手机领域最著名的 NPU 之一,肯定就包括 OPPO 的马里亚纳 X, 因此我们有理由相信,它不仅仅只会在顶级旗舰 Find X 系列上搭载,而是会尽可能铺向中高端,如果可以的话,乃至入门的机器也会用上。 到了那个时候,我们就可以期待不仅仅 OPPO 的高端产品能有独特并超出其他竞品的优势,同时中端产品也可以有比采用类似规格 CMOS 和 SoC 的产品更好的表现。

8. 推理芯片

特斯拉FSD、寒武纪NPU、地平线BPU、OPPO的马里亚纳、荣耀使用的AI-ISP。

三、GPU

极智AI | 谈谈 GPU 并行推理的几个方式
极智AI | TensorRT API 构建模型推理流程
GPU硬件的发展与特性分析—Tesla系列汇总

1. TensorRT性能指标

TensorRT8 使用手记(6)性能统计