问题

芯片的算力到底有什么用?算力是怎么评估的?

回答
好,咱们就来掰扯掰扯这个芯片的算力,到底是个啥玩意儿,有啥用,又该咋衡量。别看它听起来挺玄乎,其实跟咱们日常生活息息相关。

芯片算力,简单来说就是“脑子”的快慢和“本事”的大小

想象一下,芯片就像咱们的“大脑”,而算力就是这个大脑的“处理速度”和“工作能力”。

处理速度: 就像你能不能够快速地理解问题、做出反应。算力越高,芯片处理指令的速度就越快,能同时做的事情也越多。
工作能力: 就像你解决问题的“本事”有多大。算力不仅是速度,还包括它能处理的“任务复杂度”和“数据量”。比如,你解一道小学数学题,和解一道复杂的微积分题,需要的“能力”是完全不同的。

所以,芯片的算力,顾名思义,就是芯片在进行计算时,能够处理的数据量和运算的复杂程度。它决定了这块小小的硅片,到底能干多少事,而且能干得多好。

芯片算力到底有啥用?这你就得看它在哪个领域发光发热了

芯片算力的“用处”,那可真是遍地开花,涉及到咱们生活的方方面面,而且随着技术发展,它的应用场景还在不断拓展。

1. 智能手机里的“大脑”:
运行APP: 你打开微信、刷抖音、玩游戏,这些都离不开芯片的算力。算力越强,APP运行越流畅,加载速度越快,游戏画面也越精美。
拍照和修图: 现在手机拍照越来越牛,很多都是靠强大的算力来实时处理图像,比如降噪、美颜、HDR效果等等。你那随手一拍就能出大片,背后就是算力在默默工作。
语音助手: 你跟Siri、小爱同学说话,它们能听懂你的指令并做出回应,这背后是复杂的语音识别和自然语言处理算法,都依赖于芯片的高算力。

2. 电脑和服务器里的“心脏”:
办公和设计: 打开大型办公软件、进行复杂的3D建模、视频剪辑,都需要强大的CPU和GPU(图形处理器)提供充沛的算力。
科学计算和模拟: 比如天气预报、飞机设计、药物研发,这些都需要进行海量数据的复杂计算和模拟,没有强大的算力支撑,根本无法实现。
云计算: 你在网上存储文件、使用各种云服务,这些都运行在数据中心的服务器上,而这些服务器的核心就是拥有极高算力的芯片。

3. 新能源汽车里的“中枢神经”:
自动驾驶: 这是最能体现芯片算力的地方。自动驾驶系统需要实时感知周围环境(摄像头、雷达、激光雷达的数据),进行复杂的决策(比如避障、规划路线),最后控制车辆行驶。这个过程对算力的要求极高,需要芯片能够快速处理海量传感器数据,并做出精准判断。
智能座舱: 车载导航、娱乐系统、人机交互,这些都需要芯片来提供流畅的用户体验。

4. 人工智能(AI)领域的“灵魂”:
机器学习和深度学习: AI的核心就是学习,而学习的过程就是通过算法处理大量数据,从中找出规律。训练一个AI模型,比如人脸识别、语音识别、自然语言生成模型,需要消耗海量的算力。
AI推理: 训练好的AI模型,在实际应用中进行判断和预测,也需要算力。比如你用AI软件画画,或者让AI帮你写文章,这就是AI推理的过程。
AI芯片的崛起: 专门为AI设计的芯片(如NPU、TPU)更是将算力的优势发挥到了极致,让AI应用得以大规模落地。

5. 其他领域:
通信: 5G/6G通信需要处理大量数据流,对芯片的算力有很高要求。
物联网: 连接海量的智能设备,需要芯片进行数据采集、处理和通信。
科学研究: 粒子物理、天文学、生物信息学等,都需要超级计算机来处理天文数字级别的数据。

简单来说,任何需要“思考”、“分析”、“学习”和“快速响应”的场景,都离不开芯片的算力。 算力越强,能实现的功能就越复杂、越智能、越高效。

算力是怎么评估的?这可不是一个简单的数字,而是多维度的衡量

评估芯片的算力,其实就像评估一个人的“聪明程度”和“工作效率”,不能只看一个指标,而是要从多个角度来看。主要有以下几个常见的评估维度:

1. 每秒浮点运算次数 (FLOPS):
这是衡量算力最基础、也最核心的指标。 浮点运算是指进行小数运算,在科学计算、图形处理、AI等领域非常常见。
单位:
FLOPS (Floatingpoint Operations Per Second): 每秒浮点运算次数。
KFLOPS: 千次浮点运算。
MFLOPS: 百万次浮点运算。
GFLOPS: 十亿次浮点运算(1 GFLOPS = 10^9 FLOPS)。
TFLOPS: 万亿次浮点运算(1 TFLOPS = 10^12 FLOPS)。
PFLOPS: 千万亿次浮点运算(1 PFLOPS = 10^15 FLOPS)。
EFLOPS: 百亿亿次浮点运算(1 EFLOPS = 10^18 FLOPS)。
不同精度: 浮点运算还有不同的精度,比如单精度(FP32)、双精度(FP64)、半精度(FP16)、甚至更低的INT8(整数运算)。
FP32 (单精度): 精度够用,速度快,是很多通用计算的标准。
FP64 (双精度): 精度非常高,但运算速度慢,主要用于科学计算、模拟等对精度要求极高的领域。
FP16 (半精度): 精度降低,但运算速度大大提升,尤其适合AI训练和推理,能显著提升效率。
INT8 (8位整数): 精度更低,但速度更快,功耗也更低,是AI推理场景的常用选择。
所以,我们常听到说某个AI芯片有多少TFLOPS,或者某台超级计算机有多少EFLOPS,指的就是它在特定精度下的运算能力。

2. 指令每秒 (IPS):
衡量CPU执行指令的速度。 主要针对的是整数运算和逻辑运算。
单位: IPS, KIPS, MIPS, BIPS (十亿条指令/秒)。
适用场景: 比如操作系统运行、软件执行等,虽然不如FLOPS直接代表“算力”强度,但对电脑和手机的整体响应速度也很重要。

3. 核心数量和频率:
核心数量: 芯片内有多少个独立的计算单元(CPU核心、GPU核心、AI核心等)。核心越多,理论上能同时处理的任务就越多。
频率(主频/时钟频率): 指CPU或GPU每秒可以执行多少个时钟周期。频率越高,每个核心的运算速度就越快。
举例: 8核1.5GHz的CPU,和4核3.0GHz的CPU,虽然核心数量不同,但总的计算能力需要综合考虑。

4. 内存带宽和缓存:
内存带宽: 指芯片与内存之间数据传输的速度。即使计算能力再强,如果数据传输跟不上,也会成为瓶颈。
缓存: 芯片内部的高速存储区域,用于暂存频繁使用的数据,可以大大提高数据访问效率,间接提升算力表现。

5. 能效比:
这是一种“效率”的衡量,而不是纯粹的“强度”。 指芯片在消耗单位能量(如1瓦特)的情况下,能够完成多少计算量。
单位: FLOPS/Watt。
重要性: 在移动设备(手机、笔记本)和数据中心(需要考虑电费和散热)中,能效比非常关键。一块能耗低但算力也很强的芯片,比一块算力强但功耗巨大的芯片更有价值。

6. AI算力特有指标:
TOPS (Trillions of Operations Per Second): 这个单位在AI领域很常见,通常指的是整数运算(如INT8)的运算能力,反映了AI推理的速度。
MACs (MultiplyAccumulate Operations): 乘加运算是深度学习中最基础的操作,所以很多AI芯片会用MACs来衡量其在AI任务上的表现。

如何理解这些评估方式?

跑分软件: 就像咱们考试要考各种科目一样,各种跑分软件(如Geekbench, AnTuTu, 3DMark等)会测试芯片在不同场景下的性能,给出一个综合分数。
实际应用测试: 最直接的方法就是看芯片在实际应用中的表现,比如玩一个大型游戏卡不卡,AI绘画生成一张图要多久,自动驾驶系统反应速度快不快。

