
人工智能的近期崛起正处于“第三阶段”。第一阶段大约从1956年到1974年,第二阶段大约从1980年到1987年,第三阶段始于1993年。人工智能在前两个阶段发展停滞的主要原因是当时的计算能力无法满足需求。然而,1993年,由于计算能力的显著提升,人们发现“传统算法在一定程度上可以发挥作用”。1997年,IBM制造出了“深蓝”,并击败了当时的国际象棋世界冠军加里·基莫维奇·卡斯帕罗夫。
然而,在当时,“深蓝”是一项相当蛮力的壮举,它使用一个配备 512 个专用 VLSI 芯片的 32 节点 RS/6000 系统,每秒可以预测 2 亿步,而且这种技术还不常见。
使这项技术更加普及并被研究人员广泛应用的转折点是2012年的ILSVRC(ImageNet大规模视觉识别挑战赛)。在这次比赛中,多伦多大学基于卷积神经网络的“ AlexNet ”取得了卓越的成绩,并荣获第一名。此后,此前探索其他方法的研究人员纷纷转向卷积神经网络(CNN)。很快,CNN就成为了人工智能第三次浪潮发展的核心。
那么,卷积神经网络(CNN)究竟是什么?在开发人工智能时,考虑对人脑结构进行建模是很自然的事情。其理论基础源于弗兰克·罗森布拉特博士1958年发表的论文《感知器:大脑信息存储和组织的概率模型》。该论文构建了一种机制,用感知器进行数值计算,从而模拟大脑的结构。
人们曾多次尝试利用这项技术来实现人工智能。例如,成立于1983年、正值人工智能发展第二阶段的美国公司Thinking Machines,于1985年发布了名为“CM-1”的系统。该系统由65,536个1位处理器(3位输入,2位输出)组成。每个处理器都对应大脑中的一个神经元,处理器之间的连接则类似于大脑中的突触。当时的尝试是利用感知器来实现人工智能系统,但尽管65,536个处理器在当时已是一个相当大的数字,但与人脑相比仍然相形见绌。因此,CM-1及其后续产品更多地被用作高性能计算(HPC)系统,而非用于人工智能研究。
那么,多伦多大学的研究为何能做到CM-1无法做到的事情呢?答案归根结底在于计算性能的显著提升。CM-1拥有65,536个1位处理器,每个处理器配备4Kbit的SRAM,最初的原型机运行频率约为4MHz。在执行32位加法运算时,系统整体性能约为1,000 MIPS,内存带宽至少为32Mbps,典型值约为1Gbps。
相比之下,多伦多大学很可能使用了基于费米架构的NVIDIA Tesla显卡,即使是入门级的C2050型号也拥有1.03 TFlops的计算性能和144 GB/s的最大内存带宽,与CM-1相比性能有了显著提升。AlexNet模型使用了两张这样的显卡,并以满负荷运行了大约两周。如果使用CM-1完成同样的任务,则需要70多年。简而言之,计算能力的显著提升使得这项任务成为现实。
CNN需要什么?
既然说到这个话题,我们就以 AlexNet 为例,进一步解释一下。图 1 是 AlexNet 的结构图。图中数据从左到右流动。首先,最左边的元素是输入图像,它是 224x224 像素的 RGB 数据。然后,它通过 96 个不同的滤波器(每个滤波器 11x11 像素)进行 55x55 的卷积。由于每个滤波器都会产生一个卷积结果,因此总共有 96 个 55x55 的输出。对这些输出应用激活函数,然后进行最大池化操作。

接下来,结果再次经过卷积、激活函数和最大池化。然后对结果进行三次卷积。经过第三次最大池化操作后,通过全连接过程获得最终输出。AlexNet 的目的是对输入图像进行分类,由于有 1000 个可能的输出候选结果,因此全连接输出将产生 1000 个结果。
无需赘述每个步骤的细节,卷积运算的计算过程如图 2 所示。这里展示的是一个 3x3 的滤波器应用于 6x6 的输入数据,得到一个 4x4 的输出。然而,每个 4x4 的输出都需要 9 次乘法运算和一次加法运算,因此,要得到这个卷积结果,总共需要 144 次乘法运算和 16 次加法运算。

