BitsMoE: Cost-Aware Bit Allocation In spectral Space for MoE LLM Quantization
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的幅度。
那么这种情况下,我们就有了两个优势
- 共享存储( 不需要额外保存共享谱基)
- 共享计算( 对于同一个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 位宽相关失真
提高精度的分析
- 重要性不等于增加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的量化方法。
这篇文章给我的印象很好。论证,数学方面给的很齐全。是后续工作的一个重要参考。