总结一下:

芯片的算力,就是它计算的“硬实力”。它的用处体现在让我们的设备更智能、更快速、功能更强大。而评估算力,则需要结合运算的精度(FP32, FP16, INT8等)、运算的单位(GFLOPS, TFLOPS)、核心的数量和频率、数据传输能力(内存带宽)以及能耗效率等多个维度来综合判断。

随着AI技术的飞速发展,算力已经成为衡量一个国家科技实力和未来发展潜力的重要指标之一。未来,我们将看到更多更强大的芯片,为我们带来更多令人惊叹的应用。

网友意见

user avatar

顾名思义呀,算力就是 computing power 的直译,其实就是计算性能的意思,是人工智能领域的三个基本要素之一,另外两个要素就是同样重要的算法(algorithm)以及数据(data)。这其中数据是基础,如果将算法看作是织布的方法,那么数据就是丝线,算力反映的就是织布机输出布匹面料的速度。

芯片的底层性能我们都会用诸如每秒执行多少次浮点操作、每秒执行多少条指令等说法,当然,反映到解决实际问题时,这样的性能指标是有点空泛的。

对于实际问题的性能表现,我们一般直接使用更直观的性能指标。例如游戏的话,就是每秒多少帧,如果是偏研发方向的话,可能会用每秒多少个像素,又或者它们的倒数,例如每帧多少个毫秒、每个像素多少纳秒等。

对于手机芯片,现在的手机 SoC 都属于 application processor(应用处理器),其中不仅包含了必不可少的 CPU、GPU,还有各种针对不同应用的处理单元,例如 ISP(图像信号处理器)、NPU(神经网络处理器)、视频编解码器等等。

在这几种单元中,发展最快或者说性能提升速度最快的就是 NPU。举个例子,联发科天玑 9000 里的 NPU——MediaTek APU 590,其性能效率是上一代的 4 倍,相对提升幅度比 CPU、GPU 提升大得多。

神经网络处理器,自然是用来跑神经网络,但是对很多人来说,神经网络这个词本身就比较神经——或多或少都听说过,但是这是个什么东西那是一脸懵逼的。

所谓神经网络,最初是人们在研究动物视觉系统后发现的一种信息处理方式。

人们通过在动物头上连接电极感应器,获知了动物在处理视觉信号的时候可以分为两种神经细胞,例如能对线条做出的简单神经元和能对线条运动作出反应的复杂神经元,这些神经元以网络的方式连接,于是人们将其归纳为一种数据处理结构,这就是神经网络。

在神经网络里,动物看到的东西首先是一堆像素点,然后会辨别出这其中有一大堆线条,之后是轮廓,最终就是辨别出眼睛里看到的到底是个什么东西,例如是花还是其他小动物。

对于我们人类和其他动物来说,这个辨别过程的复杂程度我们是很难察觉的,有句成语叫不假思索形容得很贴切,以至于我们会简单地以为我们看一眼就知道是啥,但是当我们试图用文字或者数学的方式将其完美地表达出来的时候,却会发现难度实在太高了。

例如阿拉伯数字 8,对我们人类来说,就是两个上下连接的圈圈,但是如果将这种认知变成计算机能识别手写数字 8 的代码时,却会发现会有各种混乱的情况需要处理,如果要对不同的手写数字字型以及混淆情况使用专门的代码来描述的话,在现实中将会成为非常棘手的事情(在人工智能中这样的方式类似于专家系统)。

神经网络则是采用了另一种方式,那就是给它喂一大堆手写体数字,这些数据被称为训练样本,之后,我们开发出一个可以从这些训练样本中进行学习的系统,从而实现自动推断识别这些手写数字或者其他类型数据(例如照片、语音、运动行为等)的规则。

类似的例子我们可以举出非常多,例如使用手机或者中画幅相机拍摄照片,从传感器获得的 raw 生图数据可能有多达 14-bit 甚至 16-bit 的数据,这些生图数据可以透过不同的去马赛克算法还原成一张动态范围非常高的图片。

此时就需要对其进行 tone mapping 处理,确保可以在低动态范围的显示器上正确显示。完成 Tone Mapping 后画面可能会出现局部过曝、欠曝的情况,此时就需要进行 HDR 亮度处理。处理涉及到场景识别,毕竟不同的场景明暗影调都是不一样的,人工智能此时可以帮助大家进行快速的处理,提供一张能呈现高动态范围而且影调、色彩都恰到好处的图片。

这不是一件容易的事情。

以上面那堆用于训练手写体识别的训练样本为例,它相当于一个二维矩阵,纵向有 10 行,横向有 16列,假设每个字的框框是 32x32 个像素,那么这里的像素样本数量是 10*16*32^2=163,840 个,涉及的运算量非常高。

现在的图像识别神经网络大都采用名为 CNN 或者说卷积神经网络的方式进行计算,它的原理是用一个名为卷积核的参考矩阵和训练样本的形式进行 MAC(Multiply Accumulate,乘积累加,也就是 x*w+b 的形式,其中有一个乘积运算和一个加法运算)指令运算,得出一个输出矩阵——特征图。

我们可以取一个更直观的比喻。

相信大家都用过卷纸,最常见的卷纸里都有一个圆的纸轴,你可以将其是作为卷积运算里的卷积核,卷纸围绕着纸轴缠绕,而卷积计算就相当于把记录在纸轴上的数据与缠绕的卷纸上的数据进行 MAC 计算。

这里需要注意的是,由于每卷一圈卷纸的周长都会大一些,如果卷纸上的数据记录占用的位置是等距的,那么每圈卷纸和纸轴对应的数据位置都会有一定的出入,这也正是卷积计算的重要特征。

每圈卷纸计算出来的数据放置到一个新的数据矩阵中,周而复始直到卷纸缠绕完,这一整条卷纸算是完成一次卷积运算,同时一个新的数据矩阵(特征图)也得出了。

基本上这就是卷积计算的基本概念,在神经网络计算中它的目的是用数学的办法提取出图像的特征。

例如,如果我们要判定某个图片(TS)里是否包含 的图案(例子参考自李永乐老师的视频),可以先人为地选定一个包含类似 图案的 3*3 的卷积核(K)来对图案进行计算:

上图就是对一个我们认为是一个交叉或者字母 X 的图案和 3*3 卷积核进行卷积运算后得出的特征图,其中数值为 3 的位置可以视作高度符合包含 的位置,数值为 2 表示这个位置接近 ,0 和 1 则表示这里和 没啥相似的地方。

由于特征图有点大,所以我们还会进行池化获得激活值,将特征图简化并重新得出一个新的特征矩阵,这个过程也会涉及一些简单的运算。

但是一次卷积可能还有一些混淆是不能完全解决的,所以可能还会进行多次(层)卷积,最终得出更多的特征图,在现实世界中随着问题的复杂性提高、卷积核的数量也会提高,随之而来的是生成的特征图也更多。

从整体来看,CNN 里最常见的运算指令无疑是 MAC 指令(与卷积核相乘,获得结果后再与卷积核相加获得特征图,所以是 x*w+b),所以对于 CNN 来说,处理器的 MAC 指令吞吐率可以在很大程度上反映了该处理器的人工智能计算性能,然后就是访存性能以及内存大小,这些因素最终决定了处理器执行神经网络或者说人工智能计算时的性能。

前面使用手写体识别时我们是以是一个较低分辨率的图片来举例,那么如果是要对 4K图片处理的话所需要的实际计算量会是如何呢?以一张分辨率为 3840x2160 的 RGB 图片和 3*3 卷积核为例,第一层卷积计算所需要的 MAC 指令大约是:

3^2 * (3840*2160 * 3) = 223,948,800 条 MAC 指令