顺便一提,之所以加法运算次数如此之少,是因为人工智能计算机通常都具备一种机制,允许同时执行多个加法运算。如果没有这种机制,每次都需要执行 8 次加法运算,总共需要 128 次。在上图 1 中,第一个卷积层将一个 11x11 的滤波器应用于一个 224x224 的输入,最终得到一个 55x55 的结果(这里是 55,因为我们使用了 4 的步长,这意味着我们每四步计算一次;通常情况下,输出应该是 216x216)。在这种情况下,所需的计算次数为 11x11x55x55 = 366,025 次乘法运算和 363,000 次加法运算。此外,对 96 种类型的过滤器中的每一种都进行此操作,因此总共需要进行 35,138,400 次乘法和 34,848,000 次加法。
假设CPU运行频率为1GHz,每个周期执行一次加法或乘法运算,那么整个过程大约需要0.07秒。然而,问题在于这仅仅是第一层的处理时间。卷积运算之后会无限循环,导致总计算量巨大。
更糟糕的是,与之后出现的各种卷积神经网络(CNN)相比,AlexNet 的计算量相对较小。2015 年,微软在 ILSVRC 大会上发布了 ResNet,其错误率远低于人类(3.57%,而 AlexNet 为 16.4%,普通人的正确率为 5.1%),因此备受赞誉。但 ResNet 的网络结构高达 152 层。毋庸置疑,其计算成本极其巨大。
GPU流行起来的原因
当时,使用GPU显卡来构建和训练AlexNet(据说用两张GPU显卡就花了两个星期)是必要的。简而言之,唯一的原因是GPU是唯一能够以合理速度处理如此庞大计算量的设备。
2007 年,NVIDIA 发布了 CUDA,作为 GPU 的通用 API,并于同年利用 CUDA 推出了面向高性能计算和其他应用的 Tesla 系列服务器 GPU。同年,AMD 也开始提供一系列支持 OpenCL 的服务器 GPU(FirePro 系列),OpenCL 由 Khronos Group 标准化。
使用GPU在这里带来了诸多优势。其中之一是计算本身固有的高度并行性。以图2为例,Z1、Z2和Y1的计算可以彼此独立地执行。GPU中使用的SIMT(单指令多线程)机制的工作原理是:指令本身(在本例中为3×3乘法及其结果的加法)是通用的,而每个线程处理的数据各不相同。SIMT类似于SIMD,但区别在于SIMT的同步是在线程级别而非指令级别进行的。在图2中,16个操作Z1-Z4、Y1-Y4、X1-X4和W1-W4可以分别分配给不同的线程并同时处理。当然,在实际应用中,需要处理的数据量要大得多,但可用的线程数量也更多。
例如,Fermi 架构拥有24,576 个可用线程。当然,不可能同时运行超过 20,000 个线程(因此大多数线程只能耐心等待轮到自己处理任务),但考虑到诸如内存访问之类的等待时间,这个线程数量足以维持稳定的运行状态。
另一个优点是它不需要太多内存。回到图 2,即使源数据、滤波器和结果都采用 FP32 格式,所需的数据大小也仅为 244 字节。然而,计算仅需 272 次运算(144 次加法)。换句话说,它可以在低于 1 Flops/Bytes 的带宽下运行,即使在没有大缓存的 GPU 上也能轻松执行。
即使以图 1 中 AlexNet 的第一层为例,其输入为 224x224 = 196KB,滤波器为 11x11x96 = 45.4KB,输出为 55x55x96 = 1134.46KB。总大小约为 1.3MB,完全可以放入 L2 缓存中。另一方面,如前所述,其计算复杂度约为 7000 万次迭代。考虑到计算复杂度和所需内存(缓存)大小之间的平衡,显然这是一个计算密集型配置。(即使在今天)当时的 GPU 的内存带宽未必足以满足其计算性能,但对于 CNN 而言,通过一些巧妙的方法似乎可以高效地处理它们。
最重要的是,GPU最大的优势在于其极易获取。2012年ILSVRC发布后,研究人员纷纷抢购GPU并开始自己的研究。结果,NVIDIA的Tesla显卡很快变得一货难求,甚至出现了抢购消费级GeForce显卡的风潮。GeForce显卡在任何电脑商店都能买到,这对人工智能研究人员来说极其便利。此外,CUDA比OpenCL更容易使用(毕竟AlexNet是用CUDA编写的,研究人员也纷纷效仿),人工智能与CUDA的联系迅速形成。此后,一切都只是扩展和复制的过程。
NVIDIA 在 2014 年 GTC 大会主题演讲的第三部分专门讨论了人工智能(当时称为机器学习,而非 AI),并在第四部分展示了一款基于 CUDA 的自动驾驶汽车,这充分展现了其对该领域的投入。而像 AMD 这样的竞争对手直到很久以后才开始谈论人工智能/机器学习,这进一步强化了“如果你想使用人工智能,就需要一块 NVIDIA GPU”的观念。
GPU上的AI处理
然而,需要注意的是,虽然GPU具备一些适用于人工智能的特性,但它们并非专为人工智能而设计。NVIDIA自身也深知这一点,并将继续根据具体情况,对GPU的人工智能专用功能进行增强。
首先,我们引入了张量核心(Tensor Core)。在卷积神经网络(CNN)中,卷积运算通常会占用超过90%的总计算量。为了更高效地处理这些运算,为系统配备专门用于二维运算(例如矩阵运算)的计算单元,而不是仅仅用于常规运算或一维单指令多数据流(SIMD),显然更为明智。基于这一理念,张量核心于2017年在Volta架构中引入。
接下来是改变数据类型。在卷积神经网络(CNN)中,研究证实,提高整体计算性能而非提升每次计算的精度,能够带来更好的最终结果。换句话说,如果使用 FP32 而非 FP64 来提升计算性能,同时运行规模翻倍的网络,则可以在相同的吞吐量下获得更好的结果。如果降低每次计算的精度,例如使用 FP16/BF16 或 FP8,并通过构建更大的网络来弥补精度损失,则可以获得更好的结果。
因此,继 Tensor FP32(取代 FP32)、FP16/BF16(此前未用于数值计算)和 FP8/FP6 等类型之后,最新的 Blackwell 版本又增加了对 FP4 的支持。尽管 FP4 的速度并非简单地比 FP64 快 16 倍(因为存在数据路径优化等硬件相关问题),但对 FP4 的支持确实带来了显著的性能提升 (*1)。
(*1)实际上,对 FP64 和其他方法的硬件支持已经减少,部分运算现在由软件实现。因此,自 Blackwell 世代以来,FP64 的性能大幅下降,考虑到这一点,FP4 的性能不再是 FP64 的 16 倍。
然而,使用大规模网络也意味着消耗大量内存。只要数据宽度减半,网络规模仅翻倍,内存就不会短缺。但实际上,网络规模的增长速度远超翻倍。此外,虽然像 AlexNet 这样的小规模网络可以使用 L2 内存进行管理,但后续的网络规模都大幅增长,不仅网络层数更多,而且规模也更大,因此大量的内存访问不可避免。这意味着我们需要提升内存容量和内存带宽,而 NVIDIA 正通过集成 HBM 内存来解决这个问题。
然而,各种难题也开始显现。首先是电源问题。Ampere架构A100的TDP为250W,Hopper架构H200为700W,Blackwell架构B300为1400W,这些数值都给数据中心的电源供应带来了挑战。因此,NVIDIA正大力推动从2025财年开始采用800V电源。这是因为,近期发布的基于Vera Rubin核心的NVL144据说每个机架的功率为120-140kW,而下一代搭载Rubin Ultra核心的NVL576据说每个机架的功率高达600kW,如此巨大的电流在传统的100-200V电源下难以满足需求。
我们确实也在努力跟上LLM和Aggressive AI等新趋势。由于SIMT架构,我们同时处理的数据越多,结果就越高效。这被称为批处理大小,在LLM中,它是一个表示一次处理多少个字符或句子的数值。当批处理大小较大时,GPU效率很高;但当批处理大小减小时,GPU的性能会突然下降,或者不再提升。
关于LLM,NVIDIA提出了在2025年实现独立推理的方案,并开源了一个名为Dynamo的新框架,同时表示将使用该框架进行实现。Dynamo旨在将LLM推理分解为两个阶段:预填充和解码。预填充阶段由传统的GPU处理,而解码阶段则由新推出的名为Rubin CPX的GPU处理。
然而,这项计划今年已被取消,预填充将采用传统的 Rubin 处理器。取而代之的是,解码将采用三月份 GTC 大会上宣布的“Groq 3”处理器。就在六个月前,他们还在 2025 年 10 月的路线图中大肆宣传“CUDA Everywhere”,如今却采用了不兼容 CUDA 的处理器,这暴露了他们 GPU 的局限性。
另一点需要指出的是,SIMD 结构本身难以处理稀疏性(稀疏矩阵)。稀疏矩阵是指元素包含“0”的矩阵。图 3 是图 2 的修改版本,其中滤波器的元素为零。在这种情况下,理想情况下计算量应该显著减少,如图中下方所示,但实际上,计算中却包含了不必要的零乘法和零加法,如图中右下角所示。如果可以省略这些操作,计算效率会更高,但这在常规矩阵计算中很难实现。

