大模型量化(Quantization)

上一节我们讲了蒸馏,也就是重新教出一个小模型。但有时候,我们手里已经有一个现成的好模型,只是它太 “重”了,跑不动。那么有没有办法,不用重新训练,就让它当场瘦下来,从而跑得起来呢?

这就需要用到 “大模型量化”了,这也是我们能在自己电脑上玩转大模型的关键一招。

大模型为什么这么吃内存?

要搞懂量化是什么,咱们得先弄明白大模型为什么这么吃内存。

我们之前说过,大模型是由海量的 “参数”(说白了就是一大堆数字)组成的。默认情况下,每一个数字都存得非常精确——比如用 16 位,去记录一个像 “0.7853962……” 这样长长的小数。数字记得越精确,占的地方自然就越大。

我们来算一笔账,大家就懂了:一个 70 亿(7B)参数的模型,如果每个参数都用 16 位(也就是 2 个字节)来存,光是把它装进显存,就要约 14GB。这个数字,已经超过了绝大多数家用显卡的容量。更别提那些几百亿、上千亿的大模型了。

大模型为什么吃内存?7B大模型,每个参数使用 16位存储占用 14GB 显存

量化:把 “高清照片” 压缩一下

所谓的量化,说白了就俩字:压缩。它不改变模型的结构,只是把那些存得过于精确的参数数字,四舍五入成更短、更省地方的版本。

打个比方。这就像你手机里的一张高清照片:原图几十 M,细节拉满。但是你把它压缩一下、稍微降点分辨率,也许就只剩几 M 了,肉眼看上去几乎没区别,发朋友圈、传文件却快多了。

量化干的就是这件事:把每个参数,从 “16 位的高清版” 压缩成 “8 位、甚至 4 位的精简版”。位数压得越低,模型就越小、越快。

对于 7B 的模型,如果我们改用 4 位来存,它的体积能从 14GB 一下压到 4GB 左右。这下子,一张普通的家用显卡、甚至一台配置好点的笔记本,就能轻松把它跑起来了!

大模型量化原理通俗比喻:如同高清照片压缩,将 16位参数压缩至 8位或 4位

天下没有免费的午餐:精度与性能的取舍

当然,压缩总归是有代价的。数字 “四舍五入” 得越狠,模型丢掉的细节就越多,回答的精准度也会跟着降一点点。所以这里有一个关于 “甜蜜点” 的权衡:

  • 压得太少(还是 16 位):质量最好,但又大又慢,白白浪费资源。
  • 压得适中(4 位、8 位):体积大幅缩小、速度明显变快,质量却只损失一点点——这是目前公认性价比最高的 “黄金区间”。
  • 压得太狠(2 位甚至更低):虽然小得可怜,但模型可能开始胡言乱语,质量明显崩坏,往往得不偿失。

所以在实践中,4 位量化是最受欢迎的选择,因为它在 “够小” 和 “够好” 之间,找到了一个绝佳的平衡。

大模型量化精度与性能的取舍:16位、4位/8位(Q4/Q8/INT4)黄金区间与 2位压缩程度对比

以后小伙伴们去下载开源模型时(比如在 Ollama、Hugging Face 上),经常会看到文件名里带着 Q4、Q8、INT4 这样的标记——它说的就是量化的位数。

蒸馏 vs 量化:两种不同的 “瘦身术”

上一节的蒸馏,和这一节的量化,都是给大模型 “瘦身”,但路子完全不同,大家千万别搞混了:

  • 蒸馏:是 “重新培养一个小个子徒弟”——块头是真的变小了,但需要重新训练,工程量大。
  • 量化:是 “给同一个人减肥”——人还是那个人(模型结构没变),只是把每一块 “肉”(参数)压得更紧实,几乎不用重新训练,立等可取。

两种大模型瘦身术对比:大模型蒸馏(重新练一个小模型)与大模型量化(同一模型压缩)的区别

在实际项目中,这两招还常常一起用:先把大模型蒸馏成一个小模型,再把这个小模型量化一下。双管齐下,让它变得又小又快,恰到好处。

到这里,咱们这一章 “大模型原理” 就全部讲完了。从 Transformer参数量MoE,到预训练微调,再到蒸馏与量化,我们已经把大模型 “怎么造出来、又怎么变小” 的来龙去脉,摸了个透。

而蒸馏和量化这两门 “瘦身术” 最大的意义,就是让我们普通人,也能把强大的大模型,请进自己的电脑里“私人专享”。至于具体怎么把模型部署到本地、亲手把它跑起来——那就是我们另一门教程《本地部署大模型》的内容了。

上一篇:

下一篇:

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号