需要注意的是,如果是视频的话,就需要考虑时间约束问题,例如 30 fps 的视频,就需要 223,948,800 * 30 fps = 6,718,464,000 MAC/秒,或者说起码得 6.7GIPS。随着卷积层数的增加和网络复杂性的变化,具体的算力需求可能会呈指数级上升,而深度学习的特征之一正是因为多层卷积计算。

很显然,CNN 可以有多种实现形式,现在最常见的就是 ResNet、Inception 等,在测试软件 AI-benchmark 中的子项目你可以看到它们的身影,它们的首要目标大都是试图获得尽可能高的准确性。

2012 年被视作第三波人工智能崛起的年份,AlexNet 凭借比第二名低 10.8% 的 Top5错误率拿下了 ImageNet 大规模视觉识别挑战赛的第一名,AlexNet 需要极高的计算性能,但是由于 GPU 和 CUDA 的出现使得这一切成为了可行。

自此以后,人工智能计算出现了前所未有的突飞猛进,以顶尖人工智能系统的性能为例,在 2012 年到 2019 年间,顶尖人工智能系统的性能以每年 10 倍的速度提升,相当于同期 GPU 性能提升速度的 35 倍。

即便如此,神经网络计算所需的庞大计算量依然是通用芯片难以满足的(见上图),强大的性能需求推动了神经网络芯片技术的发展,谷歌 TPU 就是首款大规模应用的 AI 专用加速器,之后 NVIDIA 也在其 Volta GPU 里引入了 Tensor Core 进一步稳固其 AI 市场领域的龙头位置。

如今,AI 加速器已经遍地开花,例如 AMD 在其 CDNA2架构 GPU 里引入 Matrix Core、Intel 在 Xe HPC/HPG GPU 中引入 Matrix Engine,专用 AI 加速器更是举不胜举。

回到现在大家比较关心的手机设备,对手机或者其他终端设备来说,在使用神经网络做 AI 应用的时候,通常都是属于推理。

从高层次角度来看的话,深度神经网络的使用是一个两阶段(训练和推理)的过程:

首先训练一个神经网络,神经网络会对输入的训练样本进行计算,获得一份权重表,然后用这个权重表猜测我们给定的一个测试样本,如果猜测结果是错误的,那就重新调整权重高低,直到猜测正确为止。

神经网络训练需要消耗非常高的资源,按照前百度首席科学家吴恩达的说法,训练一个百度汉语语音识别模型不仅需要 4TB 的训练数据,而且还需要多达 20 ExaFLOPs(百亿亿次浮点操作)的算力,远远超出目前以及可见将来的任何一部智能手机本地算力水平,因此训练计算一般都是在超级计算机上进行。

经过训练后的神经网络可以用于猜测其他未标记的测试对象,这时候就进入了推理阶段,也是终端设备在人工智能上的最主要应用方式,此时使用的神经网络虽然是经过训练的,但是其个头会小很多,因为一些低权重由于对结果没有实质影响而被抛弃(这一步被称作模型量化)。

此外,推理运算所需的数据精度需求也会大为降低,从训练神经 网络的 FP32/FP16 量化为 INT8 即可,虽然运算精度下降,但是对推理结果的准确度影响也就是 1% 以内,随之而来的则是内存占用显著降低以及性能获得显著提升。

上图是 2021 年韩国首尔大学 SUMIN KIM 等人对移动 GPU 以 INT8 量化推理性能评估论文(10.1109/ACCESS.2021.3133100)中提供的 FP32 和 INT8 准确性比较,可以看到在推理的时候,INT8 的准确性和 FP32 相差非常小。

由于直接使用 INT8 量化在推理运算方面的精度损失非常低,因此目前绝大部分的 AI 硬件加速器都提供了 INT8 支持,在开发工具方面,像目前的深度学习库 TensorFlow、PyTorc、MXNet、OpenVINO、TensorRT 都提供了 int8 的支持,所以 INT8 现在已经成为了推理方面最常见的精度格式。

除了 INT8 外,目前 INT4 也开始渐露头角,例如 2018 年 NVIDIA 图灵架构里第二代 Tensor core 就提供了 INT4 支持,但是和 INT8 相比 INT4 量化目前看来需要一些特殊的手段才能实现较低的准确度损失,这对于某些应用特别是强调安全性的汽车自动驾驶来说 INT4 仍然是存疑的,因此你目前看到的汽车自动驾驶推理计算主要采用 INT8 量化。

上图是 AI-Benchmark v5 的加速模式设置选择界面,手机为 K40,图中的设定是 AI-Benchmark v5 的默认设置,可以看到此时 AI-Benchmark v5 选择的 AI 加速精度为 INT8。

上图是另一部手机——Find X5 Pro 天玑 9000 版的默认 AI 加速设置,可以看出这里同时提供了 FP 和 INT8 的支持。

根据我的观察,目前已知的手机 AI 性能测试工具,基本上都是测试神经网络推理性能,而且都提供了 INT8 支持,至于更低精度的 INT4 目前还没看到,NVIDIA 给 mlcommons.org 递交过一个针对 INT4 修改的 MLPerf 0.5 推理测试,但是手机版尚未看到。

换句话说,目前当我们讨论手机 AI 性能的时候,一般默认指的是 INT8 推理性能,这也是业界普遍的认知。

例如,在去年底国内手机厂商还纷纷推出了各自的手机 AI 加速芯片,这其中以 OPPO 的 MariSilicon X 最为亮眼。

按照 OPPO 的资料,这枚 MariSilicon X 集成了一枚 INT8 性能高达 18 TOPS 的神经网络处理单元,其中用低明度得到小字体标注了等效 INT4 性能为 72 TOPS。

这里为什么会特别提及 INT4 呢?正如前面我们提到过 INT4 是需要特别场合才能使用的,类似 MariSilicon X 这种属于 Pre-ISP 场合,对精度的需求顾虑不像汽车自动驾驶那样有安全先决的因素,因此 INT4 也是有机会在手机推理计算上得到应用。

按照 Andres Rodriguez 编写的《Deep Learning Systems Algorithms, Compilers, and Processors for Large-Scale Production(针对大尺度生产的深度学习系统算法、编译器以及处理器)》一书中,就列出了不同精度格式的应用场景:

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

在同一本书中提供了不同精度在 45 纳米制程下各种运算形式和访存操作的耗电、芯片面积(数据源自 NVIDIA 首席科学家 Bill Dally 2017 年的资料),可以看到 8-bit 加法和 8-bit 乘法消耗的电力分别是 fp32 的 3% 和 5%,面积则分别是 0.86% 和 3.7%。

由此可见,8-bit 计算在耗电和芯片成本上远比 FP32 低很多,已经达到了数量级的差别,结合我们前面提到 INT8 在推理计算方面具有和 FP32 相当的准确度,因此 INT8 自然而然成为非常重要的深度学习推理运算数据格式以及性能指标,意义比 INT4 更高(故此 OPPO 的 Marisilicon X 在提及 INT4 等效性能时字体特意采用了低明度的小字体)。

https://www.zhihu.com/video/1492875828777758720

Marisilicon X 负责前端 ISP(RAW 域)处理,能实现出色的 HDR、降噪效果

人工智能和图像处理结合是目前乃至未来手机芯片领域发展最快的应用领域,除了我们上面提及的 OPPO MariSilicon X 外,各个手机厂商也都推出各自的 ISP,像 Vivo 的 V1、小米的澎湃 C1、华为海思越影以及荣耀 Magic 4 里的 AI ISP。

其中前两者目前的公开资料都并未提及算力是多少,也并未明确是否具备人工智能加速。而海思越影和荣耀的 AI ISP 则是明确表示是具备人工智能加速的,特别是荣耀的 AI ISP 有明确的 28 TOPS 算力指标,但是并未说明到底是 INT8 还是 INT4。

