零校准 · 零修正 · 3.8x 压缩 · QA 75.3% —— 全项目性价比最高的可部署配置
模型: MiniCPM5-2B (32层) |硬件: RTX 2070 8GB
定位: 本报告是该配置的独立完整文档, 汲取自《量化函数族探索_完整报告.md》
与《多参数量化扩展_实验与原理报告.md》两份前报告的结论, 并含最新的归因实验。
日期: 2026-10
0. 一页结论
| 指标 | 数值 |
|---|---|
| 位宽 | int4 (4 bit/权重) |
| 组宽 | 32 (沿输入维) |
| 校准数据 | 不需要 |
| 修正层 | 不需要 |
| 存储 | 4.25 位/权重 →3.76x 压缩 |
| 全模型 QA (8题) | 75.3%(6/8 题 >70%) |
| 参照 | int8-RTN 94.8% @ 2.0x; int4-RTN 0% (崩溃) |
一句话: 纯权重离线操作 (每矩阵一次 112 候选网格搜索 + 25 轮 1D k-means),
无任何运行时开销、无校准集依赖、无辅助结构, 把 int4 从"模型崩溃"(0%)
救到"实用可用"(75.3%)。
1. 原理
1.1 设计哲学
RTN 的问题不是"格太粗", 而是一个全局尺度无法匹配所有局部分布。
本方法把权重矩阵沿输入维切成 32 宽的小组,每组独立回答三个问题:
- 我的分布像什么形状? (变换族选择)
- 压缩到什么程度最自然? (形状参数 b)
- 给定形状后, 8 个重建级别放哪最优? (Lloyd 精修)
1.2 变换族 (候选集, 112 个)
有界有理族(2 参数, 105 候选):
f(w) = c·w / (b + |w|^β) b = b_rel × 组内max|w| ← 尺度无关参数化 b_rel ∈ logspace(-3, 2, 15) β ∈ {0.50, 0.55, 0.65, 0.75, 0.85, 0.95, 1.00} ← β≤1 保单调 逆 (β=1): w = fd·b/(1−fd); β<1: 不动点迭代 w ← fd·b + fd·w^βtanh 族(1 参数, 7 候选):
f(w) = tanh(w/b), b_rel ∈ {0.25, 0.4, 0.6, 0.85, 1.2, 1.8, 3.0} 逆: w = b·atanh(fd)族内最优 = β=1 有界版 (数学推导见前报告 §1: β<1 无界、β>1 折叠);
但逐组在 β<1 与 tanh 中仍有真实收益——每个组的局部分布不同。
1.3 量化流程 (每组独立)
输入: 组内 32 个权重 |w| (符号单独存 1 bit) ① 形状选择: 112 个候选各做一次 f 空间 8 级均匀量化 → 重建 → 组内权重 MSE → argmin 选出最优 (形状, b, β) ② 级别提取: 最优解的 8 个重建值 = 初始码本 c⁰ ③ Lloyd 精修 (25 轮, 收敛远早于此): 分配: 每权重 → 最近级别 更新: 级别 = 成员均值 (1D k-means) 单调性: 权重 MSE 每轮不增 → 结果 ≥ 初值质量 (数学保证) ④ 重建: |w̃| = 最近级别; w̃ = sign·|w̃|1.4 三个关键设计决策的依据
决策 1: 为什么参数化解做 Lloyd 初值, 而不是 Lloyd 冷启动?
实测: 冷启动 (分位数初值) 0.0793,输给纯参数化 (0.0658);
warm start 0.0434, 必赢参数化 (k-means 单调保证)。
→ 参数化变换族 = Lloyd 的优质先验, 两者是共生关系不是竞争关系。
决策 2: 为什么组宽 32?
组宽曲线 (单层误差): g128 0.0658 → g64 0.0520 → g32 0.0434。
组越小, 局部分布越纯, 形状匹配越精确。g32 时参数开销仅
8 bit/32 权重 = 0.25 bit/权重 (总 4.25 bit → 3.76x), 继续减小组
(g16 0.0325) 存储涨到 4.5 bit 而全模型 QA 反而下降 (76.2% < 75.3% 的
同 r16 对照 80.1% 的对应裸版), 性价比拐点在 g32。
决策 3: 为什么不需要校准数据?
量化全程只看权重本身。校准的价值在于按激活重要性 E[x_j²] 分配精度,
但实测其对角代理只修复 q_proj 类模块 (0.019→0.0078), 对 o_proj/down_proj
几乎无效 (0.030→0.030)——重要性信息的一阶近似性价比不足以抵消校准依赖。
裸量化靠"小误差处处弥散"存活: 每组误差都被 Lloyd 压到该组分布的
局部最优, 没有系统性偏向, 32 层累计后仍可用 (75.3%)。
2. 存储格式
每权重: 4 bit = 3 bit 级别索引 (0..7, 幅度) + 1 bit 符号 每组: ~8 bit = 形状族 (1) + b_rel 索引 (4, 15 选 1) + β 索引 (3, 7 选 1) 合计: 4 + 8/32 = 4.25 bit/权重 → 16/4.25 = 3.76x 压缩推理时反量化: 按组查 (级别表, 符号) → 稠密 fp16 权重 (或融合进 kernel)。
无运行时额外矩阵乘、无缩放钩子、无跨层折叠。
3. 实验
3.1 单层误差演进 (int4, q_proj, 6144 激活)
| 步骤 | 误差 | vs RTN |
|---|---|---|
| RTN int4 | 0.1069 | — |
| 逐组参数化 g128 | 0.0658 | -38.4% |
| + Lloyd warm | 0.0582 | -45.6% |
| 组宽 g32 | 0.0434 | -59.4% |
3.2 全模型 QA 归因 (8 题, 与 fp16 基线比相似度)
| 配置 | QA | 归因 |
|---|---|---|
| int4 g128 裸 (旧) | 51.1% | 基线 |
| int4 g32+warm 裸 | 75.3% | 量化器升级 +24.2 ★ |
| int4 g32+warm + r16 修正 | 80.1% | 修正层仅 +4.8 |
归因结论: 端到端质量的主力是量化器本身 (+24.2 点), 修正层是
可选项 (+4.8 点, 代价=校准依赖+6% 存储+复杂度)。
裸量化 75.3% 已超过旧版带修正管线 (g128+r16 = 66.3%)。
3.3 裸量化逐题明细
| # | 问题 | 裸 g32+warm | +r16 |
|---|---|---|---|
| 0 | 用一句话介绍长城。 | 100.0% ✓ | 61% |
| 1 | 中国的四大发明是什么? | 89.6% ✓ | 92% |
| 2 | Explain photosynthesis | 92.5% ✓ | 92% |
| 3 | Python 最大公约数函数 | 24.9% ✗ | 100% |
| 4 | 9.11 和 9.9 哪个大 | 82.8% ✓ | 89% |
| 5 | 天空为什么是蓝色 | 26.1% ✗ | 19% |
| 6 | Capital of France | 100.0% ✓ | 100% |
| 7 | 秋天五言绝句 | 86.5% ✓ | 86% |
| 平均 | 75.3% | 80.1% |
弱项集中在代码生成 (Q3) 与因果解释 (Q5)——与 int4 信息丢失的一致模式。
单题双向摆动大 (Q0/Q3), 8 题均值噪声约 ±4 点, 结论以均值为准。
4. 诚实边界
- QA 样本小: 8 题是快速迭代用的探针, ±4 点噪声; 定稿前应换
100+ 题标准集 (C-Eval / MMLU 子集) 复核 75.3% 这个数。 - 弱项模式: 推理/代码类问题降级明显; 若业务以这类为主, 建议 +r16
(80.1%) 或升 int5 (预期 ~85%)。 - 重要性失配的残余风险: 无校准意味着精度分配不知道激活离群列。
裸量化的 75.3% 是端到端实测 (含此风险), 但换模型/换领域后需重测。 - 与缓存评估教训的关系: 本报告所有 QA 数字都来自真实生成对比,
不是单层代理——经历过"缓存评估虚高 5~17 倍"的证伪事件后,
只有端到端数字作数。
5. 部署指南
5.1 量化 (离线, 每矩阵一次)
for每个权重矩阵 W(out×in):for每组 g(沿in,宽32):Gf=|W[:,g]|;gmax=Gf.max()for(形状,b_rel,β)in112候选:b=b_rel*gmax f=变换(Gf)# rat 或 tanhq=round(f/fmax*7).clamp(0,7)# 8 级wr=逆变换(q/7*fmax)mse=mean((Gf-wr)²)最优候选的8个重建值 → 码本 c Lloyd25轮(1D k-means)→ 最终码本与分配 存:索引(4bit/权重)+每组参数(8bit)单矩阵 (2048×2048) 耗时 ~30s (RTX 2070); 全模型 224 矩阵 ~10 分钟。
Python 参考实现:exp_g32_bare_qa.py::quant_g32_warm。
5.2 推理
反量化为稠密权重后走标准 forward; 或写 int4 kernel 时
按组查码本 (码本仅 8 值, 可驻留寄存器/共享内存)。
5.3 配置选择树
要极限质量 → int8-RTN 94.8% @ 2.0x (零校准) 要平衡 (推荐默认) → 本配置 g32+warm 75.3% @ 3.8x (零校准) 质量略优先, 有校准集 → 本配置 + r16 80.1% @ 3.7x 显存极限 → int4-g16 变体 76.2% @ 3.56x (不推荐, 见 §1.4-2)6. 溯源: 这条路径上的关键实验
| 实验 | 发现 | 文件 |
|---|---|---|
| 函数族分析 | β=1 族内最优; 有界性条件 | (前报告 §1) |
| 逐组参数化 (用户提案) | 首次 -34.8%, 启发整个方向 | exp_group_opt.py |
| Lloyd warm | 单调保证, 击败冷启动与纯参数化 | exp_lloyd_warm.py |
| 组宽扫描 | g32 甜点 (QA 口径) | exp_g32_deep.py |
| A 组件消融 | erf/多初值/列范数各 <2%, 未进裸版 | exp_improve_a.py |
| 全模型崩溃→修复 | ridge+安全阀, int4 首次存活 | exp_full_int4_ridge.py |
| 裸量化归因 | 量化器 +24.2 / 修正层仅 +4.8 | exp_g32_bare_qa.py★ |
| QA 证伪事件 | 缓存评估虚高 5~17 倍, 端到端才算数 | exp_mparam_qa.py |
7. 结论
int4-g32+warm 裸量化是整个 40+ 实验探索收敛出的最优性价比部署点:
- 极简: 112 候选网格 + 25 轮 1D k-means, 每矩阵一次离线
- 零依赖: 无校准集、无修正层、无运行时开销、无跨层结构
- 有效: int4 档从 0% (崩溃) 到 75.3%, 压缩 3.76x
- 可升级: 加 r16 修正 (+4.8) 或升 int5 (预期 ~85%) 都是无缝路径
它的本质是把自由度花在刀刃上: 不追求全局最优变换 (被证明输给
RTN), 不追求非参数最优码本 (被证明输给参数化 warm), 而是让每个
32 权重的小组在 112 个简单形状里选一个最像自己的, 再让 Lloyd 把
最后一滴精度挤出来。