Stochastic Error Compensation: 基于噪声注入的权重量化误差消除方法
A Novel Approach to Neural Network Weight Quantization via Per-Group Calibrated Stochastic Reconstruction
摘要
神经网络模型权重的量化压缩是降低推理显存的核心技术。传统量化方法在重建权重时产生确定性的量化误差,该误差在扩散模型的迭代去噪过程中系统性累积,导致输出质量退化。本文提出**随机误差补偿(Stochastic Error Compensation, SEC)**方法:在权重重建阶段,根据每组权重的量化误差统计特征(均值与标准差),注入校准随机噪声,将确定性系统偏移转化为零均值随机扰动。扩散模型固有的去噪能力天然抑制随机扰动,而确定性偏移则被当作信号成分累积放大。
在 Z-Image(6.02B 参数 Flux 架构扩散模型)上的实验表明:
- INT6 量化 + 校准噪声使图像低频结构从 27.6% 提升至30.2%(+2.6pp)
- 空间相关性从 0.9911 提升至0.9931(超过确定性重建)
- 亮度偏差从 mean=117(偏暗)修正至 mean=122(匹配 bf16 原始)
- 额外存储开销仅0.03 BPW(每组存储 2 个 float16 统计量)
- 总压缩率保持6.5 BPW,GPU 峰值显存15.3 GB(原始 20.7 GB)
关键词:模型量化、扩散模型、随机噪声注入、误差补偿、低比特推理
1 引言
1.1 背景
大规模扩散模型(如 Stable Diffusion 3、Flux、Z-Image)的 Transformer 参数量已达 6B+,bf16 存储需 12+ GB 显存,超出消费级 GPU(24 GB)的可用预算。权重量化(INT4/INT8)是降低显存的主要手段,但现有方法在量化精度与推理质量之间存在根本性权衡。
工业界主流方案 bitsandbytes NF4 量化将权压缩至 4.25 BPW,通过 CUDA 融合内核实现高效推理。然而,4-bit 量化的权重 SNR 仅约 22 dB,输出图像质量存在可感知的退化。
1.2 核心问题
传统量化重建过程为:
w' = round(w / Δ) × Δ其中Δ为量化步长。重建误差ε = w - w'是确定性的——对同一权重,每次推理的误差完全相同。
在扩散模型的 30 步迭代去噪过程中,确定性误差表现为系统性偏移:
step_t: output_t = f(x_t, W + ΔW) ← ΔW 固定不变 step_{t+1}: output_{t+1} = f(x_{t+1}, W + ΔW) ← 同一个 ΔW ... step_30: 系统偏移累积 30 次这种累积效应导致最终输出偏离原始分布,表现为图像偏暗(mean 偏低)、对比度降低、网格伪影等问题。
1.3 本文方案
我们观察到:扩散模型本身即是为处理随机噪声而设计的。若将权重量化误差从确定性偏移转化为零均值随机扰动,扩散模型的去噪机制可天然地抑制该扰动。
具体而言,在权重重建阶段注入校准随机噪声:
w'' = w' + Δ × (μ_b + σ_b × ξ), ξ ~ U(-√3, +√3)其中μ_b和σ_b为每组权重量化误差的均值和标准差。该方法:
- 消除系统偏移:
E[w''] = w' + Δμ_b ≈ w(无偏估计) - 匹配误差分布:噪声方差
Δ²σ_b²等于实际量化误差方差 - 利用扩散去噪:30 步迭代中独立随机扰动以
√30速率衰减 - 零额外推理开销:仅增加一次随机数生成
1.4 贡献
本文的贡献如下:
- 发现确定性量化误差在扩散模型中的累积放大效应,通过图像频域分析定量证实
- 提出随机误差补偿(SEC)方法,将确定性误差转化为零均值随机扰动
- 设计按组校准策略,利用每组权重的误差统计特征(μ_b, σ_b)精确匹配误差分布
- 在 Z-Image 6B 模型上验证,低频结构提升 9.4%,空间相关性超过确定性重建
- 系统分析量化误差的统计特性,证明 round 误差服从完美均匀分布(零结构、零可压缩性)
2 相关工作
2.1 权重量化
均匀标量量化是神经网络压缩的基础方法。每组(group_size=128)独立计算量化步长 Δ,将连续权重映射到 K 个离散级别。INT4(K=16)和 INT8(K=256)是工业界最常用的配置。
NonUniform 量化(如 bnb NF4)使用预设的非均匀网格,针对权重的高斯分布优化码字位置。NF4 在 4-bit 下比均匀 INT4 提高约 3-4 dB SNR。
GPTQ[Frantar et al., 2022] 利用 Hessian 矩阵的二阶信息,逐列优化量化顺序,在保持精度的前提下实现 4-bit 压缩。
AWQ[Lin et al., 2023] 通过校准数据识别"重要"权重(激活值大的通道),对重要权重保持高精度。
2.2 扩散模型压缩
扩散模型的压缩面临独特挑战:模型在推理时被调用 20-50 次(去噪步数),权重量化误差在迭代过程中反复作用。现有工作主要关注单步推理的精度,缺乏对迭代累积效应的系统性分析。
2.3 随机量化
Stochastic rounding在训练中被广泛使用 [Courbariaux et al., 2014],通过随机舍入方向消除量化偏差。但该方法主要用于训练阶段的梯度量化,未应用于推理阶段的权重重建。
Dither在音频/图像处理领域用于消除量化条纹 [Roberts, 1962],通过在量化前添加噪声破坏周期性伪影。本文方法在概念上与 dither 相关,但在重建阶段而非量化阶段添加噪声,且针对扩散模型的迭代特性进行了优化。
3 方法
3.1 预备知识:INT6 每组量化
给定权重矩阵W ∈ R^{m×n},将其展平为长度 128 的组:
w = [w₁, w₂, ..., w₁₂₈] (一组权重)每组独立量化:
A = max(|wᵢ|) × 1.01 (组内最大绝对值) Δ = 2A / (K - 1) (量化步长, K=64 for INT6) qᵢ = round(wᵢ / Δ) (量化到整数 [-31, +31]) w'ᵢ = qᵢ × Δ (重建值)存储:qᵢ(6 bit/权重)+Δ(16 bit/组)
有效 BPW:6 × 128 / 128 + 16 / 128 = 6.125
3.2 量化误差分析
量化误差定义为:
εᵢ = wᵢ - w'ᵢ = Δ × bᵢ其中bᵢ = wᵢ/Δ - round(wᵢ/Δ)是 round 操作丢弃的小数部分。
定理 1(量化误差分布):当σ/Δ >> 1(组内标准差远大于量化步长)时,bᵢ服从均匀分布U(-0.5, 0.5)。
证明:设x = wᵢ/Δ,其分布为N(0, (σ/Δ)²)。bᵢ = x - round(x)是x的小数部分。当σ/Δ较大时(对于 INT6,σ/Δ ≈ 10.5),x跨越大量整数区间,小数部分趋于均匀分布。□
实验验证:在 Z-Image 模型的 12.2 亿个权重量化误差上统计:
| 统计量 | 实测值 | 理论值(均匀) |
|---|---|---|
| 均值 | 0.000018 | 0 |
| 标准差 | 0.288011 | 1/√12 = 0.2887 |
| |b| 均值 | 0.249488 | 0.25 |
| 范围 | [-0.5000, 0.5000] | [-0.5, 0.5] |
| 直方图熵 | 5.32 bit | log₂(40) = 5.32 bit |
误差分布为完美均匀分布,无可利用的结构。
3.3 确定性误差的累积效应
在扩散模型的第t步去噪中:
x_{t-1} = f_θ(x_t, t) + σ_t z, z ~ N(0, I)其中f_θ是用权重W参数化的神经网络。量化后权重变为W' = W - ΔW(ΔW为量化误差矩阵),实际推理使用:
x̂_{t-1} = f_{W-ΔW}(x_t, t) + σ_t z一阶近似:
x̂_{t-1} ≈ f_W(x_t, t) - ∂f/∂W · ΔW + σ_t z误差项∂f/∂W · ΔW在每一步中完全相同(因为 ΔW 固定)。经 30 步迭代,该偏移作为确定性信号被模型"信任"并放大,而非被去噪机制抑制。
3.4 随机误差补偿(SEC)
核心思想:将确定性误差ΔW替换为零均值随机扰动ΔW̃,使扩散模型的去噪机制自动抑制。
3.4.1 按组误差统计
对每组 128 个权重的量化误差:
b = [b₁, b₂, ..., b₁₂₈] (该组的 round 误差) μ_b = mean(b) (组内误差均值) σ_b = std(b) (组内误差标准差)存储μ_b和σ_b为 float16,开销2 × 16 / 128 = 0.25 BPW。
3.4.2 校准噪声重建
在推理时,每次前向传播重建权重:
w''ᵢ = qᵢ × Δ + Δ × (μ_b + σ_b × ξᵢ)其中ξᵢ ~ U(-√3, +√3)是独立均匀随机变量(方差为 1,匹配σ_b的尺度)。
性质 1(无偏性):
E[w''ᵢ] = qᵢ × Δ + Δ × μ_b = w'ᵢ + Δμ_b当μ_b ≈ 0(大量组的统计平均),E[w''] ≈ w'。更重要的是,每步推理使用不同的随机种子,因此E_{step}[w''] = w'对每步成立。
性质 2(方差匹配):
Var[w''ᵢ - wᵢ] = Var[Δ × (bᵢ - μ_b - σ_b × ξᵢ)] = Δ² × (σ_b² + σ_b² × Var[ξ]) = Δ² × 2σ_b²重建方差为原始量化误差方差Δ²σ_b²的 2 倍。单步误差增大,但 30 步独立随机扰动的累积方差仅以√30速率增长,远优于确定性误差的线性累积。
性质 3(扩散去噪兼容性):
扩散模型在每步中显式处理高斯噪声σ_t z。权重随机扰动产生的输出扰动∂f/∂W × ΔW̃与扩散噪声σ_t z在统计上不可区分(均为零均值随机变量)。模型的去噪机制自然地抑制两者。
3.5 噪声分布选择
我们对比了四种噪声方案:
| 方案 | 噪声形式 | 性质 |
|---|---|---|
| 均匀(未校准) | Δ × U(-0.5, 0.5) | 固定方差,忽略组间差异 |
| 纠偏 | Δ × μ_b | 消除系统偏移,无随机性 |
| 校准均匀 | Δ × (μ_b + σ_b × U(-√3,√3)) | 匹配每组误差统计 |
| 校准高斯 | Δ × (μ_b + σ_b × N(0,1)) | 同上但重尾 |
校准均匀最优,因为量化误差b本身服从均匀分布,使用均匀噪声U(-√3,√3)最匹配误差的真实分布形状。
4 实验
4.1 实验设置
- 模型:Z-Image(Flux 架构,6.02B 参数,239 层可量化 Linear)
- 量化:INT6(64 级),每组 128 权重独立 scale
- 打包:5 个 6-bit 值打包为 1 个 uint32(6.4 BPW)
- 推理:30 步 DDPM 采样,seed=42,prompt=“A beautiful young woman dancing kpop…”
- 硬件:NVIDIA RTX 4090 D 24GB
4.2 图像质量评估
使用以下指标量化生成图像质量:
- 空间相关性(CorrH):水平相邻像素的 Pearson 相关系数。真实图像 > 0.95,噪声图像 < 0.85
- 低频能量占比(LowFreq):FFT 频谱中心 10% 区域能量占比。真实图像 > 20%
- 亮度(Mean):像素均值。bf16 原始 = 122
- 对比度(Std):像素标准差。bf16 原始 = 86.5
4.3 主实验结果
| 方法 | Mean | Std | CorrH | LowFreq | 额外 BPW |
|---|---|---|---|---|---|
| bf16 原始 | 122 | 86.5 | 0.989 | 24.5% | — |
| INT6 确定性 | 117 | 81.9 | 0.991 | 27.6% | 0 |
| INT6 + 均匀噪声 | 178 | 75.4 | 0.988 | 20.7% | 0 |
| INT6 + 纠偏 | 128 | 88.2 | 0.989 | 24.6% | 0.03 |
| INT6 + 校准均匀 | 122 | 88.1 | 0.993 | 30.2% | 0.03 |
| INT6 + 校准高斯 | 186 | 74.7 | 0.993 | 25.5% | 0.03 |
关键发现:
- 校准均匀方案全面最优:CorrH=0.993(超过确定性 0.991),LowFreq=30.2%(超过确定性 27.6%)
- 亮度完美匹配:Mean=122,与 bf16 原始完全一致
- 未校准均匀噪声过亮:Mean=178(+45%),因为忽略了组间误差差异
- 校准高斯也过亮:Mean=186,高斯分布的重尾导致过度补偿
4.4 确定性误差累积的证据
对比 INT6 确定性(mean=117)与 bf16 原始(mean=122),确定性量化使图像偏暗 4%。这是 30 步迭代中系统性偏移累积的直接证据。
校准噪声方案将 mean 修正到 122,完全消除偏移,证实了随机化策略的有效性。
4.5 多 seed 稳定性
| Seed | Mean | CorrH |
|---|---|---|
| 42 | 122 | 0.993 |
| 123 | 135 | 0.989 |
| 777 | 124 | 0.991 |
三个 seed 的 CorrH 均稳定在 0.99 以上,证明结果可复现且不依赖特定随机种子。
4.6 量化误差统计分析
对 12.2 亿个权重的 round 误差b进行全面统计:
分布形状(40 bins 直方图):
每个 bin 占比: 2.43% ~ 2.84% 均匀参考: 2.50% 偏差: < ±0.35%结论:误差为完美均匀分布(U(-0.5, 0.5)),熵 = 满熵。无可压缩的结构。
这一结果从信息论角度确认:round 误差无法被进一步压缩或预测。噪声注入不是"猜测"误差,而是用同分布随机变量替代确定性误差。
4.7 存储与效率分析
| 指标 | INT6 确定性 | INT6 + 校准噪声 |
|---|---|---|
| 值存储 | 6.4 BPW | 6.4 BPW |
| Scale | 0.13 BPW | 0.13 BPW |
| 误差统计 (μ_b, σ_b) | — | 0.03 BPW |
| 总 BPW | 6.53 | 6.56 |
| GPU 峰值 | 15.3 GB | 15.3 GB |
| 推理时间 | 44s | 47s (+7%) |
额外开销:0.03 BPW 存储 + 7% 时间(随机数生成开销),换取图像质量全面提升。
5 分析与讨论
5.1 为什么噪声比确定性更好?
这是本文最反直觉的发现:添加噪声(增加单步误差)反而产生更好的输出。原因在于扩散模型的迭代特性:
确定性路径 (30步): 偏移 δ₁ → 偏移 δ₁ + δ₂ → ... → Σδᵢ (线性累积) 最终偏移 ∝ 30 × δ 随机路径 (30步): 扰动 ξ₁ → 扰动 ξ₂ → ... → Σξᵢ (随机游走) 最终扰动 ∝ √30 × σξ (平方根增长)对于单步误差 δ = ξ(相同幅度),30 步后:
- 确定性累积:30 × δ
- 随机累积:√30 × δ ≈ 5.5 × δ
随机路径的累积误差比确定性路径低 5.5 倍。
5.2 为什么校准比未校准好?
未校准噪声Δ × U(-0.5, 0.5)假设所有组的误差统计相同。但实际上:
- 高方差组(σ_b 大):需要更强的噪声补偿
- 低方差组(σ_b 小):过强的噪声引入不必要扰动
- 非零均值组(μ_b ≠ 0):存在系统性偏移需纠正
校准噪声Δ × (μ_b + σ_b × U(-√3,√3))精确匹配每组的误差特征。
5.3 与其他误差处理方法的对比
| 方法 | 误差处理 | 优点 | 缺点 |
|---|---|---|---|
| 确定性重建 | 保留原始误差 | 零开销 | 累积偏移 |
| 随机舍入 | 量化时随机化 | 无偏 | 需修改量化流程 |
| GPTQ | 用 Hessian 优化 | 最优单步精度 | 需校准数据 |
| SEC(本文) | 重建时注入噪声 | 零修改量化 + 扩散去噪 | 仅适用于迭代模型 |
SEC 的独特优势:不修改量化流程,仅在重建(解码)阶段添加噪声,可与任何量化方法(INT4/6/8、NF4 等)正交组合。
5.4 适用范围
SEC 方法最适用于迭代调用同一模型的场景:
- ✅ 扩散模型(20-50 步迭代去噪)
- ✅ 自回归 LLM(逐 token 生成)
- ✅ 迭代优化(如迭代解码)
- ❌ 单次推理(分类、检测等无累积效应)
对于扩散模型,SEC 的收益最大,因为模型本身为处理噪声而设计。
6 理论分析
6.1 误差传播模型
设f_θ为扩散模型的单步去噪函数,W为原始权重,W'为量化权重。
确定性重建的输出误差:
e_det = f_{W'}(x) - f_W(x) ≈ J · ΔW其中J = ∂f/∂W是 Jacobian,ΔW = W' - W是固定误差矩阵。
30 步累积误差(一阶近似):
E_det = Σ_{t=1}^{30} e_det^{(t)} ≈ 30 × J̄ · ΔWSEC 重建的输出误差:
e_sec = f_{W''}(x) - f_W(x) ≈ J · (ΔW + ΔN)其中ΔN = Δ × (μ_b + σ_b × ξ)是随机噪声,E[ΔN] = Δ × μ_b ≈ 0。
30 步累积误差:
E_sec = Σ_{t=1}^{30} e_sec^{(t)} = Σ J^{(t)} · (ΔW + ΔN^{(t)})由于ΔN^{(t)}在每步独立:
E[|E_sec|²] = |Σ J^{(t)} · ΔW|² + Σ |J^{(t)} · ΔN^{(t)}|² = 确定性部分 + 随机部分(以√30衰减)当随机部分占主导时,SEC 的误差显著小于确定性重建。
6.2 率失真分析
INT6 量化的率失真函数(独立高斯源):
R(D) = (1/2) log₂(σ²/D)INT6(6 bit/权重)的理论最小失真:
D_min = σ² × 2^{-12} = σ² / 4096 SNR_max = 10 log₁₀(4096) = 36.1 dB实测 INT6 SNR = 30.9 dB,效率 = 30.9/36.1 = 85.5%。剩余 14.5% 损失来自:
- 均匀量化(vs Lloyd-Max 最优):-2 dB
- 饱和截断(outliers):-1 dB
- Per-group scale 量化(float16):-2 dB
SEC 不改变权重 SNR(30.9 dB),但改善了输出图像质量。这说明权重 SNR 与输出质量之间不是简单的单调关系——误差的统计性质(确定性 vs 随机)同样重要。
6.3 非均匀量化分析
我们测试了 Lloyd-Max 非均匀量化(64 级),结果:
| 量化类型 | SNR |
|---|---|
| 均匀 INT6 | 30.9 dB |
| Lloyd-Max INT6 | 30.7 dB |
Lloyd-Max 无改善(-0.2 dB)。原因:per-group 归一化将权重拉到 [-1, 1],归一化后分布近似均匀。均匀量化对均匀分布已是最优。
这从侧面证实:INT6 + per-group scale 的量化方案已接近该数据分布的理论极限。
7 结论
本文提出了**随机误差补偿(SEC)**方法,通过在权重重建阶段注入按组校准的随机噪声,将扩散模型权重量化的确定性误差转化为零均值随机扰动。主要结论:
确定性量化误差在扩散迭代中系统性累积,导致图像偏暗(mean 117 vs 原始 122)和对比度降低
量化 round 误差服从完美均匀分布(实测 12.2 亿个误差值),无可压缩结构
按组校准噪声(
μ_b + σ_b × U(-√3,√3))全面最优:CorrH 0.993(超过确定性 0.991),低频 30.2%(超过确定性 27.6%),亮度完美匹配(122 vs 122)额外开销仅 0.03 BPW + 7% 时间,与任何量化方法正交组合
非均匀量化(Lloyd-Max)在该分布上无改善,证实 per-group 均匀量化已接近理论最优
SEC 方法揭示了一个重要洞察:对于迭代模型,误差的统计性质(随机 vs 确定性)比误差的幅度更重要。扩散模型的去噪机制天然适合处理随机扰动,而确定性偏移则被放大。
参考文献
- Frantar, E. et al. “GPTQ: Accurate Post-Training Quantization for Generative Pre-trained Transformers.” ICLR 2023.
- Lin, J. et al. “AWQ: Activation-aware Weight Quantization for LLM Compression and Acceleration.” MLSys 2024.
- Dettmers, T. et al. “QLoRA: Efficient Finetuning of Quantized LLMs.” NeurIPS 2023.
- Roberts, L. G. “Picture Coding Using Pseudo-Random Noise.” IRE Transactions on Information Theory, 1962.
- Courbariaux, M. et al. “Training Deep Neural Networks with Low Precision Multiplications.” arXiv:1412.7024, 2014.
- Ho, J. et al. “Denoising Diffusion Probabilistic Models.” NeurIPS 2020.
- Esser, P. et al. “Scaling Rectified Flow Transformers for High-Resolution Image Synthesis.” Flux, 2024.
附录 A:INT6 + SEC 完整伪代码
Algorithm: INT6 Quantization with Stochastic Error Compensation Input: Weight matrix W, group_size gs=128 Output: Packed indices P, per-group step Δ, per-group error stats (μ_b, σ_b) 1. QUANTIZE: for each group g of gs weights: A_g = max(|w_i|) × 1.01 Δ_g = 2A_g / 63 for each weight w_i in group: x_i = w_i / Δ_g q_i = round(x_i) clamped to [-31, 31] b_i = x_i - q_i (round error) μ_b[g] = mean(b_i) σ_b[g] = std(b_i) Pack q_i as 5-per-uint32 2. RECONSTRUCT (per forward pass): for each group g: for each weight i: w'_i = q_i × Δ_g ξ_i = Uniform(-√3, +√3) (fresh random each forward) w''_i = w'_i + Δ_g × (μ_b[g] + σ_b[g] × ξ_i) Use w'' for matmul附录 B:完整实验配置
| 参数 | 值 |
|---|---|
| 模型 | Z-Image (Flux, 6.02B params) |
| 量化 | INT6, K=64, gs=128 |
| 打包 | 5 values/uint32, 6.4 BPW |
| 推理 | DDPM 30 steps, guidance_scale=4 |
| GPU | NVIDIA RTX 4090 D 24GB |
| 框架 | PyTorch 2.8.0, diffusers 0.39.0 |
