F20|低秩、量化、专家:先看究竟少算了什么
从具体对象与小例子开始,理解计算过程与适用条件。
本章目录
省参数、省位数、少激活不是同一种优化
LoRA、量化、MoE到底各自省了哪一部分?
可以把系统的账分成三本:有多少参数要存、其中多少参数要更新、这次推理实际用到多少计算。LoRA主要减少需要训练的增量参数;量化改变数值存储表示;MoE选择部分专家计算。把它们统称“模型缩小了”会遗漏真正代价。
输入与适用条件:本图比较技术作用对象;具体数值对照分别在O02量化、O03 LoRA、O08 MoE中声明独立输入。
1 / 6 · 原有大权重
窄屏可左右滑动图形,或点击“放大图形”。文字解释紧随图后。
先说你需要缩小的是哪本账,否则优化指标会错位。
本步状态由图形与说明共同给出。默认静止。用“下一步”看完解释再继续;播放到最后一步自动停止。键盘聚焦播放器后,可用左右键逐步查看、空格播放/暂停。图中颜色辅助区分,含义同时用文字注明。
为什么需要
训练资源和推理资源有限,但不同瓶颈需要不同方案。
怎样实现
先区分存储、求导、激活计算,再进入对应技术。
可能的代价与误解
低秩容量有限、低精度有误差、专家路由有不均衡与通信。
如何判断是否做对
分别计量峰值显存、延迟、吞吐、质量和训练可恢复性。
“低秩”先用一张重复结构的表理解
看矩阵[[1,2,3],[2,4,6]]。第二行就是第一行乘2,所以两行不是两个独立方向。可以把它拆成:
A = [[1],[2]] B = [[1,2,3]]
AB = [[1,2,3],[2,4,6]]
秩rank粗略描述矩阵含多少个线性独立方向。上例秩为1。一般不是每张大表都能用很小秩精确表示;低秩近似会限制表示能力。
LoRA改的不是整个基础模型
设已有权重W形状[d_in,d_out]。LoRA冻结W,用较小的A=[d_in,r]、B=[r,d_out]表示一个增量ΔW=AB,再用W+缩放×ΔW计算。
这里r远小于原尺寸时,需要训练的参数由d_in×d_out变为d_in×r+r×d_out。例如8×8矩阵64个数,r=2时增量32个数。不同文献采用列向量约定时可能写成BA,理解形状比只背字母顺序重要。
这不表示“模型知道的事实都被放在LoRA里”,也不表示训练整个过程只剩这点内存。基础权重、激活和其他状态仍存在。
量化是在有限刻度上表示数字
量化quantization是用更少的数值表示位置近似原始值。一个教学规则是先除以尺度s、四舍五入到整数q,再用s×q近似还原。
例如s=0.1,x=0.26,q=round(2.6)=3,还原0.3,误差0.04。实际量化还有范围裁剪、偏移、分组尺度和不同格式,不能拿这个最小例子代替全部实现。
权重量化缩小的是权重表示;KV量化缩小的是缓存表示;激活量化又是另一对象。写“4bit模型”不能自动推断所有运行内存都是4bit。
QLoRA组合了量化基础权重与参数高效微调等技术。它不等于把所有参与求导的数都用极低精度存储。
MoE为什么很多参数但只调用部分
MoE(混合专家)在一些层准备多组可选择的子网络,路由器根据当前Token表示选择部分专家计算,再合并结果。例如有8个专家,每个Token只选择2个。
减少的是本次每个Token激活的专家计算,不是系统里完全不需要其他专家的参数。不同Token可以选不同专家,因此服务仍要能获得所需权重;还要处理负载不均和跨设备通信。
“专家”是结构名称,不天然意味着某组就是数学专家、某组就是情感专家。神经网络内部的MoE路由,与Agent根据任务选择另一个模型,是不同层面的路由。
蒸馏与微调究竟在干什么
蒸馏distillation让学生模型学习教师的输出或分布等信号;教师可以提供训练目标,但学生仍需要训练和独立评估。教师的一次回答错误也可能被学进去。
微调fine-tuning泛指在已有模型基础上继续训练部分或全部参数。它适合改变稳定的任务行为分布,不通常是同步实时业务事实的第一选择;实时事实更适合版本化检索。
Scaling Laws为什么不是永恒比例表
规模研究尝试拟合参数量、数据量和计算预算与损失之间的关系。在给定架构、数据和训练条件下,可以帮助分配预算。
把一个经验拟合比例当成所有模型的固定法则,会忽视部署成本、重复数据、数据质量和新架构。高级章节保留推导;基础上先懂“总参数、激活参数、训练参数、存储精度”四个量不是一回事。
三种“省参数/省存储”在同一张小表上有什么区别
输入与条件。低秩增量取列向量 A=[[1],[2]] 和行向量 B=[[3,4]];量化取x=0.26、刻度s=0.1;专家路由有三个候选。
| 步骤与对象 | 内部动作 | 中间结果 / 新状态 |
|---|---|---|
| 1低秩相乘 | 计算AB | 得到 [[3,4],[6,8]];第二行是第一行2倍,因此秩1。 |
| 2加入基础权重 | 设W为2×2单位矩阵 | W+AB=[[4,4],[6,9]];实际LoRA还有缩放约定。 |
| 3量化 | round(0.26/0.1) | 整数3,反量化0.3,误差0.04;不是无损改文件格式。 |
| 4选择专家 | 给定门控权重 [0.6,0.3,0.1],只取前2 | 选专家0和1;若本实现重归一化,权重为2/3和1/3。 |
| 5混合输出 | 两专家分别输出 [2,0]、[0,3] | 结果 [4/3,1];第3专家本次未计算,但参数仍存在。 |
把过程连起来。低秩改变可训练增量,量化改变数值表示,MoE改变本次激活哪些子网络。名称相近不代表省的是同一本账。
边界与反例。2×2秩1分解有4个参数,与原矩阵一样多,仅演示结构。真正参数节省需维度较大且r足够小;专家归一化是此例明确选定的策略。
依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。
量化不只是舍入,还可能把超范围的数截断
输入与条件。人为定义五级量化器:缩放s=0.1,可存整数只有−2、−1、0、1、2。输入为[-0.24,0.03,0.26]。
| 步骤与对象 | 内部动作 | 中间结果 / 新状态 |
|---|---|---|
| 1除缩放 | x/s=[−2.4,0.3,2.6] | 这还不是最终可存整数。 |
| 2四舍五入 | 本例均非恰好半整数,得到[−2,0,3] | 不依赖半整数的不同舍入约定。 |
| 3截断范围 | 最大只能存2 | 编码成为[−2,0,2],第三项发生裁剪。 |
| 4反量化 | 编码再乘0.1 | 还原[−0.2,0,0.2],误差[0.04,−0.03,−0.06]。 |
| 5检查原因 | 第三项原本舍入到0.3,但范围不允许 | 裁剪误差和一般舍入误差不能混为一谈。 |
把过程连起来。缩放、零点、整数范围、舍入方式和裁剪规则共同定义量化器,少说任何一个都可能无法复现。
边界与反例。这是五级教学量化,不是int8真实取值范围;也没有声称这些误差对应某个实际模型的精度损失。
依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。
课后自检
LoRA冻结基础W,是否意味着前向不再使用W?
查看参考答案收起参考答案
8个专家每Token选2个,是否只需永久存2个专家?
查看参考答案收起参考答案
机制依据:[LORA][QLORA][V3][CHINCHILLA]。本节数值与情景除另注外均为原创教学示例;来源不代替中文讲解。