基础篇

F20|低秩、量化、专家:先看究竟少算了什么

基础篇约 3 千字1 组分步图解

从具体对象与小例子开始,理解计算过程与适用条件。

本章目录
动态图解 · F20

省参数、省位数、少激活不是同一种优化

LoRA、量化、MoE到底各自省了哪一部分?

可以把系统的账分成三本:有多少参数要存、其中多少参数要更新、这次推理实际用到多少计算。LoRA主要减少需要训练的增量参数;量化改变数值存储表示;MoE选择部分专家计算。把它们统称“模型缩小了”会遗漏真正代价。

低秩增量用两张较窄矩阵表示权重变化,不是把整套基础权重删掉。
量化以有限刻度近似原数,可能有舍入和裁剪误差。
专家网络结构中的子网络,不天然对应某个人类专业。

输入与适用条件:本图比较技术作用对象;具体数值对照分别在O02量化、O03 LoRA、O08 MoE中声明独立输入。

1 / 6 · 原有大权重

第1步,共6步

窄屏可左右滑动图形,或点击“放大图形”。文字解释紧随图后。

省参数、省位数、少激活不是同一种优化:原有大权重原有大权重要存储,也可能要训练LoRA冻结原权重,训练小的增量量化把同一对象存到较粗的数值刻度MoE多组专家,只激活部分计算不同的账总参数/训练参数/激活计算/位数实际验收质量、显存、吞吐分开测量教学流程;高亮表示当前步骤,不表示真实耗时比例。

先说你需要缩小的是哪本账,否则优化指标会错位。

本步状态由图形与说明共同给出。

默认静止。用“下一步”看完解释再继续;播放到最后一步自动停止。键盘聚焦播放器后,可用左右键逐步查看、空格播放/暂停。图中颜色辅助区分,含义同时用文字注明。

为什么需要

训练资源和推理资源有限,但不同瓶颈需要不同方案。

怎样实现

先区分存储、求导、激活计算,再进入对应技术。

可能的代价与误解

低秩容量有限、低精度有误差、专家路由有不均衡与通信。

如何判断是否做对

分别计量峰值显存、延迟、吞吐、质量和训练可恢复性。

“低秩”先用一张重复结构的表理解

看矩阵[[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为什么不是永恒比例表

规模研究尝试拟合参数量、数据量和计算预算与损失之间的关系。在给定架构、数据和训练条件下,可以帮助分配预算。

把一个经验拟合比例当成所有模型的固定法则,会忽视部署成本、重复数据、数据质量和新架构。高级章节保留推导;基础上先懂“总参数、激活参数、训练参数、存储精度”四个量不是一回事。

运行示例 · F20

三种“省参数/省存储”在同一张小表上有什么区别

输入与条件。低秩增量取列向量 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]。示例输入和场景由本书明确设定。

运行示例 · X10

量化不只是舍入,还可能把超范围的数截断

输入与条件。人为定义五级量化器:缩放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]。示例输入和场景由本书明确设定。

课后自检

自检 1

LoRA冻结基础W,是否意味着前向不再使用W?

查看参考答案收起参考答案
不是。前向通常仍用W及增量;冻结只是不更新W。
自检 2

8个专家每Token选2个,是否只需永久存2个专家?

查看参考答案收起参考答案
不能这样推出。不同Token可能选择不同专家,运行环境仍需能够访问所有被选到的参数。

机制依据:[LORA][QLORA][V3][CHINCHILLA]。本节数值与情景除另注外均为原创教学示例;来源不代替中文讲解。

记录保存在本机浏览器。

输入关键词即可检索。

↑ ↓ 选择 Enter 打开Esc 关闭 · 仅本地搜索

阅读设置

阅读设置仅保存在本机浏览器,不上传任何数据。