NVIDIA 针对稀疏矩阵提出了多种解决方案。例如,Ampere 架构中引入的稀疏矩阵支持机制,会预先检测滤波器中的零元素,通过移除这些元素生成压缩矩阵格式,然后使用该格式进行卷积运算以提高效率。然而,如果原始数据本身就是稀疏的,这种方法就无效了(不压缩数据比每次都压缩数据更快)。虽然这并非致命问题,但无疑是其缺点之一。)
人工智能处理器/加速器
人工智能处理器和人工智能加速器的研发始于 2010 年代初期。确切地说,2010 年代初期的许多设备最初是媒体加速器或 DSP,并非专门针对人工智能,但后来为了利用人工智能市场的崛起,改变了方向,转而瞄准人工智能。
另一方面,从2010年代末开始,使用GPU的AI的缺点和不足逐渐显现,导致越来越多的制造商开始设计能够弥补这些缺点或针对GPU不适用的市场而设计的AI处理器/加速器。当然,不同目标市场的配置差异很大,但如果要强调一些特点,
极其擅长人工智能计算
GPU(尽管其可靠性日益下降)能够进行通用计算。它们支持 FP4、FP8/BF16、Int 4/8/16/32 和 FP32/FP64 等数据类型,并且涵盖的功能远不止基本的算术运算。
虽然它并不完全包含位操作,但它可以执行条件分支和相当通用的数值计算。相比之下,许多人工智能处理器/加速器仅支持对特定数据类型进行卷积和激活函数运算。有些甚至完全放弃了执行控制,许多加速器只是简单地将数据写入内存,然后触发执行命令,结果会在一定数量的周期后出现。
然而,这种方法往往缺乏通用性,因此在实践中,许多制造商采用了一种结构,将通用 CPU 内核(这里经常使用 RISC-V 内核,不仅是因为许可和版税的原因,还因为内核可以修改)与专为 AI 计算设计的加速器相结合。
实现方法多种多样,但一种常见的做法是修改指令流水线,并将AI指令的控制权完全交给AI加速器。这样,即使未来开发出新的算法,现有计算单元无法处理,仍然可以通过通用CPU内核的ALU来处理(尽管性能会有所降低)。
数据流
尽管数据流的实用性早已在学术论文和其他出版物中得到广泛讨论,但它尚未在商业产品中得到应用。然而,它在人工智能处理器中已变得如此普遍,以至于那些没有采用数据流的处理器似乎成了少数。
本质上,当多个执行单元(通常称为 PE:处理器元件)按顺序连接时,其机制是“当前一个 PE 的输出到达时,它将其作为输入并开始处理,处理完成后,它进入等待状态”。利用这一机制,例如,可以非常轻松地实现使用稀疏矩阵的卷积(图 4)。系数为 0 的 PE 根本不接收输入(因此它们不工作,从而降低了功耗),并且由于它们不产生结果,因此不会发生不必要的加法运算。

