2024-11-25

Tender 精心设计的后训练量化 (PTQ) 算法将通道分解,以隔离异常通道与正常通道。同时,Tender 允许在张量计算单元内部进行缩放,因此它不需要显式的重新量化,从而充分利用了整数流水线。在后续部分中,我们将讨论如何通过 Tender 的软硬件协同设计,在计算单元内部实现上述缩放,同时仅通过最少的硬件扩展。

没有隔离是认为 smoothquant 无法在低精度下有很好性能的原因

运行时重新量化方案

Pasted image 20241125211907.webp

使用运行时量化的方式,与原始计算流程相比,我们通过在分解矩阵之间移动累积部分乘积和来保留减少轴的长度。

我们首先进行具有较大缩放因子的通道组的矩阵乘法。然后,在计算下一个组的矩阵乘法之前,Tender 将累积的整数值左移 1 位。在完成所有组的矩阵乘法后,我们使用最小的缩放因子对最终结果进行去量化。这种方法对于小硬件扩展下的重新缩放具有可忽略的延迟开销。为了减少在运行时确定缩放因子的开销, 我们进一步优化了该方案, 使用校准来预先计算每个通道的缩放因子和偏置, 并在运行时仅应用元数据以执行量化矩阵乘法。我们还在校准时间将每个通道分类到一个组中。

小结

tender 是一个加速器的全套量化解决方案,同时设计软件算法的设计和配套的硬件设计的部分,阅读过程中仅看软件的实现部分。
文中主要提及的是一个矩阵的分解量化过程,组量化的过程和移动窗口的量化过程,运行时重量化(上述已有),其中一些属于不清楚其含义,下面记录不解之处。

  • 我们的关键洞察是,通过使用2 的幂次设置缩放因子并采用简单的张量计算单元中的移位逻辑

  • Transformer 注意力层的计算顺序:经过 QKV 投影之后,我们使用投影矩阵计算注意力分数 (XS) 和注意力值 (XS×XV)。最后,通过将注意力值 (XS×XV) 与输出权重矩阵 (WO) 相乘并加上残差连接 (X),计算得到注意力层的输出 (XO)。

  • 直观地,可以选择沿缩减轴 (即 2D 中的列) 拆分激活张量,并使用不同的缩放因子对每个组进行量化, 而不是采用不切实际的按列方法。然后,我们可以使用通道分组来表示矩阵乘法如下.

  • 滑动窗口:我们的直觉是,可以通过以特定顺序处理部分和并在添加下一个部分和之前对累积值进行缩放来保留矩阵乘法的减少轴。
    Pasted image 20241125213835.webp

  • 然而,对于 INT4 量化,所提出算法不可避免地会导致与 FP16 相比的一些模型性能下降,主要是由于其简单性,但这些性能的下降可以通过传统的行分块技术很容易地恢复。

以上是遇到的绿色部分记录的问题,用到了一些在其他论文里也见过的技术(只是不了解),如滑动窗口的使用,不过针对隔离异常值这点上进一步的优化,使用了一些其他的优化算法。

2024-11-27

Transformer 单层架构

Pasted image 20241127221650.webp

Transformer 块产生的输出与输入具有相同的维度,这使得基于 Transformer 的大型语言模型可以通过调整 Transformer 块的数量来轻松扩展。

缩放累加值

我们的直觉是,可以通过以特定顺序处理部分和并在添加下一个部分和之前对累积值进行缩放来保留矩阵乘法的减少轴

Pasted image 20241127223436.webp
其中 表示累积到 部分和的结果。请注意,方程 1 和方程 2 在数学上等价。为了使方程 2 在硬件中高效运行,缩放操作需要由整数 MAC 单元执行同时保持正确性。我们将使用术语 rescale factor 来表示si/si+1之间的信道组。

为什么使用简单分类而不是聚类

聚类计算每个通道之间的值范围相似度,然后将具有小距离的通道分组。分类则是基于预定义的阈值,将通道分到合适的阈值范围内。因此,聚类比分类更准确地分组通道,但由于计算开销大,可能不适用于运行时 (没有复杂硬件的情况下)。因此,我们选择使用分类来使算法简单,并且易于扩展以支持运行时分解。

降低延迟开销

其次,当缩放因子之间的比 值是 2 的幂时,我们可以高效地计算涉及分解量化激活张 量的矩阵乘法,同时具有可忽略的延迟开销,我们在下一 段中讨论这一点。

运行时量化方案

Pasted image 20241127230129.webp

由于使用 作为重新缩放因子,因此我们在累加和旁边使用移位器进行重新量化。图 5(b) 展示了我们的运行时重新量化方法。我们首先进行具有较大缩放因子的通道组的矩阵乘法。然后,在计算下一个组的矩阵乘法之前,Tender 将累积的整数值左移 1 位。在完成所有组的矩阵乘法后,我们使用最小的缩放因子对最终结果进行去量化。这种方法对于小硬件扩展下的重新缩放具有可忽略的延迟开销。为了减少在运行时确定缩放因子的开销,我们进一步优化了该方案,使用校准来预先计算每个通道的缩放因子和偏置,并在运行时仅应用元数据以执行量化矩阵乘法。我们还在校准时间将每个通道分类到一个组中