考虑到我们前面提到的 INT8 和 INT4 在可用性上存在一定区别,因此在荣耀在明确指标数据格式之前我觉得不适合和 MariSilicon 的 INT8 18 TOPS、INT4 72 TOPS 直接对比,因为如果荣耀的指标是 INT4 下的话,那对应 MariSiliton 算力指标就是 72 TOPS 了。

最后,芯片算力只是人工神经网络三个要素之一,另外的两个要素——算法和数据也是同样重要不可或缺的,反映到像手机计算拍摄方面,则是意味着厂商需要长时间在影像科学上的积累才能获得足够的算法开发和训练样本,只有这样才能让像 MariSilicon X 等芯片充分发挥其强大的 RAW 端算力,使得大家看到“亮的够亮、暗的够暗”的画面。

芯片开发充满了对算力、耗电、成本以及应用灵活性等问题的挑战和妥协,特别是高端芯片,其研发成本之高和周期之短是常人难以想象的,对于芯片设计团队来说是只许成功不许失败的独木桥,国内厂商近年来对芯片研发大力加码,使得我们看到了越来越多高端芯片的出现,希望它们中的大多数都能取得成功,并且在更多的领域得到落地应用,让研发费用得到有效摊平,进入正向良性循环,实现更多高端的芯片突破。

user avatar

算力是一个很容易吵架的话题,之前很多讨论芯片算力的场合都不是C端场景,普通消费者感知不强。后来新能源汽车和自动(辅助)驾驶爆火之后,这一数字就成了衡量不同厂家自动(辅助)驾驶能力高低的主要参数之一,甚至已经到了有点被妖魔化的程度。

其实汽车驾驶的智能化是一个综合工程,其中不仅涉及到芯片算力,还有算法、场景和模型架构等等,但这些概念都太过于抽象,难以被量化给消费者留下深刻的印象。于是在品牌公关传播中,“高达XXX TOPS”的算力参数就成了最简单,最容易理解的指标,毕竟“更高就是更好”是一个简单的逻辑。

今年在手机领域,各厂商为了提高产品的拍照实力开始自研芯片——在通用SoC的基础上添加专用芯片。

从最早Google TPU,到如今国产厂商的各种ISP、AI ISP,以及OPPO马里亚纳NPU这种基于领域专用架构(Domain Specific Architecture,DSA)理念设计的ASIC芯片,提高拍照场景的运算速度已经成为一种趋势。毕竟更好的拍照效果在计算光学时代对应更密集的运算场景,而这在边缘侧这种对体积和功耗有严格限制的应用中,效率就显得尤为重要。

这里我简单科普下算力的概念,尤其是算力的讨论要指明数据精度,比如Int8,Int16还是FP32等等。但同时也说明下:芯片算力的高低是芯片性能的一个重要参数指标,但并不代表最终体验,芯片的高算力是良好体验的必要而非充分条件。

算力TOPS

日常宣传的芯片算力一般指的是芯片运算能力的理论峰值,对于不同类型芯片的含义也不一样。CPU中核心数较少,除了数字逻辑运算单元,还有分支预测等结构;而做并行计算的GPU不仅有庞大的浮点运算单元,还有Tensor Core这样的专用张量计算单元。

AI芯片算力所指的通常是MAC 指令(乘积累加)的运算能力,其在深度学习中非常重要。因为MAC 指令操作本身与数据类型有关,不同的数据类型有不同精度,比如是整数Int8,还是半精度浮点FP16或单精度浮点FP32,所以讨论芯片算力时也应该有数据类型的区别。

另一方面,TOPS是Tera Operations Per Second的缩写,1TOPS代表每秒钟可进行一万亿次(10^12)操作,只是一个单位而没有指明特定数据类型。所以,算力的大小取决于MAC单元的数目和运行频率,其在不同数据精度下也有不同的表示。

比如NVIDIA Tesla V100专业计算卡的Tensor Core有640个,每个Tensor Core有64个MAC单元,考虑一个指令两次OPS以及主频1.5GHz的话,在Int8下的算力大概640*64*2*1.5GHz=122TOPs,而A100甚至能达到624TOPS。当然粗略计算的话其在FP16或FP32下还要减半或者四分之一,而在Int4下就是大致4倍的换算关系。

在一般的场景中,AI芯片算力通常指的都是Int8量化下的情况,比如手机端:

OPPO马里亚纳NPU:18TOPS(Int8)

A15:15.8TOPS(Int8,ML非影像专属)

荣耀AI ISP:28.8TOPS(未知)

谷歌Edge TPU:4TOPS(Int8,用于TensorFlow Lite ML)

目前大家一般采用Int8量化数据为主,这种数据类型的选择与深度学习过程中数据量化过程有关系。总之,只有统一的量化标准下,算力数据大小才有意义。在Int8量化标准下,目前手机端NPU中OPPO马里亚纳X的算力是最高的

从FP32到Int8

深度学习过程中,卷积神经网络(CNNs)对图像视觉特征进行提取,然后量化的过程类似于数据压缩。现有的机器学习框架诸如TensorFlow、Pytorch等推理过程通常用FP32数据精度来表示,这样的数据精度非常高,但会产生庞大的数据量以及内存占用,尤其是对于ResNet这种参数较复杂的神经网络。而边缘侧场景中通常算力和内存资源都是有限的,所以必须进行数据量化,选用更低精度的数据类型,Int8是最重要的一种。

与FP32相比,整数形式的Int8的数据量减少了4倍,对存储容量、带宽瓶颈和功耗控制的要求都更低,同时可以加快运算速度,这对于小型终端或物联网中神经网络的部署非常重要。NVIDIA TensorRT或Xilinx DNNDK等工具都可以实现Int8的量化。

当然量化过程对应高精度数据向低精度数据的转换,不可避免会带来精度损失,毕竟存在动态范围减小的问题。不过通过映射过程中一定的优化和校准,可以尽量减小精度损失,所以一般在主流云端或边缘侧推理场景中,大家都使用Int8做算力基准

后话

其实算力的问题还很复杂,比如量化既然降低数据精度,那能不能选更低精度的数据类型?比如Int4:数据量进一步减小,当然动态范围也缩减为原来的1/16,有可能出现精度过低的问题。

当然,可能有人会说既然Int8量化可以通过算法优化和校准来改进,那Int4为什么不能采用同样的方法呢?这是个好问题,很多人都想到了,Int4量化也是学术界和工业界研究热点之一,比如NVIDIA图灵架构对低精度的优化以及Xilinx Zynq UltraScale+上的低精度加速器:

所以Int8和Int4这是一个权衡的问题,如何保留推理过程中模型的精度又尽可能减小数据量。目前的情况中,Int8是常用的标准, Int4还需要更多研究。

user avatar

传统的CPU和GPU算力单位是GFLOPS,相信大家都还是比较熟悉。但这只是传统CPU和GPU的算力单位,而现在情况有了一些变化。

很多准备买新能源车的朋友,发现现在新势力造车厂商宣传的性能指标不仅仅是只有马力、0到100KPH加速时间,续航里程这样常规数据,也发现现在车机算力有多少TOPS也是各家车企宣传攀比的新重点。

为了能够满足自动驾驶/辅助驾驶的性能需求,在传统SoC的基础上,各家车企也都给自己的车辆加上了NPU(Neural Processing Unit 神经网络处理器),而TOPS就衡量神经网络性能算力的关键指标。

可能会有同学有疑问,现在这些神经网络处理器衡量算力的指标TOPS同衡量CPU/GPU的GFLOPS之间有什么差别呢?

传统GPU衡量性能的指标是FLOPSFLoating-point Operations Per Second,每秒浮点操作次数。

而车机衡量的指标是OPSOperations Per Second,每秒操作次数。

传统的GPU运算主要是FP32,32位精度的浮点运算,因此是FLoating-point(浮点);

而车机的深度学习处理器主要跑的是INT,4位或者8位的整数运算,因此就没FLoating-point(浮点)。

