OFQ-LLM:面向高效低比特大语言模型加速的离群值弹性量化方案
OFQ-LLM: Outlier-Flexing Quantization for Efficient Low-Bit Large Language Model Acceleration 阅读总结
中文标题:OFQ-LLM:面向高效低比特大语言模型加速的离群值弹性量化方案
作者:Gang Wang, Siqi Cai, Wenjie Li, Dongxu Lyu, Guanghui He
发表:IEEE TCAS-I / TVLSI(基于论文信息推断)
工艺:TSMC 65nm CMOS(硬件评估平台)
摘要
大语言模型(LLM)的权重与激活中存在离群值(Outliers),这是制约低比特(如W4A4)量化精度的核心瓶颈。现有方案要么无法兼顾精度(剪裁/移位方案),要么引入硬件不友好的稀疏或变长编码。本文提出OFQ-LLM,一种算法-硬件协同设计方案,核心思想为离群值弹性量化(Outlier-Flexing Quantization):将低比特编码空间划分为缩减的正常值编码区与少量保留的离群值弹性编码区。算法层提出基于重新缩放的剪裁(RBC) 优化正常值量化误差,与分组离群值聚类(GOC) 以聚类均值灵活表示离群值。硬件层设计内存对齐的离群值弹性编码与离群-正常混合PE架构。实验表明,OFQ-LLM在低比特LLM量化精度上达到SOTA;硬件加速器在预填充阶段实现最高3.83×加速与2.44×能耗降低,解码阶段实现最高2.01×加速与2.88×能耗降低。
核心专有名词解析
| 术语 | 缩写 | 定义(面向跨专业读者) |
|---|---|---|
| 离群值 | Outlier | LLM权重/激活中占比极小(<0.1%)但幅值远超正常值的数值,对模型精度影响极大,是低比特量化的主要障碍。 |
| 离群值弹性量化 | OFQ | 本文提出的量化范式:将低比特编码空间分割,用缩减空间量化正常值,用剩余极少编码槽(如-7)通过查表(LUT)灵活表示离群值。 |
| 基于重新缩放的剪裁 | RBC | 对min/max进行比例缩放(rescale ratio r),缩小量化范围,使正常值获得更密集的编码空间,降低量化误差。数学上等价于调整缩放因子Δ,当Δ<1时正常值相对误差降低。 |
| 分组离群值聚类 | GOC | 将权重/激活按组(如group size=128)划分,组内对离群值进行启发式K-means聚类,聚类的均值作为该组离群值的代表,存于GOC LUT中。 |
| GOC LUT | — | 存储左编码值(如-7、-0)与对应实际离群值(8-bit)的查找表,解码时通过比较输入值查表还原离群值。 |
| 离群-正常混合PE | Mixed PE | 将MAC计算拆分为正常部分(X^n*W^n)与离群部分(含X^o*W^n、W^o*X^n、X^o*W^o)。离群部分利用GOC的聚类特性进行“先累加后相乘”(Σ X_i^o (Σ W_j^n)),减少乘法器数量;无离群值时相关逻辑可门控关断。 |
| 符号-幅值格式 | Sign-Magnitude | 数据表示格式,最高位为符号位,其余位为幅值。OFQ编码利用该格式中-0(1000)的冗余编码空间作为离群值编码之一。 |
| GEMM模式 | — | 预填充阶段(Prefilling Phase)使用的矩阵-矩阵乘法数据流,激活矩阵m×k与权重矩阵k×m在PE阵列中按输出驻留(output-stationary)方式计算。 |
| GEMV模式 | — | 解码阶段(Decoding Phase)使用的矩阵-向量乘法数据流,激活向量1×mk广播至各列,权重矩阵mk×m逐列加载,部分和在行方向累加。 |
| 左编码值 | Left Encoding Value | 在m-bit量化中,RBC将正常值编码在2^m - 1个槽位中,剩余1个或多个编码槽(如-7、-0)称为左编码值,用于映射GOC聚类的离群值。 |
一、研究动机与核心问题
1.1 LLM量化的离群值困境
LLM权重与激活分布呈现显著的双峰特征(图3):约99%的正常值集中在极窄范围(LLaMA-7B中<0.06),而约0.1%的离群值幅值极大且相互之间差异显著。标准均匀量化(式5-8)需覆盖从min到max的全范围,导致绝大多数编码槽被离群值的大范围“浪费”,正常值量化颗粒度极粗,误差累积导致精度崩溃。
1.2 此前离群值处理方案的三类缺陷
| 方案类型 | 代表工作 | 核心缺陷 |
|---|---|---|
| 缩放移位类 | SmoothQuant [13] | 将离群问题从激活转移至权重,但低比特(W4A4)下精度损失严重 |
| 混合精度/稀疏编码类 | LLM.int8() [10], GOBO [22], OliVe [21] | 离群值单独存为FP16/INT8,引入非对齐访问或牺牲相邻值(victim),硬件开销大或精度损失 |
| 变长编码类 | SPARK [29] | 小值4-bit大值8-bit,需内嵌1-bit标识符,降低编码效率且访问不对齐 |
二、算法层面:OFQ-LLM量化方案
2.1 总体思想
标准m-bit量化提供2^m个编码槽。OFQ将编码空间分为两部分(图4b):
- 正常值区:使用
2^m - 1 - n个槽,对应经过RBC重新缩放后的[min, max]范围。 - 离群值弹性区:使用剩余
n+1个槽(如-7、-0),通过GOC LUT映射到实际离群值。
2.2 基于重新缩放的剪裁(RBC)
RBC对原始min/max乘以缩放比例r(0<r<1),构造新范围[r*x_min, r*x_max],正常值在此范围内量化至缩减编码空间。
新的缩放因子:
s~=rxmax−rxmin2m−1−n=Δ⋅s,Δ=r⋅2m−12m−1−n\tilde{s} = \frac{r x_{max} - r x_{min}}{2^m - 1 - n} = \Delta \cdot s, \quad \Delta = r \cdot \frac{2^m - 1}{2^m - 1 - n}s~=2m−1−nrxmax−rxmin=Δ⋅s,Δ=r⋅2m−1−n2m−1
量化误差分析:RBC量化误差为 Err' = Δ · s · RoundErr,原始误差为 Err = s · RoundErr。当 Δ < 1 时(即 r < (2^m - 1 - n)/(2^m - 1)),正常值相对量化误差降低。此时RBC使min/max范围收窄,正常值获得更密集编码,颗粒度更细。
2.3 分组离群值聚类(GOC)
算法流程(Algorithm 1):
- 提取离群:将量化后张量按组(如128)重塑,提取超出
q_max或低于q_min的离群值。 - 簇平衡检查:分别计算正离群(>q_max)与负离群(<q_min)到剪裁边界的累计距离
d1、d2。若某簇过小(d < (d1+d2)/(2C))或C=1时取较近侧,则剔除该簇,将其离群值还原为对应的q_max或q_min。 - K-means聚类:对剩余离群值执行K-means(簇数C = 剩余编码空间数),用各簇均值代表组内离群值,存入GOC LUT。
与常规K-means对比(图5):
- 当C=1时,GOC显著优于常规K-means(常规会将正负离群混杂,均值偏离)。
- 当C=2时两者相当,但GOC计算复杂度更低。
- C=3/4时困惑度反而上升,因此本文设置C=1或2。
2.4 逐层配置搜索
对每层搜索最优的r和n(编码空间缩减数),以最小化 ||W - GOC(RBC(W, r, n))||。以网格搜索方式确定每层配置。
三、硬件层面:OFQ-LLM加速架构
3.1 OFQ解码器(图8)
- 输入:4-bit OFQ编码数据(符号-幅值格式)。
- 操作:比较器判断输入是否为左编码值(如
-7)。若否,直接输出正常值;若是,激活olvld信号,前导1检测器(LOD)生成离群ID(Oid),从GOC LUT查询对应的8-bit实际离群值(拆分为MSP[6:3]与LSP[2:0]),将LSP与符号拼为正常部分,MSP与符号拼为离群部分。 - 硬件开销:仅需比较器、多路选择器、OR门与LOD,极简逻辑。
3.2 OFQ编码器(图9)
对原始值实时编码:
- 与
q_max/q_min比较,超出者分别分配左编码-7/-0。 - 组内(group size=2^g)用移位器(shifter)计算均值,作为GOC LUT条目。
- 正常值按RBC缩放后量化至缩减空间。
3.3 离群-正常混合PE(图10)
数学分解:
激活X与权重W的乘积累加可拆分为:
XW=∑(XoWo≪6+(XoWn+WoXn)≪3+XnWn)XW = \sum (X^o W^o \ll 6 + (X^o W^n + W^o X^n) \ll 3 + X^n W^n)XW=∑(XoWo≪6+(XoWn+WoXn)≪3+XnWn)
其中X^o/W^o为离群部分(MSP,3-bit),X^n/W^n为正常部分(LSP,3-bit)。
离群部分利用GOC聚类特性的高效计算:
∑XoWn=∑i∈GOCXio(∑jWjn)≪3\sum X^o W^n = \sum_{i \in GOC} X_i^o (\sum_j W_j^n) \ll 3∑XoWn=i∈GOC∑Xio(j∑Wjn)≪3
∑WoXn=∑i∈GOCWio(∑jXjn)≪3\sum W^o X^n = \sum_{i \in GOC} W_i^o (\sum_j X_j^n) \ll 3∑WoXn=i∈GOC∑Wio(j∑Xjn)≪3
即先累加所有与同一GOC离群值相乘的正常值,再统一乘以该离群值,将多次乘法简化为一次乘法+多次累加,极大降低乘法器数量。
硬件结构:
- 正常逻辑(灰色):处理密集的正常值MAC。
- 离群逻辑(绿色):仅3个乘法器(对应MSP 3-bit),以交叠方式(interleaved)处理稀疏离群值。
- 无离群值时,离群逻辑完全门控关断,功耗近零。
- 实测离群逻辑占PE面积43.57%,但翻转率仅5.44%。
3.4 可重构数据流(图12-14)
| 阶段 | 运算类型 | PE阵列行为 | 累加器模式 |
|---|---|---|---|
| 预填充(GEMM) | m×k × k×m |
激活行广播,权重列广播,输出驻留 | 每个PE对应独立累加器(图14b) |
| 解码(GEMV) | 1×mk × mk×m |
激活向量列广播,权重矩阵逐列加载 | 行方向加法树累加(图14c) |
| 混合精度(INT8) | 8-bit激活 × 4-bit权重 | 2×2相邻PE协同,移位后累加 | 4 RAU移位累加(图14d) |
可重构累加单元(RAU):通过多路选择器配置为独立累加器、行间加法树或移位累加链,兼容三种模式。
四、实验结果
4.1 量化精度(Perplexity↓)
OPT系列(W4A4模式,Wikitext2):
| 模型 | RPTQ [14] | QHACoD [20] | OFQ-LLM-R(本文) |
|---|---|---|---|
| OPT-1.3B | 16.88 | 18.31 | 16.49 |
| OPT-6.7B | 12.00 | 12.09 | 11.82 |
| OPT-13B | 12.74 | 12.62 | 12.20 |
LLaMA-7B(W4A4):SmoothQuant的困惑度为19.21,OFQ-LLM-S降至6.30,降低7.71点。
4.2 硬件核心架构对比(TSMC 65nm, 200MHz)
| 指标 | ANT [35] | SPARK [29] | OliVe [21] | QHACoD [20] | 本文 |
|---|---|---|---|---|---|
| 面积 (mm²) | 4.38 | 3.95 | 4.39 | 4.35 | 5.32 |
| 功耗 (mW) | 496.6 | 508.2 | 497.5 | 611.9 | 378.5 |
| 吞吐 (TOPS) | 0.8-1.6 | 0.8-1.6 | 2.11 | 3.2 | 3.2 |
| 能效 (TOPS/W) | 1.61 | 1.57-4.24 | 4.24 | 5.23 | 8.45 |
OFQ-LLM核心能效为OliVe的2.0倍,ANT的5.2倍。
4.3 端到端LLM推理加速(vs OliVe)
| 阶段 | 性能提升 | 能耗降低 |
|---|---|---|
| 预填充(Prefilling) | 最高 3.83× | 最高 2.44× |
| 解码(Decoding) | 最高 2.01× | 最高 2.88× |
4.4 面积与功耗分解(图15)
- PE阵列占总面积主要部分,其中离群逻辑占PE面积43.57%,但翻转率仅5.44%,动态功耗极低。
- OFQ解码器与GOC LUT面积占比小,控制逻辑简洁。
五、技术总结
OFQ-LLM通过算法-硬件协同设计,系统性解决了LLM低比特量化的离群值难题:
-
算法层:RBC以Δ<1的缩放策略降低正常值量化误差;GOC以聚类均值聚合组内离群值,用剩余编码槽(1~2个)实现灵活表示,避免稀疏坐标或变长编码的硬件开销。
-
编码层:OFQ编码采用内存对齐的符号-幅值格式,左编码值与GOC LUT映射机制使解码器仅需比较器+MUX+LOD,极简且高速。
-
计算层:离群-正常混合PE将离群值计算转化为“先累加后乘”的稀疏交叠模式,乘法器数量由
O(N)降为O(C)(C为簇数),且离群逻辑可门控关断,实现密度与效率兼得。 -
数据流层:可重构累加器支持GEMM/GEMV/混合精度三种模式,适配LLM预填充与解码两阶段的不同计算形态。
实验证明:离群值的“弹性编码+聚类聚合”能够在4-bit量化下同时保持模型精度(Perplexity为SOTA最优)与硬件能效(8.45 TOPS/W),为边缘端LLM部署提供了可行的低比特加速路径。
更多推荐


所有评论(0)