# 小规模适配：更新什么，怎样保存，怎样计算

本篇接在 SFT 的参数更新问题之后：若已有任务数据，是否一定要更新所有参数？课堂默认主线保持对助手训练的聚焦，低秩更新、量化和误差校准在这里完整展开。

已有模型不一定要重新训练全部参数才能适应稳定任务。适配的起点应是任务与评价：希望改变输出格式、领域处理或某种反复出现的行为，手里是否有足够且有代表性的样本，怎样判断改动有效。少量新事实通常可以先作为上下文提供；把事实写进权重与在本次请求中提供事实，是成本和更新周期不同的选择。

<a id="lora"></a>
## LoRA的两条真实计算路径

本节单独采用列向量约定，与 N02–N08 的行向量记法互为转置，计算含义不变。输入x的形状是4096×1，原矩阵W的形状是4096×4096。全量训练这个矩阵需要更新16,777,216个参数。LoRA保留冻结的W，并增加两个可训练矩阵：A为8×4096，B为4096×8。

$$
W'=W+sBA,\qquad y=Wx+sB(Ax).
$$

A先把输入映射为8维，B再映射回4096维；旁路输出乘固定缩放s后与主路相加。形状因此严格相容。两矩阵参数数目为

$$
8\times4096+4096\times8=65,536,
$$

等于原矩阵参数数目的1/256。这个比例只针对当前矩阵的增量，不是整个网络的训练参数占比。网络可能在多个目标层使用适配，也可能保留其他可训练参数，实际统计应读取真实配置。

低秩约束落在更新BA上，不能据此说完整W或整个模型本来只有秩8。冻结表示W的数值不更新，但它仍执行前向乘法；训练还需要经过底座的必要计算，把误差信号送到适配参数。因而可训练参数减少256倍不等于训练速度提升256倍，也不保证激活内存同步缩小。适配秩、目标模块和样本质量都会影响效果。

原始LoRA常用一边随机、一边为零的初始化，使初始增量为零，起点保持原模型行为。若部署允许，可以把增量合并回W以简化推理路径；但多个适配器切换、量化底座和不同精度安排会改变合并成本与误差，不能未经检查就把一种部署方法视为普遍无代价。

<a id="qlora"></a>
## QLoRA：三种精度对象不能混合

QLoRA进一步将冻结底座以低位格式保存。它区分三件事：权重存储格式、矩阵计算精度、可训练参数与梯度的精度。底座按需要反量化后参与计算，LoRA增量在较高精度路径上训练；不能把整张图标成“4-bit训练”，暗示所有累加和梯度都只有四位。

原论文的NF4是为近似正态分布权重设计的四位数值格式，用有限表示值近似分组后的权重。量化仍需要尺度等常数；双重量化再对这些量化常数进行压缩，减少元数据成本。分页优化器利用内存管理缓解峰值压力，它不改变训练目标，也不使CPU/GPU之间的数据移动免费。

假设一个教学权重值0.37被近似保存为0.35，差−0.02便是量化误差。网络输出受误差与输入共同影响，因此不能只看权重误差大小就断言任务无损，也不能只看一个层输出相似就证明所有生成稳定。实际验证应在留出任务上检查质量、速度、显存与异常输入。

PEFT工具主要组织LoRA等适配模块、参数选择和训练接口；bitsandbytes等实现提供低位数值运算及相关优化器。它们的职责可以组合，但可用组合依赖版本、硬件、模型和目标层，安装成功本身不是训练正确的证据。

<a id="quantization"></a>
## 量化误差怎样与校准数据相连

一种简单量化把权重逐项映射到最近可表示值，但矩阵输出误差还与真实输入分布有关。对于校准输入X，可以考察

$$
\|WX-\widehat W X\|^2,
$$

而不只看权重间的\(\|W-\widehat W\|^2\)。GPTQ类方法围绕这种层输出重构目标，用近似二阶信息处理逐步量化后对其他权重的补偿。它属于量化方法，不能与“只训练LoRA”当作同一动作。课堂不展开完整求解，Lab用小矩阵区分逐项误差与输出误差；校准数据不具代表性时，校准结果也可能不能迁移到真实请求。

部分权重或激活会出现幅度较大的离群值。统一范围若被少数极端值拉大，普通值之间的量化间隔就可能变粗；若直接截断极值，又可能损害重要信号。因此量化格式、分组、尺度和离群值处理需要结合校准分布考虑。NF4并不是把区间均匀分成16份的线性量化，不能用均匀量化小例的误差数值冒充NF4实测。

<a id="other-adaptation"></a>
## 其他适配方式与边界

Adapter通常在网络中插入小模块，prompt或prefix tuning则训练特定输入或注意力前缀的连续表示；它们都减少部分训练成本，但改变计算的位置与部署接口不同。用自然语言写一个提示而不训练连续参数，不应因为名字相似就叫作同一种微调。

剪枝尝试移除参数或连接，彩票假说研究稀疏子网络与初始化等条件。它们讨论的是模型中哪些部分可以被保留或训练，与LoRA约束增量的角度不同。稀疏参数更少也不保证任意硬件更快，实际速度取决于结构与算子支持。小规模适配、量化和剪枝可以结合，但每增加一种约束，都应检查任务质量和执行收益。

若回到课堂的规模化训练问题，需另用稠密模型与全参数 Adam 的账本。那里8B模型的128 GB持久状态来自低精度权重、梯度、主权重和两个动量的统一教学假设，不是LoRA或QLoRA必需的固定占用。比较资源之前必须先问：到底更新哪些参数，保存哪些状态，采用什么精度？

## 来源与课堂定位

- [LoRA](https://arxiv.org/abs/2106.09685)：低秩更新机制（[N40说明入口](../classroom/N40.html?step=b0)、[完整旁路算例](../pages/L01.html)）。
- [QLoRA](https://arxiv.org/abs/2305.14314)：冻结低位底座、NF4、双重量化与分页优化器（[完整阅读](../pages/L02.html)）。
- [GPTQ](https://arxiv.org/abs/2210.17323)：量化的层输出重构与误差补偿。
- [Hugging Face PEFT](https://github.com/huggingface/peft)：适配模块实现入口；具体运行环境见本课Lab记录。
- 已归档A03适配路线、A05 p45–54、A15 p9–16及p24–35支撑课堂重写；量化课件A17–A18补充误差视角。