浮点操作数现在GPU的性能级别是Giga FLOPS,10的9次方,而整数操作更简单,性能级别更高,是Tera OPS,10的12次方,INT的性能级别要比FP高上3个数量级,所以现在衡量深度学习处理器的性能指标是TOPS

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

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

但深度学习主要用到的是整型的INT8,甚至是更低精度范围的INT4。INT8除开第一位正负标识,后面的7位就说只能区分2的7次方即128个整数,再加上正负,也就-128到127一共256个数据(如果不算正负,那是0-255,也是256个数据)。但也就是这样的数据范围和精度,对于大多深度学习神经网络而言也是基本够用的。

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

传统处理器单线程性能每年大概就提升10%,而现在机器学习性能则是指数级的提升,可见发展趋势之迅猛。

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

深度学习在拍摄最为典型应用就是HDR图像处理。HDR+用多帧合成对对高亮和暗部部分进行输入亮度调节分别曝光,再进行多帧合成。但这样的运算量太大,并不能实时完成。于是将图像切割成多个不同的小块提高并行度,或者干脆压缩成低分辨率的图像+灰度图,再使用HDRnet神经网络对曲线进行预测处理,最后进行像素混合和降噪。

最新一代的Google Pixel 6里搭载的Google Tensor不再是独立的NPU,NPU和ISP部分而又被整合进了SoC,其有5.7 TOPS的INT8算力。

当然,现在的深度学习领域不仅仅是NVIDIA、Google或者Telsa这样头部玩家的游乐场,也有很多国内企业参与其中,OPPO的马里亚纳X就是神经网络处理器领域的新玩家。

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

先说ISP部分,马里亚纳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的整数,能够实现的精度和范围太低,在神经网络中使用有比较大的限制,即使可以转到更小的神经网络也会有性能损失。不过用什么样的量化指标这没有规定,但不管怎么说,面向开发者或者用户,还是要标注量化标准,否则会让受众产生困惑和争议。比如最近有个芯片厂的宣发他们那颗接近30TOPS的ISP芯片,没标注标准,到现在我也不知道那是INT8还是INT4的测量结论。

回到INT8量化,INT8能够更好的兼顾效率和泛用性,行业内的无论是intel的OpenVINO和NVIDIA的TensorRT应用都是以INT8为主。用INT4标注只是算力数值大比较好看而已,INT8的算力数据才是有更大的实用价值。

手机同车机的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出发。另外,在宣发马里亚纳芯片的时候,欧加也是尊重了行业的惯例,采用了INT8和INT16量化指标,这样和竞品比较更直观,也更准确。

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

这条路真的十分困难,但如果不下决心做,可能也就没有未来了。



user avatar

这里老生重谈一下AI人工智能的底层三要素:数据、算力和算法

在这三要素中,算力,一力降十会。在类似原理和性能的算法、同样的输入数据等客观条件下,大幅提高算力足以引发质变,谁获取了算力的优势,谁就掌握了制胜的密码。



首先,这三要素缺一不可,都是人工智能取得如此成就的必备条件,所以这三要素也被称为人工智能三驾马车。

第一是数据。

人工智能的根基是训练,只有经过大量数据集的训练,神经网络才能总结出规律。

对于AI而言,海量的基础数据太重要了,而且需要覆盖尽可能多的场景,才能提高深度学习算法对新鲜样本的适应能力(数据泛化,简而言之是在原有的数据集上添加新的数据集),这样最终才能得到一个表现良好的模型。

第二是算力。

有了数据之后,需要进行训练,不断地训练。AI中有一个术语叫epoch,意为所有训练样本的一个正向传递和一个反向传递,通俗的说是把训练集翻过来、调过去训练多少轮。当然,只把训练集从头到尾训练一遍神经网络是学不好的,所以我们需要将完整的数据集在同样的神经网络中传递多次。

除了训练(train),AI实际需要运行在硬件上,这个过程被称为推理(inference),这些都需要算力的支撑。

尤其是在端侧及边缘侧设备上(例如手机、机器视觉终端、自动辅助驾驶等),在受限的功耗及散热条件下执行高速的AI推理非常依赖强大的、高能效比的算力硬件,通常需要专门芯片来支撑,是大公司争夺的主要阵地之一。

第三是算法。

其实大家现在算法谈得很多,也显得很高端,算法可以说是人工智能的灵魂,但其实某种程度上来说算法却是获取成本相对最低的。现在有很多不错的论文、开源的网络代码和各种AutoML、向导式自动学习等自动化手段,使得算法的门槛越来越低,所以算法这块也是创业公司比较常见的切入点。

在两大框架下——TensorFlow和PyTorch,算法的开发也越来越容易,在公共领域,创业公司的核心竞争力也逐渐收缩。


既然算力一力降十会,那么怎样提高算力?

前面说过,数据、算力、算法这三驾马车的关系是相互影响,相互支撑,缺一不可。

但算力是算法和数据的基础设施,其发展具有相对独立的特点,目前芯片设计基础理论已很难突破,制程精度也即将达到物理极限,所以算力的创新主要集中在这三块:

  1. 场景化的专用芯片(DSA架构、NPU等),如自动驾驶的moblieye,绿厂的马里亚纳X等;


2.计算网络架构的创新,例如眼下方兴未艾的云网融合、云边协同等,DPU也是目前发展的重要方向。

3.专门针对单一计算需求的 FPGA 或 ASIC。


我们再重复一下这个结论:在类似原理和性能的算法、同样的输入数据等客观条件下,大幅提高算力足以引发质变,谁获取了算力的优势,谁就掌握了制胜的密码。


为什么Int8算力标准才是行业通用评估标准?


我们已经知道,在端侧及边缘侧设备中,硬件算力可谓寸土寸金。

另一方面,很多AI推理算法(例如超分辨率、风格迁移、人脸识别、计算摄影等)都是狂吃算力的大户,尽管有NPU、GPU等各种大法的强力加持,也难以有恃无恐、大手大脚的去挥霍其算力性能,除了常见的模型剪枝、知识蒸馏等优化方式之外,还有无雷霆手段可以大幅提高端侧及边缘侧设备的深度学习推理性能?


此武功秘籍就是模型量化(低精度推理)。


先解释一下什么是模型量化。

模型量化作为一种能够有效减少模型大小,加速深度学习推理的优化技术,已经得到了学术界和工业界的广泛研究和应用。

维基百科中关于量化(quantization)的定义是:

量化是将数值x映射到y的过程,其中x的定义域是一个大集合(通常是连续的),而y的定义域是一个小集合(通常是可数的)。

在AI领域,低精度是指深度学习模型推理低于32或16位的精度(例如FP32和FP16),低精度推理目前最流行的位宽选择是INT8 (UINT8)

学术点说,就是在16位及32位浮点精度下训练出模型,然后通过层之间的浮点/定点量化运算转换为整数表示,比如我们可将一个原本FP32的weight/activation浮点数张量转换成一个INT8/UINT8张量来处理,这种转换通常可以使用后训练方法或额外的再训练/微调(Fine Tune)来完成。


模型量化会带来这两方面的好处:


  • 减少内存带宽和存储空间

深度学习模型主要是记录每个 layer(比如卷积层/全连接层) 的 weights(权重) 和 bias(偏置项)。FP32模型中,每个weight数值原本需要32-bit的存储空间,量化之后只需要 8-bit即可。因此,模型的大小将直接降为将近1/4。

不仅模型大小明显降低,网络的激活函数采用8-bit之后也将明显减少对内存的使用,这也意味着低精度推理过程将明显减少内存的访问带宽需求,提高高速缓存命中率。


  • 提高系统吞吐量,降低系统延时

直观理解,试想对于一个专用寄存器宽度为512位的SIMD(单指令多数据流)指令,当数据类型为FP32而言一条指令能一次处理16个数值,但是当我们采用8-bit表示数据时,一条指令一次可以处理64个数值。因此,在这种情况下,可以让芯片的理论计算峰值增加4倍。


