BitsMoE: Cost-Aware Bit Allocation In spectral Space for MoE LLM Quantization

Problem construction and analysis

MoE 的参数存储成本很高。对于普通的dense LLM 而言,大部分参数都要被用到计算中,然而MoE是不一样的。

MoE 的一个最基本的特征就是广泛的存储 + 稀疏的激活。MoE可以用相对较低的计算量获得较大的参数容量,但是这并不自动降低参数存储成本。

所以这自然而然的就产生了一个研究动机—— 减少MoE中大量Expert所占用的空间。

现在的方法主要再用Mixed Precision Quantization, 给不同的Expert 和 Linear Block采用不同的量化精度。例如ExpertA 用 4-bit , B用 2bit等等。

但是作者认为这不好,因为它隐含了一个假设—— 如果给某个expert分配了一个位宽,那么expert的整个量化单元都是用相同的精度。

然而,一个expert内部的不同方向对模型输出可能具有完全不同的重要性。

所以问题就来了,我们如何在一个线性变换内部,定义更细粒度的量化单元? 我们可以把一个矩阵按照行切分、列切分、或者分块切分。但是这些切分的方式其实都相当于只是我们人选择的一个方式,不一定能够体现权重矩阵自身的解构。

所以他想找到一种带有结构意义的量化单位,于是便选择了Spectral Component 谱分量。通过SVD得到奇异方向进行量化。

第二个问题,如何衡量量化的代价?

这里设计前一篇blog所写的 Activation-aware 思想,量化的输出误差不只是和Weight有关的,还是和输入activation有关,但是bitsMoE 认为,静静考虑activation还不够,于是决定了三种因素

  • Intrinsic-Spectral Importance 权重的谱解构的价值
  • Activation-dependent Importance 实际输入和Expert Routing下,谱分量的对输出的重要性
  • Bit-width-dependent Distortion 谱分量分配的位宽,量化本身会引入的错误。

所以文章最后提出了两个贡献

  • 定义量化单位 -> Shared Basis Spectral Decomposition 题去共享谱基,构造 Expert specific Spectral Components
  • 如何估计量化代价 -> Factorized Quantization Cost Modeling 估计各谱分量在不同位宽下的量化损失。

Introduction

现有MoE 的问题主要就是基于expert level 或者 Linear level 进行分解。然而这就忽略了两个现象,第一个是Linear Transformation 的内部敏感性不一样,第二个就是属于同一MoE Layer的不同expert可能有明显的共享结构

BitsMoE 想要同时利用:

  • Intra-expert Heterogeneity 同一个expert内部不同方向的重要性不同
  • Inter-expert Redundancy 不同expert之间的共享结构

量化的问题不应该只是说 如何用更少的bit表示weight,而应该是有限的bit应该分配给哪些有意义的计算方向。

Methodology

第一层拆分

如何知道哪些方向重要?为什么要把这些方向当作为量化单位?

作者首先靠v了一个MoE Layer里面的 E个expert。 W1 , W2 , ... , WE

对于gate-proj 和 up-proj, 每个权重矩阵都是 Rdout x din

第一步,我们先把全部的expet权重拼接,得到

W_cat = (w1,W2,...WE)^T

然后对拼接矩阵进行SVD分解, W_cat = UΣΦT

这里的 φ来自对所有expet的联合分解,因此能够提供一组跨expert共享的输入空间谱方向。

原来的每个expert都会直接处理输入x,现在我们先将输入表示在一组共享的谱方向上,再让不同expert使用各自的系数进行变换。

令 P = UΣ, 那么 Wex = P(ΦTx)

括号里面的ΦTx是和expert e无关的,同一个token被选中的多个expert可以复用共享的输入投影结果。

那么现在,计算就被我们分成了两步

输入x -> 贡献谱空间投影 z = ΦTx -> 再用expert自己的独特的 PA去乘。

  • P是 expert specific的方向矩阵
  • Ae是对角矩阵,代表每个谱分量在这个expert的幅度。

那么这种情况下,我们就有了两个优势

  1. 共享存储( 不需要额外保存共享谱基)
  2. 共享计算( 对于同一个token,被选中的多个expert可以复用 ΦTx)

第二层拆分

假设SVD之后得到P = (p1,p2,p3, ... pn)
那么我们还对每一个列进行归一化,得到

we = Σ ae kpe , kΦk

其中aek就是幅度, pek 就是expert特有的方向, φk就是共享输入的方向。

这一步的意义在于我们将分量的强度和方向分离。

这样就可以

  • 用a 衡量谱分量自身的强度
  • 用单位向量pek 进行不同位宽的量化
  • 组合起来分析误差

第三层拆分

还记得我们在AWQ里面看到过的吗? Activation也是量化中的一个重要部分!!

