沃卡logo

新技术有效加速大规模人工智能模型的处理性能

2023-11-16来源:

麻省理工学院和英伟达的研究人员开发了两种技术来加速稀疏张量的处理,稀疏张量是一种用于高性能计算任务的数据结构。这些技术可以显著提高系统的性能和能效,例如驱动生成式人工智能的大规模机器学习模型。

新技术有效加速大规模人工智能模型的处理性能

张量(Tensors)是机器学习模型使用的数据结构。这两种新方法都试图有效地利用张量中所谓的稀疏性——零值。在处理这些张量时,可以跳过零并节省计算和内存。例如,任何乘以零的内容都是零,因此它可以跳过该操作。它可以压缩张量(不需要存储零),因此可以将大部分张量存储在片上存储器中。

然而,利用稀疏性存在一些挑战。在大型张量中找到非零值并非易事。现有方法通常通过强制执行稀疏模式来简化搜索来限制非零值的位置,但这限制了可以有效处理的稀疏张量的多样性。

另一个挑战是,在张量的不同区域中,非零值的数量可能会有所不同。这使得很难确定在内存中存储不同区域需要多少空间。为了确保区域适合,通常会分配比所需空间更多的空间,从而导致存储缓冲区未得到充分利用。这会增加片外存储器流量,从而增加能耗。

麻省理工学院和英伟达的研究人员设计了两种解决方案来解决这些问题。首先,他们开发了一种技术,使硬件能够有效地找到更多种类稀疏模式的非零值。

对于另一种解决方案,他们创建了一种可以处理数据不适合内存的情况的方法,从而提高了存储缓冲区的利用率并减少了片外内存流量。

这两种方法都提高了性能并降低了专门设计用于加速稀疏张量处理的硬件加速器的能源需求。

“通常,当您使用更专业或特定领域的硬件加速器时,您将失去从更通用的处理器(如 CPU)中获得的灵活性。这两部作品的突出之处在于,我们表明,在保持专业和高效的同时,你仍然可以保持灵活性和适应性,“麻省理工学院电气工程和计算机科学系(EECS)副教授、电子研究实验室(RLE)成员、关于这两项进展的论文的共同资深作者Vivienne Sze说。

她的合著者包括主要作者Yannan Nellie Wu PhD '23和Zi Yu Xue,电气工程和计算机科学研究生;以及麻省理工学院计算机科学和电气工程实践教授、计算机科学和人工智能实验室 (CSAIL) 成员、共同资深作者 Joel Emer,以及 NVIDIA 的其他人。这两篇论文都将在IEEE/ACM微架构国际研讨会上发表。

亮点:高效查找零值

由于各种原因,张量中可能会出现稀疏性。例如,研究人员有时会通过用零替换张量中的某些值来“修剪”机器学习模型中不必要的部分,从而产生稀疏性。对于不同的模型,稀疏程度(零的百分比)和零的位置可能会有所不同。

为了更容易在具有数十亿个单个值的模型中找到剩余的非零值,研究人员通常会限制非零值的位置,使它们落入某种模式。但是,每个硬件加速器通常设计为支持一种特定的稀疏模式,从而限制了其灵活性。

相比之下,麻省理工学院研究人员设计的硬件加速器HighLight可以处理各种稀疏模式,并且在运行没有任何零值的模型时仍然表现良好。

他们使用一种称为“分层结构稀疏性”的技术来有效地表示由几个简单的稀疏性模式组成的各种稀疏性模式。这种方法将张量中的值划分为更小的块,其中每个块都有自己的简单稀疏模式(在具有四个值的块中可能有两个零和两个非零)。

然后,他们将这些块组合成一个层次结构,其中每个块集合也有自己简单的稀疏模式(在具有四个块的关卡中可能有一个零块和三个非零块)。他们继续将方块组合成更大的关卡,但每一步的模式都很简单。

这种简单性使 HighLight 能够更有效地查找和跳过零,因此它可以充分利用这个机会来减少多余的计算。平均而言,他们的加速器设计的能量延迟产品(与能源效率相关的指标)比其他方法高出约六倍。

“最后,HighLight 加速器能够有效地加速密集模型,因为它不会引入大量开销,同时它能够利用基于分层结构稀疏性的不同零值量的工作负载,”Wu 解释道。

未来,她和她的合作者希望将分层结构稀疏性应用于更多类型的机器学习模型和模型中不同类型的张量。

Tailors 和Swiftiles:有效地“超额预订”以加速工作负载

研究人员还可以利用稀疏性更有效地移动和处理计算机芯片上的数据。

由于张量通常大于片上内存缓冲区中可以存储的张量,因此芯片一次只能抓取和处理一大块张量,这些块称为图块。

为了最大限度地利用该缓冲区并限制芯片必须访问片外存储器的次数,这通常主导着能耗并限制处理速度,研究人员试图使用适合缓冲区的最大切片。

但在稀疏张量中,许多数据值为零,因此缓冲区中可以容纳比基于其容量预期的更大的切片,不需要存储零值。

但是,零值的数量在张量的不同区域中可能会有所不同,因此对于每个图块,它们也可能有所不同。这使得很难确定适合缓冲区的切片大小。因此,现有方法通常保守地假设没有零,并最终选择较小的图块,这会导致缓冲区中的空白空间浪费。

为了解决这种不确定性,研究人员建议使用“超额预订”来允许他们增加切片大小,以及一种在切片不适合缓冲区时容忍它的方法。

在稀疏张量中,可以选择一个切片大小,以便通常切片将有足够的零,大多数仍然适合缓冲区。但有时,切片的非零值会多于适合的值。在这种情况下,这些数据会从缓冲区中剔除。

研究人员使硬件能够只重新获取所需的数据,而无需再次抓取和处理整个图块。他们修改缓冲区的“尾端”来处理这个问题,因此这种技术的名称是 Tailors。

然后,他们还创建了一种利用超额预订来查找切片尺寸的方法。这种方法称为 Swiftiles,可快速估计理想的图块大小,以便用户设置的特定百分比的图块被超额预订。(“Tailors”和“Swiftiles”这两个名字向泰勒·斯威夫特(Taylor Swift)致敬)。

Swiftiles 减少了硬件检查张量以识别理想切片大小所需的次数,从而节省了计算量。Tailors 和 Swiftiles 的组合使速度提高了一倍以上,同时所需的能源需求仅为现有硬件加速器的一半,而现有硬件加速器无法处理超额预订。

Swiftiles 允许我们估计这些图块需要多大,而无需多次迭代来优化估计。这仅在支持超额预订时才有效。即使你偏离了相当大的数量,你仍然可以获得相当多的加速,因为非零的分布方式。

未来,研究人员希望将超额预订的想法应用于计算机体系结构的其他方面,并努力改进估计超额预订最佳水平的过程。

  图片使用申明:原创文章图片源自‘Canva可画’平台免费版权图片素材;引用文章源自引用平台文章中所使用的原图。