那是不是模型量化的精度越低,这两方面的收益越大呢?


并不是。

由于低于8-bit整数的数据类型(例如INT4)精度过低(以INT4为例,其动态表示范围仅为INT8的1/16),已经影响到神经网络模型量化后的精度指标

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



在业界模型量化方法的研究可分为两个领域:

量化觉察训练(Quantize-aware training,QAT)、训练后量化(Post training quantization,PTQ),限于篇幅和本文的科普性质暂不继续解释其原理。虽然量化精度INT8已经被工业界普遍接受,但是不是可以选择更小量化精度,比如4-bit整数(INT4),在学术界一直在进行认真研究,主要的担心是:在进一步减少存储空间和加速计算同时,模型性能下降甚至出现溢出(overflow)的可能风险也在增加。

2018年谷歌发表一个量化网络推理的白皮书给出了如下实验论断(节选):

1. 权重按通道量化,激活值按层量化,均是INT8的PTQ,对各种CNN架构发现,其分类性能和浮点网络的差在2%以内。
2. 在CPU和DSP上对量化网络延迟进行基准测试:与CPU浮点数相比,量化模型实现的速度提高了2-3倍;具有定点数SIMD功能的专用处理器(例如带HVX的Qualcomm QDSP)提速高达10倍。
3. QAT可以提供进一步改进:在INT8情况下,其精度相对浮点数网络下降低1%;若QAT允许将权重降低到INT4,其性能损失从2%到10%,其中较小网络带来的性能下降更大。


故目前在学术研究和业界实践中,INT8是个性能和精度的良好折衷。

例如Intel的OpenVINO和Nvidia的TensorRT推理加速框架,以及谷歌的Coral Edge TPU套件,对神经网络模型量化精度都优选了INT8,而且对CNN等常见神经网络模型的实际转换效果可以做到性能近似无损。

也因此,各类人工智能芯片基本都支持INT8。不管是隔壁华为海思,还是Intel家的FPGA,还是寒武纪,还是英伟达,在芯片算力上都标注了INT8.



AI芯片是构建自家生态的基础


上面提到,人工智能三驾马车是算法、算力和数据,随着基础算法的不断稳定,后面需要的,主要就是算力和数据了。


某种意义上说,Google家的TPU是他们家AI生态的基础。

TPU提供了算力基础,而Google自家的数据量也足够大。

Google的TPU为自家的深度学习框架Tensor Flow优化过,因此在发布后,论文中TensorFlow的占比逐渐提升。

——尽管后面PyTorch在易用性上的提升,代替了TensorFlow大部分份额。


但目前,Google 已经用 TPU 替换了自家数据中心里 95% 的推断任务,可谓是拿自己的实际业务做了一个明证,即TPU是有用的——并替代了至少在自家,NV在AI计算的成本。


也因此,各家开始在自家终端上搭载NPU或独立的AI芯片。

用算力以应对未来的复杂场景,加上自家终端数量足够多,可以喂足够的数据用以优化。

手机上,OPPO的马里亚纳X,算力就开始暴增了,日常可以达到22TOPS @ Int8。华为做的最早,从麒麟970开始内嵌NPU,算力1.92TOPS,Google在自家的Tensor芯片里也内置了TPU。

家电上,科沃斯的扫地机器人搭载地平线家的旭日3,用以加快图像识别和3D建模;隔壁小米智能摄像机AI探索版搭载了地平线家的旭日2,用来做图像识别。

可穿戴设备上都开始搭载了,华米家的黄山2开始加入了NPU支持,用于心率和心脏健康方面的计算。

甚至索尼直接出了款堆叠了AI处理子系统的CIS,IMX500。




但这块,还得回到算法。

光有AI芯片没用,还得软硬一体。

那英伟达家的Tesla T4跑ResNet-50来说,其实际算力只发挥了理论算力的不到25%。

英伟达TeslaT4运行ResNet-50每秒可处理3920张224*224的图像,3920 images/second x 7 BillionOperations/image = 27,440 Billion Operations/second = 27.4 TrillionOperations/Second = 27.4 TOPS。而英伟达Tesla T4的理论算力是130TOPS。实际只有27.4TOPS。

大算力固然可以“暴力”解决问题,但手机是功耗敏感性产品,跟桌面级产品的取向不太一样。

OPPO的马里亚纳X就偏向于软硬结合。

再回到三架马车,算法、算力和数据上。

算法上,OPPO的是自家的,毕竟这年头谁家没个图像算法都不好意思出来说话。



算力上。首先,OPPO的设计标准就是18TOPS 和11.6TOPS/W @Int8,能兼顾计算精度和算力。跟FP16甚至FP32比起来,8位整数算力精度算不上特别高,但从实践来看也够用了,兼顾了算力和功耗。甚至算力已经摸到边缘云服务器的边了。另一方面,马里亚纳X采用的核心的那几个AI IP核都是自研的,能最大程度的保证算力不被浪费。

马里亚纳X在能效比上也足够优秀,由于在设计之初就以图像计算和效率优先作为设计理念,它采用了专属架构(DSA),其能耗比也远超桌面级产品。拿寒武纪思源270作为对比,2TOPS/W的Int8效率,拿到手机上还得再加散热,扛不住的。


数据上,OPPO结合算法投喂的大量数据,已经基本能跑起来这颗芯片了。当然,这颗芯片还兼顾了未来的方向。

作为对比,隔壁华为的NPU更像是,先塞进去大算力,满足未来可能的需求,再在这个基础上开发软件,比如后面的基于本地计算的视频声音字幕和实时翻译。


总结

算力有什么用?还是得回到人工智能三驾马车——算力、算法和数据

大算力意味着有大想象空间——大力出奇迹,在算力上总是没错的。但不管是独立的NPU,还是集成于SoC内的IP核,其算力都是为实现最后想要达到的效果服务的,算力需要足够大,也需要足够的精度,以及,还得结合算法和数据。

Int8下,不到1TOPS的算力就能完成语音处理,几个TOPS算力就能优化静态影像,动态影像往往就奔到10TOPS起了,如果是车载领域,处理多个摄像头的实时影像,缺少优秀的算法,100个TOPS都打不住。

也因此,兼顾了效率和精度的Int8在边缘计算,尤其是移动设备领域成为了某种事实上的标准,至少也是可以比较的标准,不管是马里亚纳X,还是隔壁华为的Ascend,还是再隔壁一点的寒武纪,都能看见Int8的身影。

user avatar

广义上说,设备的运算能力就是算力,比如我们日常使用的电脑、手机甚至游戏主机都有算力的概念——手机测评里大家都会跑的 GeekBench5,其实就是通过一系列测试来综合反应 CPU 的计算性能;而在次世代主机 PK 中出现的浮点性能 xx TFLOPS,同样也是指的主机 GPU 的算力水平。

不过现在很多语境下我们讨论的算力,常常与 AI 直接挂钩——生活中早就充满了各种 AI 应用,短视频的推荐算法、各种 APP 的人脸识别、汽车领域的辅助驾驶、手机影像的计算摄影等等场景都离不开 AI 的帮助。而在机器学习算法复杂度不断提升,数据量越来越庞大的情况下,算力就显得越发重要——只有算力达标,才可能将一些算法落地,达到预期的效果。

要如何量化算力呢?一个常用的指标是 FLOPS( floating-point operations per second),也就是每秒浮点运算次数,在需要大量浮点运算的领域,这个指标尤为有用。

