技术小白也能看懂:大模型里的量化、蒸馏到底是什么意思?
最近接触大模型,经常能听到一些词:
- 模型量化
- 模型蒸馏
- 模型剪枝
- FP16、FP8、INT8、INT4
- 大模型、小模型
- 参数量
刚接触的时候,很容易感觉这些词特别“高深”。
其实不用一开始就研究数学公式。
如果只是想知道它们到底是干什么的,可以先记住一句话:
这些技术很多时候都在做同一件事:想办法让模型更小、更快、更省资源,同时尽量不要让模型变笨。
下面分别说一下。
一、先理解什么叫“大模型”
我们平时说的 7B、14B、32B、70B,其实这里的 B 指的是 Billion,也就是“十亿”。
例如:
7B ≈ 70亿参数
32B ≈ 320亿参数
70B ≈ 700亿参数
可以暂时把“参数”理解成模型大脑里面保存的海量“数字”。
通常情况下:
参数越多
↓
模型文件越大
↓
需要的内存/显存越多
↓
运行成本也可能越高
所以一个很现实的问题就出现了:
模型虽然很好,但是我的服务器跑不动怎么办?
于是就出现了很多模型优化技术。
其中最常见的就是量化。
二、什么是模型量化?
量化其实没有想象中那么复杂。
举个非常简单的例子。
假设一个模型里面原来保存了很多非常精确的数字:
3.1415926
8.9735214
1.2384921
这些数字保存得越精确,需要占用的空间通常也越大。
现在我们发现:
也许没有必要精确到这么多位。
于是可以变成:
3.14
8.97
1.24
甚至用更加紧凑的方式去表示。
这就是理解“量化”最简单的方法。
量化,就是降低模型里面数字的表示精度,从而降低模型占用的存储空间和显存。
三、FP16、FP8、INT8、INT4是什么意思?
这也是我刚开始最容易迷糊的地方。
其实先不用研究 IEEE 浮点数标准。
你只需要理解:
它们代表模型里面的数字使用什么精度保存和计算。
可以简单理解为:
FP32
↓
FP16
↓
FP8
↓
INT8
↓
INT4
整体趋势可以粗略理解成:
精度降低
↓
模型变小
↓
显存占用降低
↓
运行可能更快
但与此同时,也可能出现:
量化过度
↓
部分信息损失
↓
模型能力下降
所以模型量化实际上是在寻找一个平衡:
尽量少占显存,但又不要让模型能力下降太多。
四、举个实际例子
假设有一个模型,原始版本需要:
40GB 显存
但是我的显卡只有:
24GB 显存
那可能根本跑不起来。
经过量化以后,这个模型可能只需要:
20GB 左右
这样原来跑不起来的模型,就有可能跑起来了。
所以在实际部署大模型的时候,经常会看到:
FP16
FP8
INT8
INT4
GPTQ
AWQ
NVFP4
这些名字背后虽然技术实现不同,但其中很多都和一件事情有关:
怎么让大模型更省资源。
五、什么是模型蒸馏?
蒸馏和量化不是一回事。
这个词第一次看到的时候确实很容易误解。
所谓“模型蒸馏”,可以理解成:
让一个能力很强的大模型去教一个比较小的模型。
可以把它想象成:
优秀老师
↓
把知识、经验、解题方式教给学生
↓
学生学习
↓
得到一个更小的模型
这里通常会有两个角色:
Teacher Model
教师模型
Student Model
学生模型
例如:
一个 70B 大模型
↓
教一个
↓
一个 7B 小模型
目标就是:
希望这个 7B 模型虽然体积小很多,但是能够学到 70B 模型的一部分能力。
六、为什么需要蒸馏?
因为真正部署系统的时候,并不是模型越大越好。
比如一个公司有一个 70B 模型。
效果很好,但是:
需要很多 GPU
成本很高
速度比较慢
并发压力大
但是某个业务可能只是做:
文本分类
客服问答
信息抽取
固定领域问答
完全没必要每次都调用一个超级大的模型。
于是可以让大模型教一个小模型。
最终变成:
大模型
能力:★★★★★
成本:★★★★★
↓ 蒸馏
小模型
能力:★★★★
成本:★
虽然能力可能有所损失,但成本下降非常明显。
这就是蒸馏很大的价值。
七、量化和蒸馏到底有什么区别?
这是最值得记住的地方。
量化
更像是:
把同一个人“压缩一下”。
例如原来模型是:
Qwen-32B FP16
量化以后可能还是:
Qwen-32B INT4
它本质上还是这个 32B 模型,只不过保存参数的精度降低了。
可以理解成:
同一个大脑
只是换了一种更加节省空间的存储方式
蒸馏
蒸馏则更像:
让一个厉害的人培养一个“小徒弟”。
例如:
70B 模型
↓ 教
7B 模型
最后得到的是另一个更小的模型。
所以:
量化:
大模型
↓
压缩
↓
还是这个模型
蒸馏:
大模型
↓
教
↓
得到一个小模型
这个区别记住,基本就够用了。
八、什么又叫模型剪枝?
除了量化和蒸馏,还有一个经常出现的词:
模型剪枝(Pruning)。
这个也很好理解。
假设一个模型里面有很多参数。
研究人员发现:
其中有些参数对最终结果影响非常小。
那是不是可以把这些“不太重要的东西”删除掉?
这就是剪枝。
类似修剪一棵树:
原来的树
🌳
/|\
/ | \
/ | \
剪掉一些不重要的枝叶
🌳
|
/ \
目标还是:
模型更小
运行更快
资源占用更低
同时尽量保持模型原来的能力。
九、这几个技术放在一起就很好理解了
可以简单总结成:
| 技术 | 通俗理解 | 主要目的 |
|---|---|---|
| 量化 | 降低数字精度 | 少占显存、加快运行 |
| 蒸馏 | 大模型教小模型 | 用更小模型获得较强能力 |
| 剪枝 | 删除不重要的部分 | 减少模型计算量 |
| 微调 | 给模型进行专项培训 | 让模型更懂某个领域 |
如果用“一个学生”来比喻:
量化
这个学生还是这个学生,只是:
把他的笔记压缩得更紧凑了。
蒸馏
找一个非常厉害的老师:
把老师的知识教给一个年轻学生。
剪枝
把大量不重要的知识删除:
只保留真正重要的东西。
微调
让学生去参加:
财务培训、法律培训、医疗培训。
于是他在某个专业领域变得更强。
十、为什么现在越来越重视“小模型”?
以前大家很容易形成一种思维:
参数越大,模型越好。
但是到了真正企业部署阶段,会发现事情没那么简单。
企业还需要考虑:
GPU 成本
显存大小
响应速度
并发能力
服务器数量
功耗
私有化部署成本
所以现在模型发展的一个重要方向就是:
不仅要聪明,还要跑得起。
也就是:
更小
更快
更便宜
同时尽量保持能力
量化、蒸馏、剪枝,本质上都和这个目标有关。
十一、作为技术小白,我应该记住什么?
其实完全不需要一上来研究各种公式。
先把下面几句话记住就够了。
1. 参数
可以粗略理解成:
模型大脑里面保存的大量数字。
2. 量化
记住:
降低模型数字的精度,让模型更省显存。
例如:
FP16 → FP8 → INT8 → INT4
3. 蒸馏
记住:
让一个大模型教一个小模型。
4. 剪枝
记住:
把模型里面不太重要的部分删除掉。
5. 微调
记住:
在已有模型基础上继续培训,让它更擅长某个领域或任务。
十二、最后用一张图总结
一个原始大模型
│
┌──────────────┼──────────────┐
│ │ │
量化 蒸馏 剪枝
│ │ │
降低数字精度 大模型教小模型 删除不重要部分
│ │ │
↓ ↓ ↓
少占显存 得到小模型 减少计算量
另外还有:
原始模型
│
↓
微调
│
↓
学习某个专业领域
│
↓
财务 / 法律 / 医疗 / 客服等专业模型
写在最后
刚接触大模型的时候,经常会被各种名词吓到。
但慢慢会发现,很多技术名词背后的出发点其实非常简单。
比如:
量化解决的是“模型太大,显存不够”。
蒸馏解决的是“模型太强也太贵,能不能培养一个便宜的小模型”。
剪枝解决的是“模型里面有些东西没那么重要,能不能删掉”。
微调解决的是“通用模型不错,但我想让它更懂我的业务”。
先建立这种直觉,再去学习 FP8、INT4、AWQ、GPTQ、NVFP4 等具体技术,就会容易很多。
对于技术小白来说,没有必要一开始就研究底层公式。
先知道它是什么、为什么需要它、解决什么问题,再慢慢研究它是怎么实现的。
这可能是理解大模型最轻松的一条路。
浙公网安备 33010602011771号