更积极主动地利用数据流的方法是改变处理流程本身。以GPU(或者更准确地说是SIMT)为例,处理程序(在NVIDIA术语中称为内核)原则上对所有线程都是通用的。之所以说“原则上”,是因为当然存在例外;并非不可能为每个捆绑在一起的多线程单元(称为线程束)更改内核。然而,这容易做到吗?答案是否定的;这相当困难。
为了简化起见,我们假设内核对所有线程都是相同的。以 AlexNet 为例,同样为了简化起见,我们假设该过程包含 6 个步骤:5 个卷积层(激活层和最大池化层被视为卷积层的一部分)+ 全连接层。在非数据流方法(例如 GPU,这里也包括 DSP 和通用 CPU)中,该过程采用分时方式,并按照图 5 左侧所示的顺序进行卷积,从 #1 到 #2 以此类推。然而,由于每个进程都需要切换,因此开销相当大。

另一方面,如图 5 右侧所示,在数据流中,可以像 CPU 流水线一样,将处理任务划分并分配给各个进程。这种方法可以根据每个进程的负载调整分配的 PE 数量,从而轻松优化负载,最重要的是,由于无需更改单个 PE 的处理方式,因此可以最大限度地减少开销。如果 PE 容量充足,还可以同时运行多种类型的网络。这种灵活性对于 AI 处理器/加速器来说非常理想。
CIM(内存计算)/PIM(内存处理器)
无论名称如何,原理都是一样的。
具体来说,从功耗角度来看,处理器中最耗电的活动是数据传输。简而言之,运算单元和内存之间的数据传输所需功率最大,因为数据要从内存移动到运算单元进行计算,然后将结果返回内存。
其理念是,如果将内存单元和运算单元集成到一个单元中,就能降低功耗。顺便一提,这种理念以前也曾有人尝试过,但最终都失败了,例如NeoMagic的“ APA”和Connex Technology的“ CA1024 ”等早期产品,但令人惊讶的是,它与人工智能的兼容性非常好。
这是因为,从面积角度来看,在PIM/CIM系统中实现复杂的ALU(算术逻辑单元)比较困难,但卷积运算的实现却很简单,因为它本质上只涉及加法和乘法。而且,由于超过90%的计算都是卷积运算,因此降低卷积运算的功耗对整个系统的影响非常显著,性价比很高。
在这方面,三星已经研制出将处理器集成到HBM中的AI加速器原型,SK海力士也对GDDR内存进行了类似的研究,两家公司目前都在继续推进商业化研发。英特尔也在2022年超大规模集成电路研讨会上宣布,将把处理器集成到CPU的L3缓存中(尽管这似乎仍处于研究阶段,并非旨在商业化)。此外,稍后将解释的模拟处理器,原则上也可以被视为一种CIM/PIM。