不过需要注意的是,在使用 FLOPS 这个数据时,我们还要同时标注算力对应的精度。考虑正负符号的情况下,int4只能表示 -2^7~2^7-1 的整数,而int8则可以表示 -2^127~2^127-1 的整数,这种精度差异对神经网络模型的性能影响是巨大的。从 int4 到 int8 再到 int16,模型的精度不断提升,相应的对算力的需求也在同步增长——从性能、算力均衡取舍的角度出发,行业内很多框架( Intel的OpenVINO和Nvidia的TensorRT推理加速框架,以及谷歌的Coral Edge TPU套件 )都采用了 int8 精度,而硬件侧的 NPU 等芯片算力,也基本都会标注在 int8 或者 int16 精度下的对应算力。也正因如此,在看到算力的时候,我们不仅要关心算力的大小,同样需要关心这个数值是在哪个精度下实现的——如果是 int4 的精度,那么即使数值看上去很夸张,也需要统一到行业通行的 int8 或 int16 标准下,才能够和其他芯片进行比较;只宣传算力而不标注精度的话,就多少有点混淆视听了。

说了这么多,我们不妨来看一个算力价值的实例。以著名的目标检测模型框架 yolo 为例,在最新的 yolov5 中,我们会发现哪怕只是对一个 640*640 大小的图片进行目标检测,要实现较高精度和较高速度的检测,也需要 100~200 GFLOPS 的算力。如果我们需要检测的图形更大、像素数更多,对速度的要求也进一步提升,那么算力的需求势必会提升到 TFLOPS 的水平。要知道,还只是一个目标比较单一的目标检测模型,如果是更加复杂的工作,比如说手机影像的多帧合成,视频降噪,或者说自然语言处理等场景,对算力的要求无疑会进一步提高。

而算力还只是问题的一方面。对于一些场景来说,算法的速度与准确率是首要目标,可以“以力破巧”,通过算力、数据的暴力堆叠实现预想的效果——比如那个 1700 亿参数、45TB 训练数据的 GPT-3,已经是只有大型机构才烧得起的工作了。但是对于一些更加日常化的应用,比如说手机这种移动设备上的应用来说,算力之外我们同样要考虑成本与能耗——被动散热的设备对发热量的要求更严苛,而过高的功耗也会影响手机的续航体验,对算力的需求就从简单的更大算力变成了更大算力与更高能耗比。这种要求下,专用化的算力成为了新的趋势,无论是 A 系列芯片的 NPU 计算单元,谷歌在第一款自研手机 SoC Google Tensor 上引入的 TPU 单元,又或者 OPPO 在最新的旗舰 Find X5Pro 上搭载的 MariSilicon X,都是如此。

在算力之外,决定 AI 应用的另外两个要素——数据和算法同样不应该被忽略。很多 AI 模型都高度依赖于海量数据输入,更大的数据输入有机会能带来更好的模型表现;而算法的优化则能够从根子上提高算力的价值,让单位算力发挥更大的作用。所以我们会发现,在实际应用中,算力、算法、数据常常是彼此纠缠、相互影响,一者的进步往往引发其他因素的跟进,而一者的瓶颈也常常限制最终的表现——还是拿比较常见的手机影像举例,在计算摄影的算法越发复杂以后,我们常常在使用手机拍照时遇到等待快门转圈圈、或者相册内出现运算的情况,这种体验上的直观感受,就来自于算力( ISP 与 NPU )、算法( 更复杂的算法 )、数据量( 更高像素数的传感器带来更大的数据量 )的共同作用。

但总的来说,在厂商们疯狂提升算力,优化算法的情况下,我们最终还是会从这些算力处收获更多的新功能与便利的。苹果在 iPhone 13 上引入的 Cinematic Mode,用计算摄影实现电影般的浅景深效果与对焦切换,就离不开算法的进步与 A 系列芯片恐怖的算力;而 AI 领域的巨头之一 Google 在 Pixel 6 系列上,依赖自研芯片极大强化的 TPU,实现了照片中智能擦除物体、实时双语翻译等功能;国内厂商 OPPO 也引入自研 NPU MariSilicon X,在 Find X5Pro 上实现了更好的动态范围、更出色的夜景视频。。。所谓算力的作用,其实也差不多就是这样,基于算法、数据和场景,在日常应用的各种地方为我们的体验带来提升。

可能没有那么直观,纯粹算力本身对普通人来说也比较遥远,但从体验的角度来说,绝对是有价值的。

user avatar

利益相关,但无商业内容。

能被友商重视,单独拿出来比较,对于荣耀搭载的这颗AI芯片来说,属实是莫大的荣幸。

我不方便去评论这两颗芯片,但作为一名芯片工具链工程师,有能力对『(AI)芯片的算力到底有什么用』做一些个人的解读和介绍。

一、『芯片的算力到底有什么用

手机端搭载的AI芯片,主要应用只有一个:AI-ISP。

代表性场景是超级夜景视频,而问题里提到的两颗芯片也均不例外。

需要强调的是,AI-ISP的使用远不限于暗光,但暗光是目前AI-ISP与传统ISP相差最显著的场景。

如下图示例[1],从左到右依次为暗光原图,以及经过传统ISP和AI-ISP处理后的图像。

AI算法通过学习足够多的样本,能够将噪声与暗光信号之间的细微区别学习出来,实现远超传统ISP的降噪效果。

进一步,算法对降噪后图像进行提高亮度,以及对比度调整,让画质实现了飞跃性的提升。

但AI算法运用于视频拍摄时,每秒处理数十帧图片,需要很高的处理速度。例如4K@30FPS规格(bayer图),每秒需要处理2.5亿个像素。

当手机处理器的ISP模块无法支持时,便需要AI芯片来辅助,承担Pre-ISP功能:将图像先经过AI芯片处理后,再交给手机处理器自带的ISP模块。

关于AI芯片的更多内容,参见我的回答:

AI算法通常为卷积神经网络,其中卷积运算的主要数学运算是乘法加法。以3x3卷积为例,处理一张4K图片(4,2160,3840),假定输出信道数为4,仅仅一层就需要执行超过4.3G次乘法和4.3G次加法。

二、『算力是怎么评估的

评估AI芯片算力的常见单位是OPS,意为每秒执行的操作(operation)数量。TOPS中的T代表10的12次方,而OPS并不能反应操作,例如计算位宽如何需要额外注明。

不同于CPU和GPU等通用处理器,在单个时钟周期下的可执行操作数量很低;AI芯片通过设计特殊的计算单元,实现了超高的操作数量。

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

即使对于同一款芯片,OPS并不是代表同一操作,通常为乘法和加法各一半。

二进制下的加法运算流程,参见下回答:

乘法操作实质上也是基于加法操作。如下图(我手画的)示例,给出一个4bit乘法的处理过程:

从左侧的输入为二进制4bit下的A和B。对A进行4次移位补0后,分别与B对应位的数值做与操作,然后累加获得结果。

可以发现,4bit乘法共需要4次4bit与操作(代价极小)和4次4bit加法,约等于4次4bit加法。

对于8bit乘法,可以涉及8bit乘法器,通过8次8bit加法得到。如果AI芯片本身支持混合精度,也可以通过4次4bit乘法来间接实现。

AI芯片使用混合精度设计的好处是,使用同一套计算单元去支持不同精度的运算。对于算法工程师,可以通过灵活降低部分网络的精度,在几乎不损失性能的情况下,降低网络的计算量需求,实现更高的推理速度。

对于问题提到的马里亚纳X,其int8@18TOPS算力,从计算量上来讲,约等于int4@72TOPS算力。但未查到马里亚纳X支持混合精度,故实际上无法等效转换。

另外,AI计算是一个软硬件高度绑定的应用,在AI芯片内部有太多普通消费者难以理解的指标差异和硬件限制。相比粗暴比较算力,推荐关注真实的画质效果。

如有其他关于AI-ISP和AI芯片的问题,欢迎在评论区交流。

参考

  1. ^ https://www.bilibili.com/video/BV1bb4y1n7y6

