AxCore: A Quantization-Aware Approximate GEMM Unit for LLM Inference
AxCore: A Quantization-Aware Approximate GEMM Unit for LLM Inference
作者/机构:Jiaxiang Zou, Yonghao Chen, Xingyu Chen, Chenxi Xu, Xinyu Chen / The Hong Kong University of Science and Technology (Guangzhou)
A1 主要贡献
大型语言模型(LLMs)已成为现代自然语言处理的基础,但其巨大的计算和内存需求对高效推理构成了主要障碍。基于Transformer的LLM严重依赖浮点通用矩阵乘法(FP-GEMM),这在计算和带宽方面都占据主导地位。本文介绍了 AxCore,这是一个量化感知(quantization-aware)的近似GEMM单元,它结合了仅权重量化(weight-only quantization)与浮点乘法近似(FPMA),以提供高效且准确的LLM推理。
与传统的GEMM单元不同,AxCore完全消除了乘法器,取而代之的是新型脉动阵列中的低位整数加法。AxCore具有以下关键创新点:
1. 混合精度FPMA处理单元(PE):支持直接在压缩权重和高精度激活值上进行计算,减少了数据通路宽度和PE复杂性。
2. 轻量级精度保持策略:包括子正规数(subnormal number)处理、误差补偿和格式感知量化,以减轻近似误差。
3. 脉动阵列优化:包括共享校正和归一化逻辑,以减少硬件资源消耗。
在开源LLM上的评估表明,AxCore实现了比传统FP GEMM单元高出 6.3×-12.5× 的计算密度。与最先进的基于INT4的加速器(FIGLUT和FIGNA)相比,AxCore的计算密度分别提高了53%和70%,同时提供了更低的困惑度(Perplexity)。
A3 背景知识/关键Observation/设计原则
2.1 LLM推理中的GEMM
LLM通常由多个堆叠的Transformer解码器块组成,其中线性层(Linear layers)主导了推理的计算工作负载。
* 计算占比:如图2所示,尽管注意力机制的计算比例随序列长度增加,但在实际序列长度(10k-20k tokens)下,线性层中的GEMM操作仍占计算工作负载的主导地位(69% - 99%)。
* 优化关键:优化线性层GEMM对于提高大规模LLM推理效率至关重要。
2.2 仅权重量化(Weight-only Quantization)
为了减少内存和计算开销,量化技术被广泛使用。
* 仅权重量化:将模型权重压缩为低位格式(如INT4或FP4),同时保持激活值为较高精度(如FP16或BF16)。这种方法有效减少了内存占用和带宽需求,同时避免了激活值量化带来的精度损失。
* 量化公式:权重 $w$ 通过缩放因子 $s$ 映射为低位表示 $w_q$:
其中 $F_{\max}$ 是目标格式的最大可表示值。
* 分组量化:为保持精度,通常采用分组量化(grouped quantization),将权重张量划分为较小的组(如128个元素),每组分配专用的缩放因子。
2.3 量化感知GEMM
在仅权重量化下,有两种GEMM执行策略(如图3所示):
1. 间接GEMM(Indirect GEMM):先将量化权重反量化为浮点值,再进行GEMM。
2. 直接混合精度GEMM(mpGEMM):直接在低位权重和FP激活值之间执行GEMM,仅在累加输出后进行反量化。这种方法硬件效率更高,因为避免了逐权重的反量化开销。
2.4 基于整数加法的浮点乘法近似(FPMA)
浮点(FP)乘法因其复杂性而在硬件面积上成本高昂。FPMA通过用整数加法替换乘法来解决此问题。
* 浮点表示:标准浮点数 $x$ 表示为:
* 对数近似:基于Mitchell的对数近似 $\log_2(1+x) \approx x$,浮点数 $x$ 近似到对数域为:
A2 方法细节
3.1 挑战与解决方案概述
尽管FPMA具有潜力,但在量化LLM推理中应用它面临挑战:
1. 硬件支持mpGEMM:传统的FPMA仅支持统一精度。扩展到混合精度(如FP16 x FP4)需要重新设计处理单元(PE)和数据通路,以解决格式对齐和偏置不匹配问题。
2. 精度保持:FPMA引入了系统误差($\log_2(1+x) \approx x$),且在低位格式(如FP4)中,子正规数(subnormal numbers)的比例显著增加。由于子正规数没有隐含的“1”,传统的FPMA公式在数学上不再成立,导致严重误差。如图4所示,未处理子正规数的mpFPMA会导致显著的困惑度退化。
4.1 将FPMA扩展为mpFPMA
为了支持混合精度GEMM,AxCore重新设计了运算逻辑。假设激活值 $A$ 为FP16,量化权重 $W_q$ 为FP4。
* 对齐(Alignment):首先将操作数对齐到共同的定点表示。由于FP4的尾数位数少于FP16,需要对FP4尾数进行左移(零填充)以匹配FP16的分辨率:
* 偏置校正(Bias Correction):由于指数偏置不同(例如FP16为15,FP4 E2M1为1),需要引入格式感知的偏置校正项 $B_1$:
* 近似计算:结合对齐和偏置校正,混合精度乘积的近似结果 $R$ 为:
4.2 mpFPMA中的子正规数处理
子正规数的问题:
子正规数表示为 $x_{\text{sub}} = (-1)^S \cdot 2^{1-B} \cdot M$。与规范化数不同,它去除了尾数中的隐含“1+”,导致FPMA的近似基础 $\log_2(1+x) \approx x$ 失效。在低位格式(如FP4)中,由于指数位极少,子正规数不再是边缘情况,而是频繁出现(例如可表示高达0.5的值)。
子正规数转换(SNC):
AxCore提出了一种轻量级的子正规数转换(SNC)方法。该方法基于观察:子正规编码和某些规范化编码表示的值在数值上非常接近。
* 转换逻辑:如图5所示,FP4 (E1M2) 中的子正规数 "011" (数值0.75) 可以映射到规范化编码 "010" (数值0.75),两者数值相等。SNC单元在运行时识别子正规编码,并将其替换为数值上最接近的规范化表示。
* 转换表:Table 1展示了不同尾数位宽下的映射关系。对于无法精确映射的情况(表中带下划线的值),选择最近的规范化值。
* 随机舍入:为了减轻固定方向舍入带来的系统偏差,AxCore在近似子正规数时采用随机选择策略(向上或向下舍入),平衡累积误差。
Table 1: 子正规数转换表
4.3 mpFPMA的误差补偿
FPMA引入了可预测的数值误差。AxCore通过分析发现误差分布高度非均匀(图6a),且针对每对尾数进行细粒度补偿成本过高。
* 基于均值的常数补偿:AxCore提出使用单一预计算的校正值 $C_1$ 来减少累积误差。该值是通过计算所有有效尾数组合的平均近似误差得出的:
这种方法没有运行时开销,因为补偿值是预先计算的,且显著恢复了精度(图6b)。
4.4 自适应格式感知量化
为了在激进量化下保持精度,AxCore支持统一框架内的多种低位FP格式。
* 块级格式选择:不同于全模型固定格式,AxCore采用块级自适应策略。对于每个权重块(如 $128 \times 64$),从候选格式(E3M0, E2M1, E1M2)中选择最小化均方误差(MSE)的格式(公式12)。如图7所示,不同层适合不同的格式(Layer 0适合E3M0,Layer 29适合E1M2/E2M1)。
* 与FPMA集成:量化和反量化过程被重新定义以适应FPMA风格的近似(公式13-16)。
5.1 AxCore架构概览
AxCore采用权重固定(weight-stationary)数据流。
* 数据流:量化权重(如FP4)预加载并保持在PE中,高精度激活值(如FP16)水平传播。
* PreAdd单元:集中式PreAdd单元预计算中间值 $T$,通过应用校正项到激活值上:$T = A - B_1 + C_1$。该值沿行传播,最大限度减少了PE内部的逻辑重复。
* PE处理:PE内部包含子正规数转换(SNC)单元,将权重统一为共享内部格式(S1E3M2),然后与 $T$ 进行简单的整数加法。
* 后处理:包括归一化(Norm)、AxScale(FPMA基反量化)和累加器(Accumulator)。
5.2 mpFPMA处理单元(PE)细节
PE逻辑上分为近似乘法块和累加块(图9)。
1. 输入处理:PE接收量化权重 $W_q$ 和来自PreAdd的中间值 $T$。
2. SNC单元:如图10a所示,SNC单元根据FormatSel信号选择解码器,通过逻辑表将子正规编码映射为规范化值。它还包含零标志逻辑,用于处理零输入和辅助随机舍入(通过随机位控制零标志来实现交替舍入)。所有输出转换为统一的S1E3M2格式(图10c),支持自适应量化。
3. 近似乘法:SNC处理后的权重进行尾数对齐(零填充),然后通过低位整数加法器与 $T$ 相加,得到乘积 $R$。
4. 累加:Guard单元检查零输入并强制输出为零。结果 $P'_{sum}$ 传递给部分浮点加法器,与垂直传播的部分和进行累加。
5.3 脉动阵列优化
- 校正前移(Correction Advancing):在mpFPMA中,校正项 $-B_1 + C_1$ 与权重值无关,仅取决于格式。AxCore将这些项的计算移出PE,放入集中式的PreAdd模块(图11b)。这使得PE只需执行轻量级加法 $R = T + \text{Align}(W_q)$。如图12所示,这避免了在每个PE中重复使用宽位宽加法器(例如15-bit),仅需一个7-bit加法器即可处理E3M2权重和FP16激活值的组合,显著节省了面积。
- 归一化推迟(Normalization Postponing):为了避免PE内部昂贵的归一化逻辑(LZD、移位等),AxCore将归一化推迟到PE阵列之外的共享Norm模块。PE累加未归一化的中间和,Norm模块(图11c)处理最终的Abs、LZD、Cmp和Round操作。这在 $N \times N$ 阵列中减少了 $N$ 倍的逻辑重复。
- 基于FPMA的反量化(AxScale):AxCore使用FPMA实现反量化缩放,而不是乘法器。输出 $O_q$ 通过两个整数加法进行缩放:
$$O = O_q + S - B + C_2$$
其中 $S$ 是缩放因子的二进制表示,$C_2$ 是补偿常数。
5.4 基于AxCore的LLM加速器
整个系统架构如图13所示,核心是AxCore GEMM单元,由多个处理Tile组成的2D阵列。系统包括权重缓冲区(Weight Buffer)、统一缓冲区(Unified Buffer)用于激活值、向量单元(Vector Unit)处理层级操作,以及控制单元(CTRL)。这种模块化和脉动阵列友好的设计使AxCore能够高效支持低位量化下的大规模Transformer推理。
A4 实验环境
-
数据集:
- WikiText-2(用于困惑度PPL评估,序列长度2048)。
- Zero-shot基准:ARC-e, HellaSwag, PiQA, Winogrande。
- 校准集:Pile数据集的子集。
-
模型:
- OPT系列 (2.7B, 6.7B, 13B, 30B)。
- LLaMA2系列 (7B, 70B)。
- 量化设置:4-bit权重量化,组大小128(OPT)或64(LLaMA2)。
-
硬件配置:
- 实现:SpinalHDL,生成Verilog RTL。
- 工艺:Synopsys Design Compiler, TSMC 28nm。
- 频率:1GHz。
- 配置:64x64脉动阵列,4x4 Tiling。
-
软件配置:
- 仿真器:基于DNNWeaver开发的周期级仿真器。
- 功耗模拟:CACTI (SRAM)。
-
基线对比:
- FPC (传统FP GEMM核心)。
- FPMA (传统近似计算)。
- FIGNA (SOTA FP-INT mpGEMM设计)。
- FIGLUT (SOTA LUT-based FP-INT GEMM)。
- Tender (SOTA Integer-based GEMM)。
A5 实验结果
6.2 面积效率
- PE面积:如图14所示,AxCore在所有格式下均实现了最小的PE面积。在W4-FP16配置下,AxCore比FIGLUT减少了31%的面积,比FIGNA减少了32%-39%。SNC单元仅占PE总面积的3.5%。
- GEMM单元总面积:如图15所示,AxCore的总面积始终最低。在4-bit权重场景下,AxCore比FIGLUT减少了26%-34%的总面积,比FIGNA减少了29%-37%。
6.3 计算密度
- 结果:如图16所示,AxCore在所有格式下均提供最高的计算密度。
- W4-FP16:AxCore比FPC高出 6.7×,比FIGNA高出 1.7× (6.7 vs 4.0),比FIGLUT高出 1.6× (6.7 vs 4.3)。
- W4-FP32:AxCore比FPC高出 12.5×。
6.4 能效
- 结果:如图17所示,AxCore在所有评估配置中实现了最低的能耗和最高的TOPS/W。
- 对比:AxCore平均比FPC、FPMA、FIGNA和FIGLUT分别实现了2.2×、1.5×、1.1×和1.3×的总能耗降低,以及6.4×、3.1×、1.4×和2.0×的TOPS/W提升。
6.5 准确性评估
- 端到端困惑度(PPL):如Table 2所示,AxCore在OPT和LLaMA 2模型上始终提供有竞争力或更优的PPL。例如,在OPT-30B上,AxCore的PPL为9.60,优于FIGNA (9.62) 和 FIGLUT (9.70)。
-
消融研究:
- 基础mpFPMA PPL较高(如OPT-6.7B为11.83)。
- 添加SNC降低了PPL(11.45)。
- 添加补偿进一步降低PPL(11.14)。
- 完整AxCore(含格式感知量化)达到最佳(11.01)。
-
KV Cache量化:AxCore-KV(W4A16KV4)引入的精度损失极小。
- Zero-shot性能:如Table 3所示,AxCore在LLaMA2 70B上的平均准确率为81.78%,与FP16基线(81.91%)相当,且优于INT4和FP4量化。
- 数值精度(SNR):图18证实SNC和补偿显著提高了信噪比(SNR)。
6.6 与非混合精度设计的比较
- 对比Tender:如图19所示,AxCore (W4A16KV4) 在计算密度上比Tender (W8A8KV4) 高出1.72×-1.86×,且在准确性上显著更优(OPT-30B PPL: AxCore 9.79 vs Tender 14.49)。这证明了保留高精度激活值的混合精度设计的优势。
A6 结论
本文提出了AxCore,这是首个利用FPMA潜力进行LLM推理的架构。通过将FPMA与低位浮点量化相结合,AxCore消除了乘法器并简化了PE逻辑。通过引入子正规数转换、均值误差补偿和自适应格式感知量化,AxCore在保持高精度的同时实现了极高的硬件效率。评估表明,AxCore在计算密度上比FP基线高出达12.5倍,比INT4加速器节省50%-70%的面积。未来的工作方向包括扩展AxCore以支持自定义数据类型或基于块的格式。
A7 补充细节
A.1 Artifact Appendix 概述
本部分提供了复现论文关键结果所需的组件,包括:
1. AxCore硬件设计:SpinalHDL RTL代码。
2. 评估脚本:用于LLM准确性评估。
3. 仿真器:用于端到端性能评估的周期精确仿真器。
A.3 软件与硬件依赖
- 硬件:评估使用了配备四个NVIDIA RTX 6000 Ada GPU的服务器。
- 软件:依赖包括Ubuntu 22.04.5 LTS, Python 3.9, PyTorch 2.5.1, CUDA 12.4, Cacti 7.0等。
A.5 实验工作流
实验分为三个主要部分:
1. 硬件功能验证:验证AxCore硬件逻辑。
2. LLM准确性评估:复现Table 2和Table 3。通过脚本自动下载Hugging Face模型并执行AxCore评估。
3. 仿真器性能:复现Figure 17。运行提供的脚本进行所有模拟并绘制结果图。
💬 评论讨论
欢迎在这里分享您的想法和见解!