本文来自微信公众号“半导体行业观察”,来源|semiengineering。
来源:内容编译自semiengineering,谢谢。
人工智能模型的复杂性不断增加,网络数量和种类也呈爆炸式增长,使得芯片制造商在固定功能加速和可编程加速器之间徘徊,并创造了一些同时包含两者的新方法。
总的来说,通用的AI处理方法并不达标。通用处理器就是这样的。它们不是为任何特定工作负载而设计或优化的。而且由于AI消耗了系统功耗的很大一部分,因此专注于特定用例或工作负载可以在更小的占用空间内实现更大的功耗节省和更好的性能。
Rambus研究员、杰出发明家Steven Woo表示:“在过去十年中,人工智能对计算和半导体行业产生了深远的影响——以至于现在已经采用了专门的处理器架构,并且还开发和采用了仅服务于人工智能市场的专用组件。”
但这种专业化是有代价的。Arm研究员兼机器学习技术副总裁Ian Bratt表示:“对于ML和AI来说,计算需求是无止境的。如果你能做10倍以上的计算,人们就会使用它,因为当你运行一个10倍大的模型时,你可以做得更好。因为这种需求是无止境的,所以它会推动你针对该工作负载进行优化,并且已经构建了不同类型的NPU,它们可以在特定类别的神经网络模型上实现非常好的能源效率,并且你可以在这些空间中获得出色的每瓦操作数和性能。然而,这是以灵活性为代价的,因为没有人知道模型的发展方向。所以它牺牲了面向未来的方面。”
因此,一些工程团队正在研究不同的优化方法。Bratt说:“通用计算平台(如CPU和GPU)一直在为神经网络增加更多内部加速,同时又不牺牲这些平台(如CPU)的通用可编程性。”Arm拥有CPU指令路线图,并且多年来一直在增加架构和CPU以提高ML性能。“虽然这仍然在通用平台上,但你可以在那里获得很多东西。它不如专用的NPU好,但它是一个更灵活、更面向未来的平台,”他说。
提高效率至关重要,它影响一切,从超大规模数据中心训练人工智能模型所需的能量到进行推理的边缘设备的电池寿命。
Ansys产品营销总监Marc Swinnen表示:“如果你采用经典的神经网络,其中有多层节点,信息从一个节点传递到另一个节点,那么训练和执行的本质区别在于,在训练期间,你有反向传播。你获取数据集并在节点中运行它。然后计算误差函数,即与你知道需要实现的标记结果相比,答案有多错误。然后你获取该误差并反向传播,并调整节点上以及节点之间连接的所有权重以减少误差。然后你再次用更多数据扫描,然后再次反向传播误差。你来回反复,这就是训练。每次扫描你都会改进权重,最终你希望收敛到一组由节点、偏差以及可以提供可靠输出的权重和值组成的数万亿个权重和值。一旦你有了每个节点的权重和所有参数,并且执行了实际的AI算法,那么你就不需要进行反向传播了。你不需要再纠正它了。你只需输入数据并将其传递下去。这是一种更简单、单向的数据处理方式。”
反向传播需要大量能量来完成所有计算。
“你必须对所有节点和所有数据进行平均,以形成误差函数,然后对其进行加权和除法等等。”Swinnen解释道。“反向传播需要进行所有数学运算,而这在实际执行(推理期间)中不会发生。这是最大的区别之一。推理中需要进行的数学运算少得多。”
然而,这仍然需要进行大量的处理,并且随着人工智能算法变得越来越复杂,浮点运算的数量增加,趋势线只会指向上方和右侧。
西门子数字工业软件高级综合部门项目总监Russ Klein表示:“过去五年来,获胜的ImageNet‘Top1’算法执行的浮点运算数量增加了100倍。”“当然,LLM正在创下模型参数的新纪录。随着计算负载的增加,在通用CPU上运行这些模型变得越来越不切实际。AI算法通常具有高度数据并行性,这意味着操作可以分布在多个CPU上。这意味着只需将更多CPU应用于问题即可满足性能要求。但在CPU上执行这些计算所需的能量可能非常高。GPU和TPU通常具有更高的功耗,但计算速度更快,从而降低了相同操作的能耗。”
尽管如此,对更多处理能力的需求仍在不断增长。新思科技解决方案事业部产品经理Gordon Cooper指出,生成式AI推理的基准测试请求数量急剧上升,表明人们的兴趣日益浓厚。“我们最近50%以上的基准测试请求中至少有一个生成式AI模型在列表中,”他说。“更难评估的是,他们是否有特定的用例,或者他们是否在两面下注,并说‘这是趋势。我必须告诉人们我有这个。’我认为有必要声称这种能力仍然领先于用例。”
与此同时,这些模型的变化速度也在不断加快。“我们距离硬连线AI(即ASIC)还有很长的路要走,以至于‘这就是它。标准已经确定。这些是基准,这将是最高效的’,”Cooper说。“因此,可编程性仍然至关重要,因为你必须能够为接下来出现的东西提供一定程度的可编程性,以确保你有一定的灵活性。但是,如果你的可编程性太强,那么你就只是一个通用CPU甚至GPU,那么你就没有利用边缘设备的功率和面积效率。挑战在于如何尽可能地优化,同时又能为未来提供可编程性。这就是我们和我们的一些竞争对手试图在足够灵活的领域中徘徊的地方。一个例子是激活函数,例如ReLU(整流线性单元)。我们过去常常将它们硬连线,但现在我们发现这很荒谬,因为我们无法猜测它们下次需要什么。所以现在我们有一个可编程的查找表来支持未来的任何人。我们花了几代人的时间才意识到我们必须开始让它变得更加灵活。”
AI处理不断发展
AI的快速发展得益于计算性能和容量的巨大进步。“我们现在处于AI 2.0时代,”Rambus的Woo说道。“AI 1.0的真正特点是首次尝试将AI应用于整个计算领域。语音助手和推荐引擎等开始受到关注,因为它们能够使用AI提供更高质量的结果。但回顾过去,它们在某些方面是有限的。系统可以使用某些类型的输入和输出,但它们并没有真正生成今天能够生成的高质量信息。我们今天所处的位置是在AI 1.0的基础上构建的。AI 2.0的特点是系统现在可以从它们学习到的数据和它们获得的输入中创造出新的东西。”
这些技术中最重要的是大型语言模型和生成式人工智能,以及帮助人类提高生产力的副驾驶和数字助理。“这些系统的特点是多模态输入和输出,”Woo解释道。“它们可以接受许多输入,文本、视频、语音甚至代码,并且可以从中产生新的东西。事实上,它们也可以从中产生多种类型的媒体。所有这些都是朝着通用人工智能(AGI)的更大目标迈出的又一步,我们作为一个行业,正在努力提供更像人类的行为,这些行为建立在人工智能1.0和人工智能2.0为我们设定的基础之上。这里的想法是能够真正适应我们的环境,并为特定用户和特定用例定制结果。内容生成的方式将得到改进,特别是在视频等方面,甚至在未来,使用AGI作为一种方式来指导自主代理,例如既能学习又能适应的机器人助手。”
在此过程中,人工智能模型的规模一直在急剧增长——每年增长约10倍或更多。“今天,2024年可用的最大模型已经突破了万亿参数大关,”他说。“这是因为更大的模型提供了更高的准确性,而我们仍处于让模型达到非常高效的阶段的早期阶段。当然,这仍然是通往AGI的垫脚石。”
三四年前,在视觉转换器和LLM出现之前,SoC对新NPU功能的要求规范通常仅限于一小部分知名且经过优化的检测器和图像分类器,例如Resnet50、ImageNet v2和传统VGG16。Quadric首席营销官Steve Roddy表示:“半导体公司通常会评估这些网络的第三方IP,但最终决定为这些基准网络中的通用构建块图运算符构建自己的加速器。事实上,批量SoC中的绝大多数AI加速都是自主研发的加速器。2024年所有领先手机SoC的拆解将证明,所有六大批量移动SoC都使用内部NPU。”
其中许多可能会被更灵活的商业NPU设计所取代或补充。“新NPU IP的提案请求通常包括20、30个或更多网络,涵盖一系列经典CNN,例如Resnet、ResNext等,新的复杂CNN(即ConvNext),视觉转换器(例如SWIN转换器和可变形转换器)以及GenAI LLM/SLM,其中有太多的模型变体无法计数,”Roddy说。“构建硬连线逻辑来加速由数百种不同的AI图形运算符变体组成的如此多种多样的网络是不可行的。因此,SoC架构师正在寻找更完全可编程的解决方案,大多数内部团队都在寻找外部第三方IP供应商,这些供应商可以提供快速编译新网络所需的更强大的编译器工具集,而不是以前手动移植ML图的劳动密集型方法。”
历史重演
人工智能的这种演变类似于计算领域随着时间的推移所发生的演变。“首先,计算机出现在数据中心,然后计算开始向外扩散,”Cadence Neo NPU产品营销总监Jason Lawley说。“我们转向台式机,然后进入人们的家庭,并向外扩展。然后我们有了笔记本电脑,接着是手机。人工智能也是一样。我们可以看看在数据中心开始进行人工智能所需的计算强度。我们现在在NVIDIA身上看到了这一点。
话虽如此,大型机和数据中心永远都有一席之地。我们将看到人工智能从数据中心向外扩散,我们看到人工智能从数据中心向边缘扩散。当你移动到边缘时,你会得到各种不同类型的应用程序。Cadence专注于视频、音频和雷达,以及围绕这些的其他计算类,每个支柱都是应用处理器的加速器。在每个支柱中,他们可能需要做更多的人工智能,因此人工智能NPU成为加速器的加速器。”
客户行为也在不断发展。“越来越多的系统公司和最终用户拥有自己的专有模型,或者使用专有数据集重新训练的模型,”Roddy说。“这些OEM和下游用户不能或不会将专有模型发布给硅片供应商,让硅片供应商的移植团队开发出新的模型。即使你可以在供应链上下游制定NDA保护措施,依赖于人工调整和移植ML模型的工作模型也无法扩展到足以支持整个消费电子和工业电子生态系统。新的工作模型是一个完全可编程的、基于编译器的工具链,可以交由创建最终应用程序的数据科学家或软件开发人员使用,这正是几十年来领先的CPU、DSP和GPU的工具链的部署方式。”
算法的复杂性不断增加,给工程团队带来更多压力
随着算法的复杂性不断增加,设计人员被迫追求更高水平的加速。西门子的Klein表示:“加速器越是针对特定模型进行量身定制,它的速度就越快、效率就越高,但通用性就越差。而且它对应用和需求变化的适应性也会降低。”
图1:运行AI模型、CPU、GPU、TPU和自定义加速器的不同执行平台的功率和性能关系
图2:推理的复杂性不断增加
Rambus的Woo还看到了向更大AI模型发展的趋势,因为它们可以提供更高质量、更强大和更准确的结果。“这一趋势没有放缓的迹象,我们预计未来对更大DRAM容量和更大DRAM带宽的需求将继续大幅增加。我们预计这种情况将持续下去。我们都知道,AI训练引擎是AI的展示部分,至少从硬件方面来看是这样。NVIDIA和AMD等公司的计算引擎,以及谷歌等公司生产的专用引擎(TPU),在行业计算和提供更好AI的能力方面取得了巨大进步。但这些引擎必须输入大量数据,而数据移动是当今限制我们训练模型速度的关键因素之一。如果这些高性能引擎在等待数据,那么它们就没有完成工作。我们必须确保整个管道的设计能够以能够让这些引擎保持运行的方式提供数据。
如果我们从左到右看,通常的情况是存储了大量的数据,有时是以非常非结构化的方式存储的,因此它们会存储在SSD或硬盘驱动器等设备上,这些系统的任务是提取最相关、最重要的数据来训练我们正在训练的模型,并将其转换为引擎可以使用的形式。这些存储系统也有很多常规内存,用于缓冲区等。举个例子,其中一些存储系统的内存容量可以高达1TB。一旦数据从存储中提取出来,它就会被发送到一组服务器进行数据准备。有些人称之为读取层。这里的想法是获取这些非结构化数据,然后对其进行准备,以便以AI引擎可以最佳训练的方式使用它。”
同时,替代数字表示可以进一步改善PPA。“浮点数通常用于Python ML框架中的AI训练和推理,但对于这些计算来说,浮点数并不是理想的格式”,Klein解释道。“AI计算中的数字主要在-1.0到1.0之间。数据通常会被标准化到这个范围。虽然32位浮点数的范围可以从-10 38到10 38,但这会在数字和对这些数字执行计算的运算符中留下大量未使用的空间。运算符的硬件和存储值的内存会占用硅片面积并消耗电量。”
Google创建了一种名为brain float(bfloat)的16位浮点数格式,该格式针对AI计算。由于模型参数和中间结果的存储区域减少了一半,PPA得到了很大的改善。矢量化(SIMD)bfloat指令现在是RISC-V处理器的可选指令集扩展。一些算法使用整数或定点表示来部署。从32位浮点数移动到8位整数需要四分之一的内存区域。数据在设计中的移动速度提高了四倍,乘法器缩小了97%。较小的乘法器允许在相同的硅片面积和功率预算中使用更多的运算符,从而实现更高的并行性。“Posits”是另一种在AI算法上运行良好的奇特表示。
“通用AI加速器(例如NVIDIA和Google生产的加速器)必须支持32位浮点数,因为某些AI算法需要它们,”Klein说道。“此外,它们还可以增加对各种大小的整数的支持,可能还有脑浮点数或假设。但支持每种新的数值表示都需要该表示的运算符,这意味着需要更多的硅片面积和功率,从而损害PPA。除了32位浮点数外,一些Google TPU还支持8位和16位整数格式。但如果应用程序的最佳大小为11位特征和7位权重,则不太合适。需要使用16位整数运算符。但具有11 x 7整数乘法器的定制加速器将使用大约3.5倍的面积和能量。对于某些应用程序来说,这将是考虑定制加速器的有力理由。”
所有道路都通向定制,芯片设计师需要了解许多有关定制AI引擎的注意事项。
“当你获得高度定制或定制程度不一的产品的授权时,你得到的东西就会有所不同,”Expedera营销副总裁Paul Karazuba说道。“它不是标准产品。因此,你需要一点时间来学习。你得到的是精品产品,而这些产品中会有一些你作为芯片设计师独有的钩子。这意味着,作为一名芯片设计师和架构师,你需要学习曲线,以准确了解这些产品在你的系统中将如何发挥作用。这样做有其优势。如果标准IP(如PCIe或USB)中包含你不想要或不需要的内容,那么其中的钩子可能与你作为芯片设计师所选择的架构不兼容。”
这本质上是设计中的裕度,它会影响性能和功耗。“当你获得定制的AI引擎时,你可以确保那些你不喜欢的钩子不存在,”Karazuba说。“你可以确保IP在你的系统中发挥良好作用。所以,这样做肯定有好处。但也有缺点。你无法获得标准IP所具有的规模。但对于高度定制的东西,你就会拥有它。你会得到一些定制的东西,这对你的系统有一些好处,但你需要处理更长的交货时间。你可能要处理一些独特的东西。会有一些复杂之处。”
然而,这些好处可以超过学习曲线。在一个早期的客户示例中,Karazuba回忆道:“他们开发了自己的内部AI网络,旨在降低4k视频流中的噪音。他们想要实现4k视频速率。这是他们内部开发的网络。他们花了数百万美元来构建它。他们最初打算使用其应用处理器上现有的NPU,正如您所猜测的那样,这是一个通用NPU。他们将算法放在该NPU上,获得了每秒两帧的帧率,这显然不是视频速率。他们找到我们,我们向他们授权了我们IP的针对性定制版本。他们为他们打造了一款包含我们IP的芯片,运行完全相同的网络,获得了每秒40帧的帧率,因此通过构建一个专注的引擎,性能提高了20倍。另一个好处是,由于它是专注的,因此他们能够以应用处理器上NPU所消耗功率的一半来运行它。因此,以不到一半的功率实现了20倍的吞吐量。
公平地说,它与应用处理器采用相同的工艺节点,因此这确实是同类比较。这些是您从此类事情中看到的好处。现在,显然存在成本方面的问题。构建自己的芯片比使用您已经购买的芯片上已有的东西要昂贵得多。但是,如果您可以利用这种人工智能来区分您的产品,并且可以获得这种级别的性能,那么额外的成本可能就不是障碍了。”
结论
就未来的发展方向而言,Arm的Bratt表示,AI/ML已经足够多了。“我们将看到,在人们真正关心能源效率且工作负载较慢的情况下,例如深度嵌入式环境,您会看到这些专用的NPU具有针对这些NPU的高度优化模型,您将获得出色的性能。但总的来说,像CPU这样的可编程平台将继续向前发展。它们将在ML方面不断进步,并且它们将运行那些全新的工作负载。也许您无法将它们映射到现有的NPU,因为它们有新的运算符或新的数据类型。
但随着情况稳定下来,对于某些垂直行业,您将采用在可编程平台上运行的那些模型,并针对NPU对其进行优化,您将在嵌入式垂直领域(如监控摄像头或其他应用程序)中获得最佳性能。这两种模式将在未来相当长的一段时间内共存。”
Cadence的Lawley表示,芯片架构师和设计工程师需要了解AI处理带来的变化,归结为三件事:存储、移动和计算数据。
“从根本上说,这三件事自摩尔定律开始以来就没有改变过,但他们必须意识到的最重要的事情是低功耗和最佳数据使用的趋势,以及量化方面的进步——将内存固定到系统中并有效重复使用的能力。那么在数据移动、数据存储和数据计算中,应该使用哪种层融合?软件在这方面发挥的作用与硬件一样重要,因此算法能够不错误地计算不需要计算的东西,并移动不需要移动的东西——这是我们关注的重点。我们如何以最小的能量获得最大的性能?这是一个很难解决的问题。”
参考链接:
https://semiengineering.com/mass-customization-for-ai-inference/