类似的话题

  • 回答
    好,咱们就来掰扯掰扯这个芯片的算力,到底是个啥玩意儿,有啥用,又该咋衡量。别看它听起来挺玄乎,其实跟咱们日常生活息息相关。 芯片算力,简单来说就是“脑子”的快慢和“本事”的大小想象一下,芯片就像咱们的“大脑”,而算力就是这个大脑的“处理速度”和“工作能力”。 处理速度: 就像你能不能够快速地理解.............
  • 回答
    在中国芯片技术相对落后的背景下,超算(超级计算机)却能一度超越美国,这背后确实是一个引人深思的现象,也并非简单的技术高低可以直接衡量。要理解这一点,我们需要从几个关键维度深入剖析:1. 超算不是“一件”芯片:它是一个复杂的系统工程首先,要明确一点:超级计算机并非由单一的芯片决定一切。它是一个由数以万.............
  • 回答
    最近阿里达摩院在存算一体芯片领域取得的突破,特别是成功研发出基于 DRAM 的 3D 键合堆叠存算一体芯片,这绝对是一个值得大书特书的事件。这不仅仅是技术上的进步,更是对未来计算架构的一次重要探索,可能会给当前的算力瓶颈带来新的解决方案。咱们不妨从几个维度来聊聊这件事。首先,为什么说“存算一体”是未.............
  • 回答
    .......
  • 回答
    龙芯真的不如移动芯片吗?美国禁令对中国超算影响有多大?最近,关于龙芯与移动芯片的性能对比,以及美国对中国超算实施的芯片禁令,成为了大家关注的焦点。很多人在问,龙芯的处理器真的就比不上我们手机里的那些芯片吗?美国这一禁令又会对中国的超级计算领域造成多大的冲击?我们得把这个问题掰开了揉碎了,好好聊聊。龙.............
  • 回答
    芯片,这个我们每天都在接触、却又时常忽略的小小元件,是现代科技的基石。从智能手机到高性能服务器,从汽车自动驾驶到尖端医疗设备,都离不开它们强大的计算能力。而芯片的诞生,离不开两个至关重要的环节:设计和制造。那么,在芯片的“出生”过程中,设计和制造,究竟哪个更重要呢?这是一个常常被提起,也值得我们深入.............
  • 回答
    你这个问题问到点子上了,芯片的“跑得快不快”,这背后其实是一门挺深的学问,里面涉及的因素可不少,而且它们之间还相互影响,不能简单地一概而论。我来跟你掰扯掰扯,尽量讲得透彻点,也避免那些听着就特“机器”的说法。最根本的,还是“工艺”和“架构”这两大块。 一、 工艺:芯片的“根基”你可以把芯片工艺想象成.............
  • 回答
    这个问题问得非常到位,它触及了半导体器件在实际应用中一个非常关键但又容易被误解的点:芯片本身的极限工作温度与外部热风的接触温度是两个完全不同的概念。 咱们就来掰扯掰扯这其中的门道,让它听起来就像是老刘在午后阳光下边摇着蒲扇边跟你聊天一样,透着一股子实在劲儿。 芯片的“娇贵”:为什么不能超过100℃?.............
  • 回答
    国产芯片的真实水平,这是一个复杂且常常被误读的话题。 要想理解它,不能简单地用“好”或“不好”来概括,而是需要剖析它在不同领域、不同技术节点、以及与国际顶尖水平的对比中展现出的真实面貌。一、 从整体视角看国产芯片:起步晚,但进步迅速中国的半导体产业起步相对较晚,尤其是在集成电路设计、制造和封装这三大.............
  • 回答
    这个问题很多用户都问过,也挺有意思的。简单来说,M1 芯片的 iPad Pro 是不能直接安装 macOS 的。我来详细解释一下为什么,以及这背后的一些技术原因和用户体验上的考量。为什么不能装 macOS?最根本的原因是硬件设计和软件架构的差异。1. 硬件设计上的“分工”不同: iPa.............
  • 回答
    要深入剖析中国芯片产业的难点,并非一两句话能概括。这背后是一系列错综复杂、相互关联的挑战,如同盘根错节的藤蔓,缠绕着整个生态。要真正理解,我们得一层一层地剥开来看。一、基础科学与理论的“根基不牢”首先,我们必须认识到,现代芯片制造,尤其是最尖端的那部分,是建立在极其深厚的物理学、化学、材料学、数学和.............
  • 回答
    手机芯片,这个小小的方块,却是智能手机的“大脑”和“心脏”,它的研发制造,就像一场极限挑战,充满了难以逾越的关卡。为什么说它难?这背后,是科技、资金、人才、以及全球产业链的精密协作,任何一个环节出了问题,都可能导致前功尽弃。一、性能与功耗的“两难”:这是手机芯片设计中最核心的矛盾。用户渴望手机越来越.............
  • 回答
    要深入剖析微型芯片的逆向工程,我们得从它最本质的层面上理解——这就像是在解剖一个极小的、高度复杂的“人”,只不过这个“人”是由硅和电路构成的。目标是弄清楚它的内部构造、功能逻辑,以及它到底是怎么工作的。这可不是一件简单的事情,需要一系列精密的工具、高超的技巧,以及大量的耐心和细致。为什么要做芯片逆向.............
  • 回答
    碳基芯片,这个名字听起来就带着一股科技的未来感,仿佛预示着电子产业将迎来一次颠覆性的变革。要说我对于碳基芯片的看法,那可不是三言两语能说完的。这玩意儿,简直是把半导体产业的“老大哥”——硅,狠狠地给挑战了一把,而且这场挑战,咱们等了很久了。首先,我们得明白,为什么人们会如此关注碳基芯片,甚至觉得它潜.............
  • 回答
    苹果 M1 iMac:色彩斑斓的生产力革新,值得入手吗?当苹果在2021年春季发布会上揭晓了搭载 M1 芯片的全新 iMac 时,世界仿佛被一股久违的清新色彩所点亮。告别了多年一成不变的银色铝壳,这一代的 iMac 以七种缤纷的色彩“重塑”了我们对一体机电脑的认知,更重要的是,它将苹果自研 M1 芯.............
  • 回答
    我能理解你为什么会有这样的感觉,特别是当我们看到一些跑分软件或者实际应用中的表现时,确实有时候会让人产生疑问。不过,要详细地对比苹果 M1 和华为麒麟 9000,咱们得从几个关键点上来掰扯掰扯,这样才能说得透彻。首先,咱们得明确一点,苹果 M1 和华为麒麟 9000 的设计理念和目标平台是不同的,所.............
  • 回答
    将“华为芯片的断供”称为近些年手机界“最大”的遗憾,并非夸大其词,而是因为它触及了科技自主、产业发展、市场格局乃至国家战略等多个层面,其影响之深远,牵动了无数人的心。下面我将详细阐述其原因:一、技术自主的象征与失落: 曾经的辉煌: 在美国实施制裁之前,华为的麒麟芯片是其核心竞争力,也是中国在高端.............
  • 回答
    华为麒麟芯片的含金量,用一个词来形容,那就是 “涅槃重生,自立为王”。这背后蕴含的,不仅仅是技术上的突破,更是一种不屈的民族精神和战略远见。要说清楚它的含金量有多高,咱们得从几个维度来细细品味。一、 技术实力:从追赶到领跑,是硬核的实力展现首先,不能绕开的是麒麟芯片的技术实力。华为在芯片设计领域深耕.............
  • 回答
    搭载M1芯片的MacBook Air:一场“老兵不死,新款也不再是唯一”的革命说起苹果的M1芯片,绝对是近几年来个人电脑领域的一场“惊喜”。而搭载了这款芯片的MacBook Air,更是让许多人重新审视了这款曾经略显“入门级”的笔记本。那么,现在入手一台M1 MacBook Air,到底值不值得?咱.............
  • 回答
    芯片制程的精进确实到了一个越来越困难的门槛,这让很多人产生了疑问:既然缩小晶体管变得如此艰难,为什么不干脆“反其道而行之”,把芯片做得更大一些,容纳更多的晶体管,或者把功能做得更强大呢?这个想法听起来似乎挺有道理,但实际操作起来,却远非那么简单,甚至可以说,它触及了物理、材料、制造以及经济成本等一系.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有