Press "Enter" to skip to content

麻省理工学院和NVIDIA的研究人员开发出了两种互补技术,可以显著提高对机器学习任务的速度和性能

来自MIT和NVIDIA的研究人员提出了两种加速稀疏张量处理的技术(张量是机器学习模型中的基本数据结构,是组织和存储数据的多维数组)。这两种新技术的目标都是有效利用张量中的零值。可以对这些张量进行处理而不处理零值,从而节省内存和计算资源。例如,任何与零相乘的操作都会得到零,因此可以跳过该操作。此外,它还可以压缩张量,因为不需要保留零值,这样可以在芯片内存中存储更多数据。

当通过将一些值替换为零来删除不必要的元素时,张量中的稀疏性就会出现,这个过程称为修剪。非零值的位置和稀疏度的程度在不同的模型中可能不同。为了方便在大型模型中定位非零值,研究人员经常限制非零值的位置。硬件加速器的适应性受到限制,因为它们通常针对特定的稀疏模式设计。

研究团队开发了一种名为HighLight的硬件加速器,它能够高效处理各种稀疏模式。研究人员利用分层结构的稀疏性来有效表示由简单模式组成的不同类型的稀疏模式。在这种方法中,将一组数分解为较小的组,每个组都遵循一个简单的模式。然后将这些较小的组合并成较大的组,形成一个层次结构。每个组合集也遵循一个简单的模式(例如,在具有四个组的一级中,一个组有零值,而其他三个组没有)。这个过程在较大的层次中继续进行,但在每个步骤中模式都保持简单。

这种简单性使得HighLight能够更高效地查找和跳过零值,从而充分利用切除多余计算的机会。与其他方法相比,他们的加速器设计的能耗时延乘积(与能源效率相关的度量)提高了大约6倍。

研究人员还可以利用稀疏性更高效地移动和处理计算机芯片上的数据。由于张量通常比芯片上的内存缓冲区能够存储的要大,芯片每次只能抓取和处理张量的一个块,这些块称为tiles。为了最大化缓冲区的容量并最小化芯片访问外部内存的频率。

为了最大化缓冲区的容量并减少芯片需要访问外部内存的次数(这可能会耗费大量能源并使处理速度变慢),研究人员旨在使用适合缓冲区的最大可能tile尺寸。

由于许多数据值是零,相较于其原始容量可能暗示的,较大的tile可以适应缓冲区,因为不需要存储零值。然而,零值的数量在数据的不同部分可能不同,因此对于每个tile也可能不同。

为了处理这个问题,研究小组建议使用过高预订(overbooking)技术来允许tile尺寸的增加。在稀疏数据集中,可以选择一个tile尺寸,使得大部分tile具有足够的零值以适应缓冲区。偶尔,某个tile的非零值可能超过缓冲区的容量。在这种情况下,这些多余的数据将被推出缓冲区。

研究小组使硬件能够只检索被移出缓冲区的数据,而不需要重新获取和处理整个tile。他们通过修改缓冲区的“尾端”来实现这一点,因此这种技术被称为Tailors。

此外,他们还开发了一种名为Swiftiles的方法,可以高效确定tile尺寸,并充分利用过高预订的优势。Swiftiles减少了硬件必须检查张量以寻找最佳tile尺寸的频率,从而节省了计算资源。

Tailors和Swiftiles的结合提供了性能提升,将速度提高了一倍,同时仅需现有不能处理过高预订的硬件加速器的一半能耗。

根据研究人员的说法,Swiftiles可以在不需要多次迭代来优化估计值的情况下估计出最佳的tile尺寸。这个过程可以实现是因为它支持过高预订。即使存在较大的估计误差,也可以因为非零值的特定分布而实现显著的加速。

Leave a Reply

Your email address will not be published. Required fields are marked *