23|微调、量化与蒸馏:改变模型,还是改变输入系统
目标:能够判断何时确实需要参数适配,理解LoRA与量化的内部约束,避免拿训练技术解决数据新鲜度问题。
本章目录
沿着对象与状态理解本章
先判断是知识更新、行为适配还是运行资源问题,分别考虑检索、微调与量化。
下方图解的固定输入在“输入与适用条件”中声明。它用于解释本章机制,不与本章其他独立例子的数值暗中接续。
省参数、省位数、少激活不是同一种优化
LoRA、量化、MoE到底各自省了哪一部分?
可以把系统的账分成三本:有多少参数要存、其中多少参数要更新、这次推理实际用到多少计算。LoRA主要减少需要训练的增量参数;量化改变数值存储表示;MoE选择部分专家计算。把它们统称“模型缩小了”会遗漏真正代价。
输入与适用条件:本图比较技术作用对象;具体数值对照分别在O02量化、O03 LoRA、O08 MoE中声明独立输入。
1 / 6 · 原有大权重
窄屏可左右滑动图形,或点击“放大图形”。文字解释紧随图后。
先说你需要缩小的是哪本账,否则优化指标会错位。
本步状态由图形与说明共同给出。默认静止。用“下一步”看完解释再继续;播放到最后一步自动停止。键盘聚焦播放器后,可用左右键逐步查看、空格播放/暂停。图中颜色辅助区分,含义同时用文字注明。
为什么需要
训练资源和推理资源有限,但不同瓶颈需要不同方案。
怎样实现
先区分存储、求导、激活计算,再进入对应技术。
可能的代价与误解
低秩容量有限、低精度有误差、专家路由有不均衡与通信。
如何判断是否做对
分别计量峰值显存、延迟、吞吐、质量和训练可恢复性。
1. 先诊断知识缺口与行为缺口
模型不知道最新接口,优先检索当前文档;模型反复使用错误输出格式,可先修Schema与示例;模型在稳定领域任务中系统性表现不足,才考虑微调。记忆解决跨会话信息利用,Skill提供程序性方法,Harness解决执行组织,它们与参数更新不是互相替代关系。
微调成本包括数据构建、训练、评测、部署、回滚和持续维护。几百条低质量示例未必比一份清晰工具接口有用。尤其不要把经常变化的仓库实现全部训练进模型,导致每次代码修改都面临模型过期。
2. LoRA的低秩更新
对权重矩阵W∈R^(dout×din),LoRA冻结基础W,学习ΔW=(α/r)BA,其中A∈R^(r×din)、B∈R^(dout×r)。参数从dout×din变为r(din+dout),当r较小时显著减少可训练参数。[N38]
前向可写成Wx+(α/r)B(Ax)。在适当条件下,部署时可把ΔW合并进W,减少额外计算;多适配器切换、量化基座和精度要求会改变最佳部署方式。低秩是参数化假设,不保证任何任务都能用很小r达到全量微调质量。
选择适配哪些层同样重要。只改注意力投影与同时改前馈层的容量不同;参数少不代表激活开销消失,反向仍需经过相应计算图。评测必须包含原有能力,以检测专业任务提升是否造成其他退化。
3. QLoRA的节省来自哪里
QLoRA结合低比特冻结基座与可训练适配器,研究中使用特定量化表示及内存管理方法。关键是基础参数低比特存储,计算时按算子需求反量化/使用较高精度,梯度更新主要作用在适配器。[N39]
它不意味着所有训练状态都变成4比特,也不意味着任意4比特模型都能无损微调。量化格式、分组尺度、计算dtype、优化器和序列长度共同决定显存与效果。报告“可以放进一张卡”时必须说明完整配置。
低比特部署还会受硬件核支持影响。理论权重字节变少,若执行时频繁转换或没有高效kernel,端到端速度未必提高。容量收益与速度收益要分别测量。
4. 量化误差为什么与激活分布有关
线性层误差可写成δy=(Ŵ−W)x。即使权重误差的普通均方值小,若它集中在输入x常用的大幅度方向,输出误差仍可能大。AWQ等方法利用激活信息设计权重量化,体现了只看权重自身分布不一定足够。[N43]
均匀量化通常把浮点映射到有限整数格点,需要尺度与可能的零点;按张量、按通道或按组共享尺度,存储与误差不同。离群值可能迫使范围变大,降低大多数值的有效分辨率。裁剪、分组和混合精度都有取舍,不存在对所有任务无损的默认配置。
校准集应覆盖真实激活分布。只用英文闲聊校准,再部署到长代码与结构化工具参数,可能产生不同退化。还应测试长上下文、罕见符号、精确数值和工具格式,不只测常规问答。
5. 蒸馏:不仅复制最终答案
蒸馏可以使用教师输出的软概率或生成样本,让学生学习其行为。软目标包含非首选类别关系,但教师也会犯错;用错误答案做训练会把错误规模化。对于工具Agent,轨迹中的动作、观察和恢复策略也可能是学习对象,但必须保证环境结果真实。
教师产生的解释不必等同于其内部真实计算过程。把表面推理文本当作唯一知识来源,可能学到风格而非能力。应让学生在独立任务和可核验环境中评价,并测成本—质量曲线。
6. 数据与版本管理
保存基础模型、Tokenizer、聊天模板、适配器、训练数据版本、超参数、评测集与部署配置。只保存adapter文件不一定足以恢复行为。模板改变可能让同一权重接收不同角色标记,量化版本改变也可能影响结果。
数据划分按真实关联边界进行,例如仓库、时间或用户,而不是把高度相似片段随机分开。人工与模型生成数据应区分来源;去重与污染检查要在评估前定义。迭代中看过的测试应降级为开发集,不能无限重复调到高分还声称泛化。
权重误差一样大,激活不同使输出误差不同
输入与条件。标量乘法y=xw。两通道量化权重误差都是Δw=0.01,但激活分别x1=100、x2=0.1。
| 步骤与对象 | 内部动作 | 中间结果 / 新状态 |
|---|---|---|
| 1输出误差1 | 100×0.01 | 1。 |
| 2输出误差2 | 0.1×0.01 | 0.001。 |
| 3比较 | 权重绝对误差相同 | 输出影响相差1000倍。 |
| 4校准意义 | 收集代表性激活分布 | 有助于判断哪些通道更需要保护。 |
| 5边界 | 只调一个权重不等于实现AWQ | 完整算法还需等价缩放、量化粒度与硬件表示。 |
把过程连起来。量化不能只看权重误差,还要看它经过实际激活后如何影响输出。
边界与反例。教学线性误差是局部原理,非AWQ完整算法或精度性能复现。
依据与适用范围:[AWQ]。示例输入和场景由本书明确设定。
7. 决策与验收
当基础模型加好检索已满足任务,微调未必值得。若微调能显著降低每次提示长度、提高稳定格式或专业任务成功率,需要用相同任务和总成本证明。回滚应能切回旧模型/适配器,并确认缓存与状态不会混用。
验收题:LoRA只有少量参数,是否不会遗忘基础能力?不能保证。少量参数也能显著改变输出分布。必须保留通用与专业双重回归,而不是根据可训练参数比例推断安全。