Quantized Gradient Projection for Memory-Efficient Continual Learning¶
会议: ICLR 2026
OpenReview: https://openreview.net/forum?id=xJtxpJ6QdD
代码: 论文称已开源("Our code is available here",链接以原文为准)
领域: 模型压缩 / 持续学习
关键词: 持续学习, 梯度投影, 量化, 内存高效, NormalFloat
一句话总结¶
本文提出 QGPM,把持续学习中用来防遗忘的"梯度投影记忆"(GPM)里的基向量量化压缩存储,并用一套抗异常值的量化(CINF)、误差感知的梯度投影(QEA)和稀疏草图加速三件套,把记忆开销压到原来的 1/4~1/6,同时几乎不掉精度(8-bit 相比全精度 GPM 掉点 <0.5%)。
研究背景与动机¶
领域现状:持续学习(continual learning)要让模型在数据不断到来、分布不断变化的情况下学新任务又不忘旧任务,主流有四类做法——正则化、参数扩张、回放(rehearsal)和梯度投影。其中梯度投影代表作 GPM(Gradient Projection Memory)维护一个"记忆结构",存下张成历史任务梯度子空间的一组核心基向量;学新任务时,把当前梯度投影到这些基向量的正交补空间里更新,从而不干扰旧知识。它抗遗忘最稳,而且不存原始数据、天然保护隐私,很适合医疗等敏感场景。
现有痛点:GPM 把基向量以全精度存储,记忆占用会随任务数增长,而且这个量级与模型嵌入维度成正比——比如全量占满的 GPM,ViT-B/16 要 515MB、ViT-S 要 66MB。Rebuffi 等人早就强调,可用的增量学习器必须把内存和算力开销控制在有界或缓增。所以"内存效率"直接决定 GPM 这类方法能不能真正落地。
核心矛盾:一个直觉的省内存办法是把存下来的基向量量化。但子空间是正交更新的"参照系",对量化引入的失真极其敏感。本文用 Theorem 3.2 证明:用量化后子空间算出的投影梯度,相比理想正交更新的偏差,随基向量数量 \(m\) 线性增长、随量化噪声 \(\sigma\) 二次增长。直接套用标准线性量化会有两个具体麻烦:(1) 单个基向量的分布往往重尾,量化误差很大;(2) 子空间失真会让投影梯度偏离本该正交的方向,作者称之为"梯度漂移"(gradient drift),多任务累积后会破坏旧知识。
本文目标:在保留 GPM 防遗忘与隐私优点的前提下,把它的记忆开销大幅压缩,并解决量化带来的重尾误差与梯度漂移。
核心 idea:用"分布感知量化 + 误差感知投影 + 稀疏草图加速"三件套,把 GPM 的基向量子空间安全地量化压缩——量化时剔掉异常值、投影时按量化保真度自适应放松正交约束、构造时用稀疏草图把 SVD 算得更省。
方法详解¶
整体框架¶
QGPM 不改 GPM 的防遗忘骨架(投影到历史子空间的正交补),只把"基向量怎么存、投影怎么算、子空间怎么造"三处做了量化友好的改造。一个任务的完整流程是:新任务数据前向得到各层表示矩阵 \(R^l_\tau\) → 用 On-the-Fly 稀疏草图 把巨大的 \(R\) 从 \(n\times N\) 压成 \(n\times n\) → 对压缩后的"新增正交分量"做 SVD、按方差阈值 \(\epsilon_{th}\) 取 top-\(r\) 个左奇异向量作为新基 → 用 CINF 量化 把这些基压缩(同时记录异常值、尺度、均值、正交权重 \(\lambda\))→ 追加进量化记忆 \(M^l_{Q,\tau}\)。等到训练下一任务时,把量化基反量化回来,用 QEA 梯度投影 按每个基的 \(\lambda\) 放松正交约束来更新权重。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
A["新任务数据 → 前向得到表示矩阵 R"] --> B["On-the-Fly 稀疏草图<br/>把 R 从 n×N 压到 n×n"]
B --> C["对正交分量做 SVD<br/>按方差阈值 εth 取 top-r 基"]
C --> D["CINF 量化<br/>剔异常值 + 内点 NFk"]
D --> E["存入 QGPM<br/>量化基 + 尺度/均值/正交权重 λ"]
E --> F["训练下一任务:反量化基 + QEA 投影<br/>按 λ 自适应放松正交约束"]
F --> G["更新权重 → 进入下一任务"]
关键设计¶
1. On-the-Fly 稀疏草图:把构造 GPM 时的 SVD 内存与算力瓶颈砍掉
GPM 在任务结束后要更新基,标准做法是把整张特征图的局部 patch 全部展平拼成表示矩阵 \(R^l_\tau=[r_1,\dots,r_N]\)。问题在于 \(N\) 会极大,尤其卷积块和 Transformer 块里,导致 SVD 又慢又吃训练时内存。作者用稀疏草图矩阵 \(S\in\mathbb{R}^{r\times N}\)(每列只有一个非零项,位置由哈希 \(h:[N]\to[r]\) 决定、符号由 \(\sigma:[N]\to\{-1,1\}\) 决定)以流式方式构造 \(R\) 的低维近似。Theorem 3.3 保证:当 \(r=O(k^2/\epsilon^2\delta)\) 时,\(S\) 以高概率是 \((1\pm\epsilon)\)-\(\ell_2\) 子空间嵌入,即 \((1-\epsilon)\|Ax\|_2\le\|SAx\|_2\le(1+\epsilon)\|Ax\|_2\),几何结构近似不变。取 \(r=n\) 就能把表示矩阵从 \(\mathbb{R}^{n\times N}\) 降到 \(\mathbb{R}^{n\times n}\),峰值中间内存和 SVD 计算量都按 \(N/n\) 倍下降——ViT-S 的表示矩阵能从 1.62GB 压到 66MB。它解决的是"训练时"的临时开销,和后面两项压缩"存储"的设计互补。
2. CINF 量化:用居中+内点归一化让重尾基向量量化得更准
朴素的 NormalFloat(NF\(k\),QLoRA 里那种对正态数据信息论最优的量化)有个硬伤:它用全局最大绝对值 \(M=\max_i|a_i|\) 来归一化,一旦有异常值,\(M\) 被拉得很大,绝大多数值被压到接近 0,分布变成强次高斯,码本利用率极低——大部分值挤在 0 附近的桶里,靠近 \(\pm1\) 的极端桶几乎空着,信息损失严重。CINF(Centered Inlier Normal Float)的做法是:先减去均值 \(\mu\) 做居中,再算居中值的 \(\delta\) 与 \(1-\delta\) 分位点 \(q_\delta,q_{1-\delta}\),落在分位区间外的少量异常值用全精度无损存储,剩下的内点用 NF\(k\) 量化、且归一化尺度改成 \(s=\max(|q_\delta|,|q_{1-\delta}|)\) 而不是全局 \(M\)。作者借正态阶统计量的期望(Theorem 3.1)说明:\(\mathbb{E}[M]\approx\Phi^{-1}(\tfrac{B-\alpha}{B-2\alpha+1})\) 会随 \(B\) 增大而变大,而剔掉 1% 异常值后内点尺度 \(\mathbb{E}[s]\approx\Phi^{-1}(\tfrac{0.99B-\alpha}{B-2\alpha+1})\) 上界被压在 \(\Phi^{-1}(0.99)=2.32\),归一化后分布更均匀、码本利用率更高,因此 \(e_{\text{CINF}}\le e_{\text{NF}k}\)。量化按列作用在 SVD 得到的 top-\(r\) 左奇异向量上,每列输出 \((u_q,s,\mu,\lambda)\)。
3. QEA 梯度投影:按每个基的量化保真度自适应放松正交约束,对抗梯度漂移
即便 CINF 把单次量化误差压得很小,量化基跨多个任务累积仍会让子空间整体偏移,投影方向偏离真正交,产生梯度漂移。QEA(Quantization Error-Aware)的思路是:与其强行 100% 正交,不如允许一个受控的平行梯度分量,且放松幅度按每个基的量化保真度自适应。具体地,每个新基 \(\hat U^l_\tau[:,i]\) 量化后立刻反量化得 \(\tilde U^l_\tau[:,i]\),用余弦相似度定义量化误差 \(e_i=1-\text{sim}_{\cos}(\tilde U^l_\tau[:,i],\hat U^l_\tau[:,i])\);再引入缩放超参 \(\alpha\),给每个基一个正交权重 \(\lambda_i=1-\alpha\cdot e_i\)。投影时把对角权重矩阵 \(\Lambda\) 插进投影算子:
当某个基量化误差 \(e_i\) 大时,\(\lambda_i\) 变小,投影削弱,更多梯度沿该方向"漏"过去(增加可塑性),正好补偿这个方向上失真带来的偏差;误差小的基则保持接近严格正交。它和 CINF 是配套的——CINF 负责把误差降下来,QEA 负责把"压不下去的残余误差"在投影层面对冲掉,因此在激进低比特(如 4-bit)下增益最明显。
损失函数 / 训练策略¶
训练沿用 GPM 的两段式:任务内反复用投影后的梯度 \(\hat g=g-P_{\tau-1}g\) 做 SGD 更新直到收敛(投影算子用反量化后的基 + QEA 权重 \(\Lambda\) 构造);任务末再采一批样本前向,提取相对当前子空间的正交分量、稀疏草图 + SVD 取新基、CINF 量化后追加进 QGPM。多头设置,每个任务一个分类头。关键超参:方差阈值 \(\epsilon_{th}\)(控制取多少基、即子空间近似保真度)、异常值比例 \(p\)、QEA 缩放因子 \(\alpha\)、量化比特数。
实验关键数据¶
主实验¶
三个标准持续学习基准:10-split CIFAR-100(AlexNet)、5-Datasets(ResNet-18)、10/20-split miniImageNet(预训练 ViT-S)。指标为平均准确率 ACC 与后向迁移 BWT(越接近 0 越不遗忘)。所有 baseline 都按 QGPM 的内存预算对齐(调缓冲区大小)。
| 方法(CIFAR-100) | 内存 | ACC↑ | BWT↑ |
|---|---|---|---|
| GPM-FP(全精度) | 3.13 MB | 71.11 | -0.98 |
| GPM-FP-MC(同等内存) | 0.81 MB | 64.58 | -12.88 |
| DER++-MC | 0.81 MB | 60.63 | -14.82 |
| FDR-MC | 0.81 MB | 63.07 | -13.74 |
| 8QGPM(本文) | 0.81 MB | 70.70 | -0.81 |
| 4QGPM(本文) | 0.48 MB | 69.74 | -2.62 |
跨四个基准,8QGPM 平均省 3.83× 内存而 ACC/BWT 相比 GPM-FP 掉点 <0.5%;4QGPM 进一步省到 6.44×,掉点 <1%。在同等内存下,回放类 baseline(AGEM/ER/FDR/DER++)因缓冲区被压小而严重遗忘(BWT 明显更负)。内存压缩接近理论上限:ViT-S 66.3MB→17.8MB(8-bit)/10.2MB(4-bit),轻微偏离来自异常值全精度存储和元数据开销。
消融实验¶
均在 10-split CIFAR-100 上分析(除特别说明,关掉 QEA 即 \(\alpha=0\)、\(p=0\) 以隔离变量)。
| 消融维度 | 配置 | ACC | BWT | 说明 |
|---|---|---|---|---|
| 比特数 | 4-bit | 25.03 | -31.27 | \(e_{avg}\)=0.544,<5-bit 急剧崩 |
| 比特数 | 6-bit | 64.22 | -0.32 | 已接近全精度 |
| 比特数 | 8-bit | 65.01 | 0.61 | ≈FP(65.02) |
| 异常值比例 | \(p\)=0 | 41.23 | -24.40 | \(e_{max}\)=1.205,单个坏基致漂移 |
| 异常值比例 | \(p\)=2% | 55.36 | -11.07 | 剔异常值显著降 \(e_{max}\) |
| QEA(\(p\)=1%) | \(\alpha\)=0 | 44.20 | -20.69 | 不放松正交 |
| QEA | \(\alpha\)=80 | 67.26 | -2.91 | 最优 |
| QEA | \(\alpha\)=200 | 65.17 | -7.28 | 过度放松、任务间干扰增大 |
关键发现¶
- 量化误差的"最大值"比"平均值"更致命:即便 \(e_{avg}\) 很低,只要有单个基量化得很差(\(e_{max}\) 大)就能引发梯度漂移、训练失稳——这正是 CINF 用异常值全精度存储压 \(e_{max}\) 的理由。
- QEA 是低比特救星,但 \(\alpha\) 要匹配误差强度:\(\alpha\) 从 0 升起 ACC 先持续上升(平行分量补偿失真),过阈值后因过度放松引入任务间干扰而下降;量化越激进(4QGPM)需要的 \(\alpha\) 越大。
- 稀疏草图在大模型上才显威力:AlexNet/ResNet-18 上 GPM 投影本就便宜、加速不明显;ViT-S 上 SVD 在大表示矩阵上成主瓶颈,草图同时加速 SVD 与整体训练,且量化/反量化开销可忽略(8QGPM_s 与 GPM-FP_s 运行时相近)。
- 内存-精度权衡稳健:在 ImageNet-R 上随阈值 \(\epsilon\) 减小(基更少)性能大体稳定;带中等 \(\epsilon\) 的 4QGPM 常优于用激进小 \(\epsilon\) 的 8QGPM 或 GPM-FP。ViT-B/16 上 GPM-FP 在 92.59MB 被 ER 反超,而 QGPM 压到 14.4MB 仍超过 ER。
亮点与洞察¶
- 把"量化"这把 LLM 时代的锤子,第一次砸到持续学习的梯度子空间上:据作者所述,此前无人用量化压缩 GPM 的基子空间,思路简单却有效,且天然延续 GPM 不存原始数据的隐私优势。
- CINF 的"异常值全精度 + 内点量化"是可迁移的小 trick:任何重尾向量的低比特量化都可借鉴——用分位点而非全局最大值定尺度,把少量离群点单独无损存,码本利用率立刻起来。
- QEA 把"正交约束"从硬变软,且软的程度由量化误差自己决定:这种"用一个可观测的保真度信号(余弦相似度)去自适应调节约束强度"的范式,可迁移到其他被近似/压缩污染的约束优化里。
局限与展望¶
- 方法仍建立在 GPM 框架上,只适用于"梯度投影类"持续学习,对正则化/回放/扩张类不直接适用。
- 量化误差累积的理论分析(Theorem 3.2)假设误差为各列独立高斯,真实量化误差未必满足,结论是定性指导;\(\alpha\)、\(p\)、\(\epsilon_{th}\) 等关键超参需按数据和比特数调,缺乏自动选取方案。
- 异常值需全精度存储,极端重尾分布下若异常值比例被迫调高,压缩比会被侵蚀;论文主要在视觉基准上验证,跨模态/语言任务的普适性待考。
- 一个可延伸点:把 QEA 的逐基 \(\lambda\) 做成随训练动态更新(而非量化时一次定死),或与回放类方法在同一内存预算下混合。
相关工作与启发¶
- vs GPM(Saha et al., 2021):GPM 全精度存基、严格正交投影;本文把基量化压缩并放松正交,目标是同等防遗忘下把内存压到 1/4~1/6,是对 GPM 的"内存高效化"改造而非替换。
- vs 回放类(ER / DER++ / FDR / AGEM):它们存原始样本或 logits 做回放,隐私敏感、且同等内存下缓冲区被压小会严重遗忘;QGPM 不存数据,靠压缩子空间在紧内存下更稳。
- vs 蒸馏/适配器类内存高效方法(Ermis et al. 2022 等):这些往往需要保留一份完整 backbone 或额外辅助网络做蒸馏,反而带来被低估的内存开销;QGPM 直接压缩已有的梯度记忆,不引入额外大网络。
- vs QLoRA 的 NF\(k\)(Dettmers et al., 2023):本文复用 NF\(k\) 的码本思想,但针对持续学习基向量的重尾分布提出 CINF 抗异常值改造,并补上量化误差对投影方向影响的 QEA 机制。
评分¶
- 新颖性: ⭐⭐⭐⭐ 首次把量化用于压缩 GPM 梯度子空间,CINF/QEA 两处针对性设计扎实
- 实验充分度: ⭐⭐⭐⭐ 四基准 + 多模型尺寸 + 比特/异常值/\(\alpha\)/\(\epsilon\) 多维消融,内存-精度权衡分析细致
- 写作质量: ⭐⭐⭐⭐ 动机—挑战—对策链条清晰,理论与方法配套,记号略密
- 价值: ⭐⭐⭐⭐ 隐私友好 + 内存高效的持续学习,对医疗等敏感场景落地有实用意义