Simon Knowles智源大会分享:芯片和算法之间存在巨大错差,没有通用的XPU
在6月9日开幕的2023北京智源大会上,Graphcore联合创始人兼CTO Simon Knowles发表了题为「Matching Silicon to Al Algorithms」的演讲,阐述了他关于人工智能芯片设计和人工智能的思考,探讨了如何推进芯片设计者和人工智能算法设计者协作以在未来取得更好的人工智能成果。
精彩观点摘要
人工智能的投资重心已经从能力阶段转向部署阶段。
过去十年人工智能的提升只有少量来自架构创新。然而现在人工智能市场已经足够大,我们将会看到更多的架构创新。
晶体管密度、晶体管成本、以及每瓦特性能的改善将会非常缓慢,人们仍然希望构建更复杂的单个节点。因此,你会越来越多地看到人们将硅片组合成更大的组件。换句话说,硅封装技术方面的创新。
我们应该构建拥有大量存储带宽但没有太多的浮点运算次数的芯片。它们将更便宜,功耗更低。换句话说,我们突然之间面临着我们构建的昂贵芯片和目前对我们最有价值的算法之间的巨大错差。现在,已经没有通用的XPU。
点击小程序,观看演讲
以下内容整理自该演讲
经过多年的大量研究,人工智能已经发展到了一个明显具备广泛实用性的强大阶段。投资重心已经从探索人工智能的潜力(即能力阶段)转向了人工智能的部署,注重提高效率。芯片技术也相应地进行了调整。然而,目前的人工智能部署非常昂贵,训练模型是非常昂贵的,将其应用于推理阶段也是非常昂贵的。
那么,我们能对此做些什么呢?AI处理器在执行任何算法(尤其是在AI领域)时,主要依赖以下资源:矩阵运算(flop/s @pJ/flop);存储容量(Bytes @~zero power),存储在不访问时不消耗任何功率,只有在访问(读写)时才消耗能量;存储带宽(Byte/s @pJ/Byte);以及芯片之间的数据传输(Byte/s @pJ/Byte)。
在过去的10年中,我可能将其称为第一个AI十年,典型的图形处理器(GPU)在可部署的AI领域中的每秒flops性能大约提升了300倍。我指的是一个芯片的性能提升约为300倍。我将2014年使用32位浮点数的NVIDIA Maxwell与2023年使用8位浮点数的Hopper进行了比较。这种提升是从何而来呢?我在这里进行了拆解。这些都是乘法因子,它们相乘的结果为约300。大约一半的提升来自使用较小数格式的矩阵乘法,也就是从32位浮点数转向8位浮点数。其余的大部分来自硅工艺的改进,在那段时间内,晶体管密度大约提高了8倍,从28纳米降至5纳米。另外,大约有1.7倍的提升来自时钟速度的增加,从1.05升至1.85吉赫兹,但这在功耗方面是非常昂贵的,芯片的功耗大约增加了三倍。最后,少量的改进来自GPU架构方面。我认为这是因为GPU在图形领域已经得到广泛应用,很难在不破坏图形性能的情况下将这些芯片进一步发展为适用于AI的芯片。现在,我认为人工智能市场已经足够大,可以将这两种芯片类型分开。我们将会看到更多的架构创新。显然,我们的公司也在努力进行架构创新。
经常有人问我,构建一个每秒浮点数一百万亿次(petaflop),以及为了能够与本地存储进行交互所需的寄存器文件,需要多大的芯片面积。这张图表显示了一个大框,尺寸为32乘以25.7平方毫米。这是任何一个工厂所能制造的最大芯片面积。整个芯片生态系统都以这种最大芯片尺寸为基准,所有步进机器、晶圆处理机器和掩膜制作机器都制造这种尺寸的芯片。它可能看起来像是一个奇怪的尺寸,但事实就是如此。而且,如果有一天它真的发生变化或变大,那将是一个非常长的时间。因此,在任何工艺技术中,没有人可以制造超过约823平方毫米的芯片。该芯片中,大约四分之一的面积用于实现每秒一百万亿次浮点运算的16位算术单元,配备小型寄存器文件,并同时支持8位浮点运算作为备选模式。这种模式正得到越来越多的应用。这是在假设其运行频率为1.85吉赫兹,并且采用五纳米工艺的情况下。这大致是目前Hopper所处的水平,也是我们最新一代芯片所采用的工艺。
坏消息是晶体管密度实际上不会有所改善。这个图表上显示的标准化密度与大约量产年份的数据点都是真实存在的。我曾经经历了这些点上处理器生产的各流程,除了最右边的最后两个点外,右边的第四个点是三纳米,在那之上,是我们当前期待的2纳米。你可以看到,我画了两条线。一条是逻辑线,逻辑晶体管成对出现,一个N型一个P型,和MOS互补。SRAM单元是芯片上的静态存储单元,需要六个晶体管来存储一位(bit)。因此,通常芯片设计者以成对的逻辑晶体管和六个SRAM晶体管的组合来思考。你可以看到,SRAM在最后一个工艺,也就是5纳米工艺中停止了进一步的密度提升。事实上,3纳米工艺的密度稍微低一些,而2纳米工艺大致相同。逻辑部分略微扩展了收缩能力,但只是通过减少晶体管鳍片的数量来实现,这使得晶体管变得更弱,控制能力减弱,它们可能会减少到一个鳍片,即进一步的减少步骤,但你可以看到总体趋势与存储相同,即密度改进趋于平稳,晶体管每平方毫米不再增加。在过去的25年里,我们的晶体管密度每平方毫米增加了2000倍。现在这个趋势已经结束了。
当然,目前业界也在努力提高晶体管密度。会有进一步的改进,但进展将会比较缓慢。关键的是,它们不会改善晶体管的成本。在这里,我列出了IMEC和TSMC路线图上的三个内容。在2纳米技术中,我们将看到所谓的纳米片场效应晶体管。在这种技术中,垂直鳍片被水平的鳍状结构取代,这些结构被堆叠放置在彼此上方。这使得晶体管能够在低电压下工作,因此提供了能量改进,但并没有提供密度改进。同时,在2纳米技术中,TSMC宣布他们打算实现埋藏式电源轨道。这是一项非常复杂的技术,能够增加15%的净密度(TSMC估计)。这将于2026年被应用在XPU中(此处使用XPU一词表示GPU、TPU、IPU等任何形式的算术加速器)。下一个重大的进步还需要10年的时间,而且从工艺工程的角度来看,这个改变非常巨大。N型和P型晶体管将堆叠在彼此上方,可以实现额外50%的密度改进。但这需要10年的时间。
那么,现在正在发生什么呢?人们仍然希望构建更复杂的单个节点。因此,你会越来越多地看到人们将硅片组合成更大的组件。换句话说,硅封装技术方面的创新。封装听起来可能很无聊,但其中一些实际上非常有趣并且非常困难。我在此简要展示了一些示例。AMD MI250X将2个大芯片安装在硅中间层上,带有HBM存储堆栈,然后通过封装基板内的埋藏式桥梁彼此连接。英特尔的Ponte Vecchio可能是迄今为止最有雄心壮志但也是迄今为止最昂贵的GPU构建,它在一个基板上使用两个大型硅中间层,总共有42个独立的硅芯片。还有一些更保守但更经济的例子。在苹果的笔记本和台式机处理器中,他们将LPDDR预封装存储组件安装在与裸硅芯片共享的有机基板上。这很有趣,因为通常这些存储会安装在PCB上,将它们安装在基板上可以实现更高带宽。AMD Milan-X及以上的芯片使用一种称为Chip-on-Wafer的技术,在处理核心上方安装了一个L2高速缓存硅片,然后将这些核心围绕一个I/O芯片排列在基板上,形成一个相当复杂的组合。特斯拉D 100是迄今为止最雄心勃勃的项目之一。这是一个重组的晶圆。这项技术在手机上已经使用了很多年,尺寸大约为一个平方厘米。但这是首次在跨30厘米的尺寸范围内应用。我们自己的芯片是第一个Wafer-on-Wafer垂直组合,换句话说,我们可以在晶圆规模上将硅片放置在彼此上方。这非常有趣,因为垂直插入的间距比Chip-on-Wafer技术要细得多。这使得在垂直堆叠的芯片之间可以实现巨大的垂直带宽,至少每秒数万兆字节,可能甚至达到每秒数百万兆字节。显然,这使你能够构建表现得类似更大的硅芯片的东西。
硅片演变的另一方面是每瓦特性能的演变,即能量部分。我们都听说过Dennard扩展定律在90纳米时结束。在这个点,在硅扩展时代的大部分时间里享受的能量扩展突然停止了。我们从每年大约66%的性能改进(ops per Joule),变成了大约18%。我们现在正处于第三个时代,从现在开始,每年的改进将少于10%。我称之为恒定电压时代(Constant voltage era),它并不是完全恒定的,但几乎可以视为恒定。在此,你看到了和之前同样的特点,换句话说,我们不仅不会在硅芯片中获得更多的晶体管,而且每个功能的能量(energy per function)也不会有太大的改善。它会有改善,但不会太大。
在系统层面上,能源的经济意义有多大?很明显,它在环境上也很重要,我们都在努力建造我们能做到的最低能耗的计算机。但在经济上这是一个大问题吗?这里我展示了一个非常大规模的计算机的粗略明细。大约三分之二的成本是底架设备,消耗的电力大约只有10%,在电力昂贵的区域这可能高达15%甚至20%,但在大多数地区它只有大约10%。然而我们还有另一个组成部分,占15%至20%,那就是基础设施的成本,在你改变能源时,它也会随之改变。在一个大规模的计算机系统中有很多基础设施,你要为它们提供电能,散去热量。这影响到一些基本的事情,比如一个数据中心的大厅需要多大。基础设施与供应的电力成正比,如果你把它加到实际消耗能源上,那么你可以看到,运行大型人工智能计算机的成本大约有1/3与能源部分成正比。这是很大的一部分。
今天我们处于什么位置呢?正如许多人所熟悉的,对于当前部署的AI系统,训练一个大型模型所需的能量约为每次浮点运算3皮焦耳,例如训练一个大模型,或是像Transformer这样的语言模型。这意味着如果我们有10亿个参数,对20亿个标记进行训练,按照目前的计算,我们可能需要250个芯片(100kW)运行1个小时。如果我们将这个规模扩大1000倍,并且相应地扩大标记规模,那么我们将需要25,000个芯片(10MW)运行一年。这就是为什么目前部署万亿参数的密集模型非常昂贵。目前有万亿参数的稀疏模型,但是它们不是密集模型。所以,我们今天在实际可行性的尺寸上达到了极限。正如我所说的,我们无法在模型上取得更大的改进。
为什么我们就不能让XPU运行得更快呢?为什么我们不增加时钟频率?例如,你们中的许多人可能知道,CPU通常以三或四吉赫兹的速度运行,GPU和IPU只以略低于两吉赫兹的速度运行,Google的TPU只运行在略高于一吉赫兹的速度。你可以让硅晶体管比今天运行得更快。我展示了过去几个工艺节点中晶体管的速度与工作电压的变化,你可以晶体管速度越快,曲线越陡。有趣的是,它们相交的点,也就是它们都不以任何频率运行的点,并不在零伏特处,而是在阈值电压处,大约是0.4伏特。因此,这意味着当你将芯片的供电电压降低到接近0.4伏特时,速度会迅速下降。
如果我们将energy/op和op/s都归一化,并绘制它们之间的关系,我们可以得出另一条曲线。图中的小圆圈是NVIDIA、Graphcore和其他一些公司选择的运行范围。该点被校准为7纳米或5纳米工艺,约1.85吉赫兹@800mV。那么,为什么我们选择了这个点呢?从图中可以看出,该曲线在该点上开始变得超线性,这意味着功耗随着性能的增加而超二次方地增加,增长非常快。我们可以选择每次运行时在消耗增加40%的情况下将运行速度提高20%,但这太昂贵了,我们选择不这样做。我们也可以选择节省功耗。我们可以使速度变慢40%,这样每次操作的能量消耗就会减少40%。在未来当能源变得更加昂贵时,为了节省能量我们可能会这样做。不过性能的成本相当高,人们非常渴望尽可能获得更高的性能。因此,你可以看到,我们拥有可以改变XPU运行速度的灵活性,但这种灵活性是非常昂贵的,这就是为什么所有XPU使用者倾向于以大致相同的速度运行。
有一件事是我们现在可以做的,这也是Graphcore的一项创新。我们至少可以确保尽可能地利用供电电压。对于任何试图平稳提供电能的能源来说,大型硅芯片都表现出非常非线性的负载。软件可以使芯片在一个时钟周期内从零活动转变为最大活动。然而,之前没有电源能够跟上对电流的如此剧烈需求。最新芯片的电源或许可以跟上。Graphcore的创新是将第二个硅晶圆连接到逻辑晶圆。第二个硅晶圆利用了我们称之为深沟电容器的技术。这是一种非常独特的技术,使用了与将图像连接到手机逻辑处理芯片中使用的Wafer-on-Wafer技术相同的方法。因此,这也是将已经存在的技术创新地实现在了完全不同规模的晶圆尺度上。在右侧,你可以看到这对供电电压的影响。上方的曲线是没有这种技术时的情况,而下方的曲线显示了使用这种技术后供电电压的情况,非常平滑。这使我们可以降低平均供电电压。由于芯片的能量与供电电压的平方成正比,因为它是一种电容技术,这可以显著降低功耗。事实上,即使不改变逻辑电路,我们可以节省40%的功耗,或者在相同功耗下获得40%的速度提升。根据之前展示,这相当于几乎免费获得了一个整个工艺节点的效果,而且非常廉价,比推进工艺更加划算。所以,至少我们可以做到这一点。
能量去哪了?这是一个Graphcore最新的芯片Colossus Mk2x上处理器tiles的能耗明细,该处理器使用Wafer-on-Wafer。每个浮点运算消耗约1皮焦耳的能量,这是在fp16的情况下,我们也支持fp8。你可以看到,实际上大部分功耗被用于浮点运算,其余大部分功耗用于从本地存储到浮点数数据路径的数据传输,大约一毫米甚至半毫米的距离。几乎没有多少功耗没有用于我们想要进行的工作。黑色部分被称为无操作循环(nop loop),这是构建处理器的开销。换句话说,即使它是固定功能的,我们仍然需要蓝色和橙色部分。我经常听到有人声称,如果我们为此构建固定的硬件,它会比构建处理器更高效。这是不正确的。现代处理器的编程封装,特别是针对这种类型的应用,非常轻量且成本很低,不占用太多的晶体管或能量。因此,我们在正确的地方使用能量。
我们能做些什么呢?我们已经降低了算术精度,目前降低到了8位。现在有一个IEEE标准组正在致力于低精度算术,目前达到了8位,可能会继续发展到4位。右侧的图表显示了在水平轴上,使用目前IEEE提出的两种不同的8位浮点格式进行Transformer训练时可以达到的收敛范围。其中一个格式具有四个指数位和三个尾数位,另一个格式具有五个指数位和两个尾数位。你可能会发现,上面的格式对于权重和激活效果非常好,与32位浮点数一样好。下面的格式对于梯度也效果很好,甚至在某些情况下比32位浮点数更好。因此,8位算术效果良好,而且节省了很多功耗。
那么4位算术呢?最近有一些研究探索了算术缩放,特别是Dettmers和Zettelemoyer的一篇论文。看起来4位数字编码可能是推理的精度缩放的极限。这意味着我们可以在改进曲线方面更进一步。4位浮点数约为8位浮点数matmul能耗的一半,累积路径具有相当高的精度,开始变得显著。这并不仅仅是乘法器的问题,乘法器确实会大幅缩小,但累积路径也是如此。使用4位浮点数可能会使浮点运算每秒增加大约2倍。我要提出的另一个有趣观察是,至少在大脑的某些部分,突触的分辨率似乎约为4.5位。有一篇引人入胜的论文证明了在人类大脑的海马体中,有26个可解析级别,以对数方式分布在一个范围内,看起来有些类似于4位浮点数。如果你相信我们正在朝着类似大脑的结构演变,这可能会有所帮助。
考虑到我刚刚告诉你的一切,硅在未来十年会发生什么呢?我认为在未来10年内,每个芯片(Die)上的晶体管数量可能会提升1.5倍,每个晶体管的成本可能会保持不变,我们可能能够在相同精度下实现每个操作的能效提升2倍。如果我们能够使用四位浮点数,这将再增加一倍,因此每瓦性能可能提升4倍。同时,在多die架构水平上将会看到许多创新,随着芯片的减速,封装创新将会加速发展。当然,我也可能是错的,也有不同的预测。在任何快速发展的技术中,向前展望10年都是很难的。
让我们转向处理器之外的一个内容,即存储芯片,它变得越来越重要。如今,大多数AI处理器使用高带宽存储(HBM)。这是一个复杂的结构。有一种竞争对手技术开始崭露头角。这是一种在你的手机、笔记本电脑中使用的存储技术,它开始在更高性能的计算环境中使用。这种技术称为低功耗双数据速率(LPDDR)。LPDDR也是一种垂直堆叠技术,使用一种非便宜的方法。图中显示了这两种技术在每千兆字节成本方面的差异,它们使用完全相同的DRAM技术,由同样的工厂制造,但最终产品的每千兆字节成本差距达到7倍。这是因为HBM的复杂性。随着HBM的规模扩大,成本可能会降低,但可能不会低于四倍。因此成本仍然很高。
这些技术之间的其他差异,我也用黄色突出显示了出来。首先,LPDDR允许将更多的存储连接到1个XPU,但它的读取速度只有HBM的一半快。这意味着如果你希望读取整个冗余,需要的时间将比读取较小的HBM多大约10倍。现在,这对于AI来说非常相关,因为通常情况下这正是我们想要的做得。在训练中,我们倾向于在每次迭代读写整个存储。自回归标记推理中,如现在非常流行的大型语言模型,我们倾向于为每一次生成读取整个模型。周期是非常重要的。HBM在容量和处理能力上都处于领先地位,但是在成本上相对表现没那么好。我认为这两种存储技术在AI处理中都将发挥作用。我认为NVIDIA也同意我的观点,因为如果你看一下Grace Hopper设备,每个的HBM都连接到GPU,而LPDDR则连接到CPU上。因此,最理想的情况是两者兼具。显然,这是非常昂贵的情况。因此,我认为你会看到既有采用其中一种存储技术的芯片,也会有采用另一种的芯片。
在AI领域,如果你无法在一秒钟内循环或访问存储,那么它实际上并不是非常有用。让我给你举两个例子来说明这个问题。首先是随机梯度下降(SGD)训练,SGD训练通常需要大量的迭代,一般超过一百万次迭代。因此,如果我们准备花几周的时间来完成进行训练,那么每个迭代都需要在几秒钟内完成。每个迭代都需要读取和写入所有的存储。因此,存储必须在一秒钟内进行循环或访问。换句话说,存储带宽需要与存储容量大致相同。第二个例子是标记方面的自回归生成模型。在这种情况下,我们希望每次迭代都能读取整个模型和任何缓存键值。我们希望每秒钟进行多次读取整个存储。这意味着,如果存储过大,以至于读取所需的时间超过一秒钟,那么它就不是非常有用的。因此,我们不会看到在AI中使用某些存储类型,例如所谓的DDR存储,它将在服务器领域流行了一段时间,但在AI领域却不会被使用。你也不会看到类似NAND存储这样的闪存存储,因为它虽然非常便宜,但在几千次甚至几百次的读写周期之后就会损坏。因此,如果你构建一个AI机器,并尝试进行单次SGD训练,你在存储被破坏之前无法进行太多的训练。
我们可以在一个完整的芯片上放置相当多的静态存储,也就是逻辑晶体管存储。这是Graphcore的Colossus IPU所做的事情。大约一半的芯片面积被静态存储SRAM覆盖。你可以看到我已经突出显示了其中一个近1500个处理器,每个处理器有624千字节。因此,总共在这个芯片上有约900兆字节的SRAM。芯片之间有相当多的带宽。如果你的模型超过十亿个参数或更少,那么你根本不需要外部的DRAM。事实上,这是这个芯片的设计基础。这个芯片是为了可以将模型放在芯片本身或连接在一起的一簇芯片上的情况而设计的。当你能做到这一点时,你可以比甚至HBM快10倍地访问存储。你可以以每秒数十TB的速度访问存储,在这个芯片的情况下是65TB/s。这是任何动态存储完全无法实现的。因此,至少对于适度规模的模型来说,这是一个选项。
还有另一种情况时,你在芯片上拥有大量静态随机存储器(SRAM)非常有用。如果你有一个如此庞大的模型,以至于你需要外部DRAM,那么在芯片上拥有足够的SRAM仍然非常有用,这样你每次通过模型进行前向或反向传递时,只需从动态随机存储器(DRAM)中读取每个矩阵一次。许多现今的芯片没有那么多的SRAM,因此在执行前向传递等操作时不得不多次读取模型的部分内容。为什么只读取一次是个好主意呢?因为从DRAM访问数据的能耗较高,并且DRAM的带宽是有限的。因此,如果你有足够高的SRAM使得只用读取一次将是一个优势。
最后,让我们来看一下芯片内部的连接资源,我们能在芯片间放下多大的带宽。如果我们将长边用于外部DRAM,使用HBM或LPDDR技术,而将短边留给芯片间的连接,这通常是常见做法。根据现有技术,我们可以在芯片上实现约128个100Gbps LR SERDES,全双工传输约1.6TB/s。与DRAM相比,这种连接大约60瓦每TB/s。因此总共约为100瓦,与存储不同,它会一直消耗电力,即使你不发送任何数据,它们仍然会消耗100瓦的功耗。100Gbps的通道传输距离并不是很远。在PCB上,它们的传输距离约为30厘米,在良好设计的缆线中约为2米,这些连接适用于机箱内部或机架内部的技术。如果你想进一步扩展传输距离,比如在机架之间进行通信,你就需要使用光学收发器,但这会使功耗和成本大约增加四倍。光学传输是一项非常昂贵的技术。然而,由于对更高的带宽需求存在巨大的需求,我们将看到更多的光学传输,我们将看到光学收发器进入芯片旁边的电路板。最终,我们还将看到光纤连接到芯片本身,但这需要很多年的时间才能实现。
我们到底需要多少带宽呢?我们可以举出许多例子来说明。如果以fp16进行100万次迭代,将优化器分布在模型上,那么每次迭代我们需要进行一个集合操作,其中包括减少散射权重、对一部分权重进行本地更新,然后全部收集权重。为了完成这个操作,数据传输的链接必须读取四倍于模型参数数量的数据量。这也是本地进程每个副本每次迭代必须从DRAM中读取的模型数据量。与此同时,总训练的浮点运算数是每个参数每个标记约6个浮点运算。如果我们使用通常的指标,即标记数比参数数多15到20倍,那么大约是100个模型参数的平方。在这里我更改了一些示例,所以是4000亿个参数,如果我们使用256个模型副本,这是合理的话,那么每个字节需要约1万个浮点运算。这是针对每个字节的存储访问带宽和互联传输的数据。有趣的是,在训练中,你需要与存储带宽相同的互联带宽。如果你通过有足够的余地来最小化存储带宽,以满足100亿参数或模型的需求,你就不需要那么多副本,而每个字节的浮点运算数量也会增加,但增幅不会很大。为了使传输操作的时间与浮点运算相同,你可能希望传输集合的时间比浮点运算更短。因此,一个提供50%浮点运算性能的拥有百万亿次级别的芯片,至少需要每秒100Gbps的存储带宽和至少每秒100Gbps的传输带宽,如果可能的话,甚至更多。但可能不会达到Tbps。这很有趣。实际上训练并不真正使用带宽,特别是对于推理中的许多点而言也是如此。因此,训练机器不需要每秒多个TB的DRAM,也不需要多个每秒多个TB的互联连接,但至少需要数百GB每秒的带宽来满足这两个需求。
我们确实有需要大量存储带宽的情况,也就是标记级别的自回归生成。在标记级别的自回归生成中,这张图片展示了Transformer堆叠中的一层。左侧部分是注意力部分,右侧部分是前馈网络部分。红色的对象表示权重矩阵,黑色的平面对象表示激活矩阵。由于每次迭代只有一个标记在每个激活矩阵中处于活跃状态,除了我用浅蓝色突出显示的缓存历史k和v。我使用了D表示模型维度,Q表示上下文的长度。
如果你看一下每秒浮点运算次数和从存储中读取的数值,那么你会得到这个方程。请注意批处理项。换句话说,这个方程允许你批量处理多个对话,以尝试获得更好的浮点运算读取效率。这是非常常见的做法。如果没有批处理,自回归的标记级生成的算术密集度仅为每次读取两个浮点运算。换句话说,如果你拥有一个3 Tbps的先进HBM存储系统,你只能使用类似数量的Teraflop/s,而不是芯片能够实现的Petaflop/s。如果上下文很小,那么批处理可以在一定程度上帮助我们,我们可以接近12D/Q。对于更大的上下文而言,那么批处理无法改善计算密集度。换句话说,你被困在每次读取两个浮点运算的状态。我用红色突出显示了这个陈述,如果对AI来说这是通用情况,并且我们想要一个大的缓存历史(这样这些模型就不会忘记你10分钟前在谈论什么),那么我们就不需要XPU。目前没有一种算术加速芯片适合这种限制,或者我们应该构建拥有大量存储带宽但没有太多的浮点运算次数的芯片。它们将更便宜,功耗更低。换句话说,我们突然之间面临着我们构建的昂贵芯片和目前对我们最有价值的算法之间的巨大错差。
我们能对此做些什么呢?我们可以构建不同的芯片。如果算法不发展,就会发生这种情况。这需要时间,因为新的芯片一年一代。但这就是会发生的情况。这些芯片将最大化它们的存储带宽,它们将是完全不同的芯片。在算法上,还有其他选择。我们可以压缩阻碍批处理效果的历史项。我们可以稀疏地访问历史,以达到获取更少历史的效果。我们可以采用层次形式的自回归,使用超级标记来生成其中的标记。我们或许可以不使用传统的自回归,并不是所有生成式人工智能都使用自回归,例如Stable Diffusion的图像生成采用稳定的扩散去噪,而不是自回归本身,它们是迭代的,但是迭代整个图像,整个数据样本,而不是样本内的标记。这意味着每字节的FLOPS更高。算术密度使它们更像训练。换句话说,它们非常适合具有高存储带宽的以FLOPS为中心的芯片,但受到FLOPS的限制更多。也许语言将转向迭代扩散去噪,而不是自回归,或者也许语言在本质上更适合自回归,而图像则更适合扩散去噪技术。我们正在探索这些。我们还可以做其他一些事情,我们可以部分地对我们希望对AI可用的所有信息进行建模,而不对其他部分进行建模。我特别被这种分离的想法所吸引,因为我认为算法和硬件都可以在其中发挥作用。
我们在训练基础模型中学到了什么?首先,我们学会了沟通的能力,使用语言,形成良好结构的语法,具有表达力和流畅性。在多模态模型中,我们可以使用其他媒体(如图片)来进行流畅的沟通,这是由大型基础模型学到的。我们还学到了很多关于世界的知识。最后,我们学会了一些推理,至少是常识性的推理,或者你可以将其视为计算,构建和执行算法的能力,这种能力随着规模的增长和大型基础模型的出现而出现。现在,这三个方面是相互独立的。在某种程度上,就像人类和维基百科和Python是分开的一样。当然,可能人类需要更好,因为我们的大脑容量有限,而人工智能可能不需要。但是,如果它们确实进行了分离,那可能是高效的。不同的关注点,那么自回归部分可能只需处理语言的构造。而该模型的该部分可能远小于整个模型的规模。
这是一个例子,我相信你们都对从一个大型语言模型中获取某些信息的概念非常熟悉。有一个网络首先对查询进行分析并构建一个检索命令。这个检索命令几乎完全发送到一个知识数据库中,该数据库没有被建模,而是被索引。换句话说,它被组织成可以检索相关内容,但实际上它并不是自回归模型的参数的一部分。这个被索引但未建模的数据然后被馈送到第三个网络中,该网络与查询一起合成出一个响应。换句话说,我们将知识状态与语言状态分离开来。因此,知识状态部分可以比模型的迭代部分要大得多,至少在标记级别上。这也使我们能够处理像当前货币模型这样的问题,我们可以很快地向知识库中添加数据,并立即使用,我们还可以获得相关的参考信息,用作询问模型时的响应参考。因此,这种以检索网络为特征的关注点分离对我来说非常有效,它确实有助于解决芯片和算法之间的不匹配问题。
因此,我的结论是,将不会有一种通用的XPU,你可以将其视为GPU、IPU或TPU,无论你想如何称呼它。一个经过良好设计用于训练或并行推理(如图像生成)的机器将最大化flop rate。换句话说,它将具有非常高的算术强度。一个在小内容(如标记)上操作的自回归生成机器将优先考虑存储带宽,它将具有较低的特定密度。你不能同时为高和低算术强度设计一种高效的芯片,你需要两种不同的芯片。最后,对于大型模型推理或微调,优先考虑存储容量而不是每秒浮点运算次数或每秒千兆字节。问题是,我可以拥有多少千兆字节?我可以在一片芯片上容纳我的GPT-3模型吗?这将通过LPDDR存储成为可能,并且需要一种与前两者不同的芯片设计。因此,将会有各种不同的XPU机器,我们将学会使用它们。因为AI的需求各不相同,AI有效地证明不止一种芯片架构是合理的,所以将不会有通用的XPU。
最后,我喜欢将AI算法的发展过程看作经历了两个步骤,从而使我们达到了今天的成就。最初,我们发现如果构建深度神经网络结构,我们可以以令人惊讶的方式从数据中学习。这种方式是通过监督学习进行学习,因此数据是昂贵的。因此,我们在扩展模型方面的能力受到了数据成本的限制。然后,我们学会了使用无监督学习。因此,数据变得廉价,我们利用互联网对其进行了一些过滤。但基本上还是大量廉价的数据。这就是模型规模增长了1000倍的时候。例如,今天的语言模型是具有1000亿个参数的多模型,而不是参数量级为百万级别的ResNet时代的图像模型。规模增长了1000倍。如果我们现在利用稀疏地访问状态的能力,那么就有进一步提升的机会,而且这将受到存储成本的限制。左上角的陈述是所有计算机设计的一种真理。它表示可以计算的内容取决于你拥有的存储量,每秒浮点运算次数和你可以访问存储的速度决定了你的计算速度。最终任何智能体的智能受到可用信息和存储容量的限制,而不是每秒浮点运算次数或每秒千兆字节。所以我认为,在速度等其他参数之外,存储容量将会面临压力。
问答环节
提问人:骆轶航 | PingWest创始人
问
正如您在最后提到的“没有通用的XPU”,这是否意味着没有一个单一的XPU用途或架构可以实现对AI算法的优化?
答
是的,这正是我所说的。我记得当多媒体作为一种计算工作负载出现时,即处理图像、视频和声音的时候,这是在90年代初期。当时所有的CPU供应商都说,你们不需要为此开发新的芯片,我们可以在CPU上完成这项任务。当然,CPU是通用计算引擎,可以完成任何任务。然而,这样做并不高效。因此,我们看到了媒体处理器的出现,这是一种信号处理器,现在无处不在。因此,总结起来,对于任何足够大且能够承担生产成本的市场,都会存在专用的芯片。显然,AI是一种非常广泛的技术,它将以许多不同的方式使用。它可能会影响地球上的每一个行业。我们已经知道,不同的模型和训练方式与微调方式和推理方式等都有不同的要求。它们都将是非常大规模的工作负载。因此,为每个不同的应用场景开发专门的架构是值得的。我认为CPU在AI领域也有一席之地,特别是随着其开发高带宽存储。换句话说,我们可能会发现几年后,我们在自回归语言模型上进行推理时不再使用GPU,而是使用CPU。但是GPU仍然会存在,IPU仍然会存在,TPU也会存在,DSP和媒体处理器等其他处理器类型也将继续存在。目前存在着多种多样的处理器芯片,而AI将增加这种多样性。AI不会仅仅依赖GPU。
问
您是IPU的主要首席架构师之一。在鼓励采用IPU而不是更成熟的技术(如GPU)方面,您面临着哪些挑战?
答
至少在芯片领域,我认为对于一个新公司的成功来说有两个基本要求,这是我的职业经验。首先,你需要一个新的市场,一个尚未被任何人占领的市场。人工智能就代表了这样一个市场,这是一个适合新芯片的市场,规模足够大。第二个是,如果有其他大公司与你同时进入这个市场,比如在我们的情况下可能是NVIDIA,你需要做一些与他们不同的事情。我很惊讶有许多初创公司尝试克隆NVIDIA的做法,即制造GPU。我没有看到其中的实用性。因为竞争对手始终会拥有规模和现有市场的优势。所以你必须做一些不同的事情。所以我们面临的挑战是构建一种不像GPU的、不同类型架构,但对于AI计算领域,至少其中的某些部分,仍然非常有用。IPU的特点与GPU不同,其中包括巨大的片上SRAM,因此中等规模的模型可以完全适配到芯片上,而无需任何DRAM。这带来了巨大的性能和功耗效率。这是其中一点。另一个与GPU不同的特点是,IPU由非常多计算独立的处理器组成。换句话说,它是并行性的。它更多是程序层面的,不是数据路径层面。IPU具有更多独立的子程序。这意味着如果你的数据结构不规则,比如图神经网络,那么IPU有很大优势。我们在去年提交了我们的首个OGB-LSC,我们在其中的三个类别中的两个类别中排名第一。这证明了IPU在处理图结构数据(如分子、知识图谱等)方面非常出色。
问
现在世界上出现了许多大型语言模型。据估计,在未来的五到十年里,计算能力的需求将可能以惊人的速度增长。那么,您如何评估计算能力的整体需求规模和增长速度呢?我指的是到2030年左右。
答
我认为,由于人工智能的深刻性质,这几乎是无法估计的。我认为人工智能的出现是人类掌握机器的能力以来,至少是自引擎发明以来的最大技术进步。就像蒸汽机发明者很难预测10年后会发生什么一样,我也很难预测未来10年人工智能机器将会发生什么。对我来说,至少有一点是显而易见的,那就是所有计算都将包含从数据中学习的元素。因此,如果将人工智能定义为从数据中学习,那么在某种程度上未来的所有计算都是人工智能。很明显,人工智能为计算在许多以前未使用计算的领域提供了机会。换句话说,计算市场的规模将大幅增加。人工智能的规模将会比今天还要大。举一个例子,虽然Graphcore并没有特别专注于这个领域,那就是自动驾驶或半自动驾驶。每年销售的汽车数量目前约为每年销售的服务器计算机数量的10倍。所以如果一辆汽车变成了一台强大的服务器计算机以提供半自动或自动功能,那么突然间你的计算市场规模就增加了10倍。这只是一个应用,一种技术。我认为将会有很多很多这样的应用。它将是巨大的。这也是为什么能源效率如此重要。我并不是说目前基础设施计算使用的能量数量,但有可能这个能量的数量会增加100倍。
获取更多Graphcore资讯,阅读深度技术文章,并与其他创新者们一起交流,请至中国官网graphcore.cn,以及关注Graphcore微信、微博和知乎创新社区。
Graphcore中国官网
Graphcore官方微信
Graphcore微博创新社区
Graphcore知乎创新社区
点击阅读原文,观看演讲。
微信扫码关注该文公众号作者