虽然 CIM/PIM 由于其电路尺寸的显著限制,对于通用处理器实现而言并不实用,但它作为卷积运算加速器却被认为相当实用,而且接下来要讨论的许多 SRAM 实现也正在以类似 CIM/PIM 的方式进行考虑。
大量SRAM
这与CIM/PIM相关,但AI处理器/加速器配备了大量PE(处理单元)以提升计算性能。显然,提高运行频率并非可行之策(因为性能/功耗比会急剧下降)。这意味着需要大量的内存,但片外DRAM带宽低、延迟高,且涉及片外数据传输,会增加功耗,因此通常被避免使用。因此,目前的趋势是采用大量的SRAM。
或许,Cerebras 的“WSE(晶圆级引擎)”是这一光谱的极端代表。最初的“WSE-1”拥有 40 万个处理单元 (PE) 和 18GB 的 SRAM,而最新的“WSE-3”则拥有 90 万个处理单元 (PE) 和 44GB 的 SRAM。当然,这些功能都无法集成到单个芯片上,因此 WSE-3 是一款边长 21.5 厘米的正方形芯片(?),由 84 个芯片组成。
通常,人工智能处理器/加速器(尤其是数据中心用的)往往采用配备大量SRAM的大型芯片。顺便一提,这些SRAM通常被用作暂存区(ScratchPad),也就是说,它是一块可以由处理器(PE)显式访问的内存区域,而不是缓存。此外,通常采用CIM/PIM方法,将SRAM放置在各个PE附近,并在本地SRAM中执行处理,以减少数据传输。
超高速DRAM
超高速DRAM,毋庸置疑,指的是HBM。虽然功耗和价格更高,但它能提供比普通DRAM更高的带宽。特别是,由于LLM(低级存储器)的快速普及和发展,片上SRAM已不再足够。因此,近年来,AI处理器通常每个芯片集成2到4个HBM芯片。目前,虽然一些CPU也采用了HBM,但大多数都是面向AI的处理器或GPU,这也可以说是AI处理器的一个特点。
模拟处理器
模拟处理器更适合边缘计算而不是数据中心,但也有一些例子表明,通过使用模拟电路执行卷积运算,它们可以同时实现节能和高性能/低成本。
例如,Mythic 使用闪存将存储单元视为可变电阻器,从而能够利用模拟电路对由数模转换器 (DAC) 转换为模拟信号的输入数据进行乘法和加法运算。Aspinity 的“AnalogML”也旨在利用名为 RAMP(可重构模拟模块化处理器)的引擎实现基于模拟的计算。
虽然其配置不太适合数据中心,但该公司正通过强调其极低的功耗(几瓦)以及由于采用模拟电路而可以使用相对老旧的工艺制造(因此制造成本低)来拓展销售渠道。最近,以色列公司 CogniFiber 也受到了关注,该公司正在开发一种使用光纤的 AI 加速器。
- 还没有人评论,欢迎说说您的想法!