Spectral Importance 还不够.我们还要考虑输入在这个方向上面的投影强度。

作者如何定义Activation-dependent Importance呢?

论文定义 Hge = XeGeXeT

这里Xe是路由到Expert e 的校准Token激活矩阵,Ge是这些token对应的对角矩阵。

同样,我们定义 βe,k = ΦkT Hg,e Φk

展开后就得到βe,k = Σge,j (ΦkT xj)^2

后面的那一部分平方就是某个token在这个谱方向上面的激活强度,而前半部分就是这个token在这个expert里面的路由输出的权重。

所以βe,k 不仅反映某个方向的激活,还考虑了路由信息。

那么现在我们就得到了两种重要性,指标α 衡量自身在该谱方向上的强度,βe,k衡量输入和路由分布下,这个谱方向实际的重要性。

最后,我们得到一个指标 I = αek^2 βe,k

担着个重要性号不能说明会引入多大的误差,于是FQCM引入第三项

Lek(b) ≈ aek^2(谱重要性) dot βek (激活重要性) dot εe,k,b 位宽相关失真

提高精度的分析

  1. 重要性不等于增加bits的收益。

回忆FQCM, 假设把分量k从 b update到 b+ 1 , 那么带来的loss应该为

Δ = Iek (εe,k,b - εe,k,b+1)

这个收益由两个部分共同决定,原本的谱分量的重要性和增加精度后量化失真究竟减少多少。

An other step : maximize the value of every storage unit

由于一个spectral Diection 含有m个元素,从b -> b' 需要增加 ΔM = m(b' - b) ,因此,可以定义一个直观的边际收益指标。来衡量每增加一个存储bit 预计能够降低多少quantization loss。

不过bitsMoE 不是简单按照比值贪心排序,而是使用ILP把所有谱分量的可选位宽一起考虑

Usage

作者利用ILP 整数线性规划,可以暂时把它理解为求解器,提供每种精度的cost和预算,它负责找到满足约束,总cost最低的组合。

在BitsMoE中,可选精度为 {0,1,2,3,4,6,8,16}, 其中0-bit 表示直接省略,16bit表示FP16。

执行

GPU如何执行混合精度?因为我们现在产生了不规则的数据表示,而gpu最讨厌这种不规则的数据了。所以作者引入了 Bit-plane Packing。 简单来说,就是把相同的位宽的谱分量放在一起,再按照位平面打包。

这就构成了BitsMoE的完整方案,利用SSD构造共享谱基底和专家谱方向,然后FQCM估计每个谱方向在不同位宽下的损失。ILP在bit budget约束下进行精度分配,最后利用Bitplane + Shared Basis Reuse

Experiments

首先,根据主要的实验,BitsMoE 2-bit的效果很好。

模型 FP16 GPTQ 2-BIT BitsMoE 2-bit
Deepseek v2lite 57.58 44.66 47.44
Qwen3-30B-A3B 71.61 42.65 64.29
Qwen3-Next-80B-A3B 73.42 51.31 70.70

bitsmoe在Qwen上面效果很好,证明可能存在模型依赖性

3-bit下优势并不总是成立。

Ablation

作者依次加入SSD \ Spectral Importance \ Activation Importance 和 Routing

实验配置 平均准确率
独立SVD + Uniform Allocation 24.86%
SSD + Uniform Allocation 25.27%
SSD + only Spectral Importance 26.48%
SSD + only activation Importance 47.20%
SSD + activation + routing 57.92%
完整FQCM 64.29%

SSD 单独存在时,对精度的改善非常有限。真正产生显著效果的是 FQCM 中的 Activation-aware 和 Routing-aware Importance。

Efficiency: 压缩之后有没有真的变快?

离线量化时间:

方法 量化时间
GPTQ 298分钟
GEMQ 1044.40 分钟
BitsMoE 63.41分钟

FQCM能够直接近似计算Cost, 而无需反复对不同候选量化方案进行昂贵的误差评估。

在线推理性能

模型 GPTQ BitsMoE 加速比
Dsv2lite 6.99 9.58 1.37x
Qwen3-30B-A3B 3.08 7.19 2.33x
Qwen3-next-80B-A3B 2.44 5.13 2.10x

BitsMoE 的加速不完全来自 Bit Allocation,也与 Shared Basis Reuse、Bit-plane Packing 和 GPU Kernel 实现有关。

评价。

文章总体的价值还是很高。方法论给的很完整,很齐全。

主要重要的思想就是把量化做的比较细,然后利用奇异值分解,奇异值分解确实是比较重要的一个方法,因为本来就是保存主要的方向嘛。

然后不错的第二个点是,他们甚至和AWQ的工作能够衔接上,利用了 activation aware的量化方法。

这篇文章给我的印象很好。论证,数学方面给的很齐全。是后续工作的一个重要参考。