麻省理工学院(MIT)和NVIDIA的研究人员开发出两种技术,加速稀疏张量的处理。稀疏张量是一种用于高性能计算任务的数据结构。这两种互补的技术可以显著改善类似生成式人工智能驱动的大规模机器学习模型等系统的性能和能效。
张量是机器学习模型使用的数据结构。这两种新方法旨在高效利用张量中的稀疏性,即零值。在处理这些张量时,可以跳过零值,从而节省计算和内存。例如,任何与零相乘的值都是零,所以可以跳过该计算。而且,可以压缩张量,即不存储零值,从而在芯片内存中存储更大部分的数据。
然而,利用稀疏性存在一些挑战。在大型张量中找到非零值并不容易。现有方法通常通过强制施加稀疏模式来限制非零值的位置以简化搜索,但这限制了可以高效处理的稀疏张量的种类。
另一个挑战是张量的不同区域中非零值的数量可能不同。这使得难以确定存储不同区域所需的空间大小。为了确保区域适配,通常会分配比实际所需更多的空间,导致存储缓冲区利用率低下。这增加了芯片外存储器的数据流量,增加了能量消耗。
MIT和NVIDIA的研究人员提出了两种解决这些问题的方法。首先,他们开发了一种技术,可以使硬件能够高效地找到更多种类的稀疏模式中的非零值。
另一种解决方法是创建一种能够处理数据不适合内存的情况的方法,提高存储缓冲区的利用率,并减少芯片外存储器的数据流量。
这两种方法都提高了专门设计用于加速处理稀疏张量的硬件加速器的性能,并减少了其能量需求。
MIT电气工程与计算机科学系(EECS)副教授、Research Laboratory of Electronics(RLE)成员和两篇论文的共同高级作者Vivienne Sze表示:“通常情况下,当您使用更专门或领域特定的硬件加速器时,会丧失类似通用处理器(如CPU)所具有的灵活性。而这两篇研究之所以与众不同,是因为我们展示了在实现专门和高效的同时仍然能够保持灵活性和适应性。”
她的共同作者包括主要作者、麻省理工学院电气工程与计算机科学研究生Yannan Nellie Wu和电气工程与计算机科学研究生Zi Yu Xue,以及麻省理工学院计算机科学与人工智能实验室(CSAIL)成员、计算机科学与电气工程实践教授Joel Emer,以及NVIDIA的其他研究人员。这两篇论文将在IEEE/ACM国际微体系结构研讨会上发表。
HighLight:高效地查找零值
稀疏性可能出现在张量中的各种原因中。例如,研究人员有时会通过将张量中的一些值替换为零来“修剪”机器学习模型中的不必要部分,以创建稀疏性。对于不同的模型,稀疏程度(零值的百分比)和零值的位置可能会有所不同。
为了更容易地找到具有数十亿个单独值的模型中的剩余非零值,研究人员经常限制非零值的位置,使其符合某种模式。然而,每个硬件加速器通常只能支持一种特定的稀疏模式,限制了其灵活性。
相比之下,麻省理工学院设计的名为HighLight的硬件加速器可以处理各种稀疏模式,并在运行没有任何零值的模型时仍能表现良好。
他们使用一种称为“分层结构稀疏性”的技术来高效表示由几个简单稀疏模式组成的各种稀疏模式。该方法将张量中的值划分为较小的块,每个块具有自己的简单稀疏模式(例如,四个值的块中可能有两个零和两个非零)。
然后,他们将这些块组合成一个层次结构,其中每个块的集合也具有自己的简单稀疏模式(例如,四个块的层次中可能有一个零块和三个非零块)。他们继续将块组合成较大的层次结构,但每个步骤中的模式保持简单。
这种简单性使得HighLight能够更高效地查找和跳过零值,因此可以充分利用减少计算量的机会。平均而言,他们的加速器设计的能耗延迟乘积(与能源效率相关的度量)比其他方法提高了约6倍。
Wu解释说:“HighLight加速器能够高效加速密集模型,因为它没有引入很多开销,并且可以根据分层结构稀疏性利用不同数量的零值进行工作负载。”
在未来,她和合作者们希望将分层结构稀疏性应用于更多类型的机器学习模型和模型中的不同类型的张量。
Tailors和Swiftiles:通过“超额预订”有效加速工作负载
研究人员还可以利用稀疏性更高效地移动和处理计算机芯片上的数据。
由于张量通常比芯片上的存储缓冲区能够存储的大小要大,因此芯片每次只能抓取和处理张量的一部分,称为块(tile)。
为了最大限度地利用缓冲区并限制芯片必须访问芯片外存储器的次数(它通常占主导地位且限制了处理速度),研究人员试图使用能够适应缓冲区的最大块。
但是,在稀疏张量中,许多数据值都是零,因此比根据容量预期的更大的块可以适应缓冲区。零值不需要被存储。
但是,零值的数量可能在张量的不同区域中有所变化,因此每个块的零值数量也可能不同。这使得难以确定适应缓冲区的块大小。因此,现有方法通常保守地假设没有零值,并选择较小的块,导致缓冲区中出现浪费空间。
为了解决这种不确定性,研究人员提出使用“超额预订”来增加块大小,并找到一种方式以容忍块不适应缓冲区的情况。
就像航空公司为一次航班超额预订机票一样,如果所有乘客都到场,航空公司必须对被安排下飞机的乘客进行补偿。但通常并不是所有乘客都会到场。
在稀疏张量中,可以选择一种块大小,通常情况下,块中有足够多的零值使得大多数块仍适应缓冲区。但是有时,某个块可能有更多的非零值无法适应缓冲区。在这种情况下,这些数据会被从缓冲区中排除。
研究人员使硬件能够仅重新获取被排除数据,而无需抓取和处理整个块。他们修改缓冲区的“尾部”以处理此操作,因此该技术被称为Tailors。
然后,他们还创建了一种利用超额预订寻找块大小的方法。这种方法称为Swiftiles,可以快速估计理想块大小,以便根据用户设置,超额预订一定比例的块。(“Tailors”和“Swiftiles”这两个名称是向Taylor Swift致敬,她最近的Eras巡回演唱会的预售代码问题中存在超额预订的情况)。
Swiftiles减少了硬件需要检查张量以确定理想块大小的次数,从而节省了计算资源。Tailors和Swiftiles相结合,加速幅度翻了一番,而且仅需现有无法处理超额预订的硬件加速器的一半能量需求。
Xue表示:“Swiftiles使我们能够估计这些块需要多大,而无需多次迭代进行改进。这只有因为支持超额预订才有效。即使你的估计偏差很大,也可以获得相当大的加速,因为非零值的分布方式。”
在未来,研究人员希望将超额预订的思想应用于计算机体系结构的其他方面,并努力改进估计最佳超额预订水平的过程。
该研究在一定程度上得到了MIT AI硬件项目的资助。