大语言模型(LLM)量化技术学习
一、思考与学习的背景
我的核心思考起点,来自于个人消费级硬件运行开源大模型的现实痛点:
当前主流开源大语言模型(LLM),比如Meta的Llama系列、阿里的Qwen系列、百度的ERNIE系列等,都会推出7B、16B(13B)、34B、70B等不同参数量的版本。但原生的7B/16B模型,在个人常用的8G显存消费级显卡上,完全无法正常运行——甚至连模型本身都无法完整加载进显存,更谈不上流畅的对话推理。
这就引出了一个核心问题:如何在不显著损失模型问答、推理能力的前提下,让大模型适配低显存的个人硬件?而模型量化,就是解决这个问题的核心方案。
而我一开始对模型量化的简单理解是将模型进行一定程度的压缩能够在一些低显存的显卡设备上本地运行同时又能够不太降低模型的能力,在以下是我这理解基础上对模型量化进行梳理并与当前理解进行比对和更细致的优化。
二、核心基础概念:先搞懂“是什么”
2.1 前置基础概念(精准定义+通俗解释)
在理解量化之前,必须先厘清3个绕不开的基础概念,这也是我最初接触大模型时最容易混淆的点:
- 模型参数量(7B/16B的本质)
- 精准定义:B是Billion的缩写,1B=10亿,7B即模型拥有70亿个可学习的参数,16B即160亿个参数。这些参数是大模型在训练过程中学习到的“知识与规则”,是模型完成问答、推理、创作等所有任务的核心基础。
- 通俗解释:你可以把参数量理解成一本词典的词条总数,7B是一本70亿词条的中型词典,16B是160亿词条的大型词典,词条越多,理论上能掌握的知识、能处理的复杂任务就越多。
- 参数精度(FP32/FP16/INT8/INT4的本质)
- 精准定义:精度指的是每个参数的数值存储格式,决定了单个参数占用的显存空间,也决定了数值的精细程度。主流格式分为两类:
- 浮点型(FP):全精度FP32(单精度,1个参数占4字节)、半精度FP16(1个参数占2字节),是模型训练时的默认格式,数值精度极高;
- 整型(INT):8位整型INT8(1个参数占1字节)、4位整型INT4(1个参数占0.5字节),是量化后的主流格式,数值精度更低,但占用空间大幅缩小。
- 通俗解释:精度就像你记录一个知识点的方式。FP32是用一整页纸写清这个知识点的所有细节、案例、补充说明;FP16是用半页纸写核心内容;INT8是用一段话写核心要点;INT4是用一行关键词写核心结论——核心信息都在,但占用的空间天差地别。
- 精准定义:精度指的是每个参数的数值存储格式,决定了单个参数占用的显存空间,也决定了数值的精细程度。主流格式分为两类:
- 显存占用的核心计算公式 模型加载进显存的基础占用,核心由「参数量 × 单个参数的字节数」决定,这也是为什么原生模型跑不动的核心原因:
- 7B模型原生FP16格式:70亿 × 2字节 = 14GB 基础显存占用
- 16B模型原生FP16格式:160亿 × 2字节 = 32GB 基础显存占用 而8G显存的显卡,连模型的基础权重都装不下,更不用说还要预留显存给推理过程中的激活值、KV缓存等额外开销,完全无法运行。
2.2 模型量化的正式定义
- 精准定义:大语言模型量化,是一种模型压缩技术,核心是通过降低模型权重(及部分激活值)的数值存储精度,将高比特位的浮点型参数映射到低比特位的整型参数,在极小幅度精度损失的前提下,大幅降低模型的显存占用、提升推理速度,让大模型能够在低算力硬件上落地运行。
- 通俗解释:量化就像我们日常用的视频压缩技术。原生FP16模型相当于4K蓝光原片,文件极大,普通电脑播放卡顿;量化后的INT4模型相当于压缩后的1080P高清视频,文件大小缩小了4倍,普通人肉眼完全看不出画质差距,普通设备也能流畅播放。你最初的核心理解完全正确——量化就是给大模型做“无损瘦身”,让低配硬件也能跑起来。
三、量化技术的核心原理:为什么“压缩了还不怎么掉精度”
这是我学习过程中最核心的疑问:既然把参数的精度降低了,为什么模型的回答能力、推理能力不会大幅下降?核心底层逻辑有3点,也是量化技术成立的根本前提:
3.1 核心前提:LLM的参数分布具有极强的聚集性
大模型训练完成后,其权重参数的数值并不是均匀分布在正负无穷的区间里,而是绝大多数参数都集中在一个非常窄的数值区间内(比如-3到+3之间),只有极少数极端值分布在区间两端。
这个特性决定了:我们完全可以用低比特位的整型,来映射这个窄区间内的绝大多数参数,只需要对极少数极端值做特殊处理,就能完整保留模型的核心能力,不会出现大幅的精度损失。
3.2 核心逻辑:训练与推理的精度需求天差地别
原生模型使用FP32/FP16高精度格式,核心是为了模型训练:训练过程中需要通过反向传播计算梯度,极小的数值误差都会被放大,最终导致模型学不到正确的知识,因此必须用高精度。
但我们个人用户跑模型,只需要做推理(也就是给输入、让模型输出回答),这个过程对数值精度的容忍度极高。哪怕参数的数值有极其细微的偏差,也完全不会影响最终的输出结果——就像你记住一个知识点的核心结论,哪怕记不清小数点后4位的细节,也完全不影响你使用这个知识点解决问题。
3.3 核心优化:现代量化方案的“无损保障技术”
我们日常使用的开源量化模型,都不是简单粗暴的精度截断,而是用了成熟的优化方案,把精度损失降到了几乎可以忽略的程度,主流的核心优化包括:
- 分组量化:把模型的权重分成多个小组,每个小组单独计算映射规则,而不是整个模型用一套规则。比如常用的group_size=128,分组越小,精度保留越好,仅会带来极少量的显存占用上升,完美平衡了精度与空间。
- 权重量化优先:个人用户常用的量化方案,几乎都只对模型的权重做量化,不对推理过程中的激活值做量化(或仅做轻量量化)。权重是固定的,量化难度低、精度损失小,同时权重占用了模型90%以上的显存空间,仅权重量化就能实现绝大部分的显存节省。
- 校准数据集优化:主流的量化方案(如GPTQ、AWQ)都会用小规模的校准数据集,在量化过程中反复验证模型的输出效果,调整量化映射规则,确保量化后的模型输出和原生模型的偏差最小。
四、量化方案的核心分类与落地效果
4.1 按量化时机分类(个人用户必懂)
| 分类 | 精准定义 | 通俗解释 | 适用场景 |
|---|---|---|---|
| 训练后量化(PTQ) | 模型训练完成后,对固定的权重参数做量化,不改变模型结构,不重新训练 | 给已经写完的书做精简压缩,不改书的核心内容,只优化排版和表述 | 个人用户本地跑模型的绝对主流方案,操作简单、效果好,无需高端算力 |
| 量化感知训练(QAT) | 在模型训练的过程中就加入量化的误差,让模型提前适应低精度的参数,边训练边量化 | 写书的时候就按照精简版的要求来写,从根源上适配低精度格式 | 企业级端侧部署场景,需要极高的精度保留,个人用户几乎用不到,需要极高的算力成本 |
4.2 按量化位宽分类(个人用户选型核心参考)
位宽越低,显存占用越小,但对应的精度损失风险越高,这里给出个人消费级硬件的选型参考,同时明确精度表现:
- INT8 8位量化
- 显存占用:相比原生FP16直接减半,7B模型INT8量化后基础占用约7GB
- 精度表现:学术指标上与原生FP16模型的差距小于1%,用户使用层面完全无损,哪怕是复杂的数学推理、代码编写、长上下文逻辑任务,都完全感知不到差距
- 适配硬件:10G及以上显存的显卡,8G显存可勉强运行7B INT8模型
- INT4 4位量化(消费级黄金位宽)
- 显存占用:相比原生FP16缩小4倍,7B模型INT4量化后基础占用仅3.5-5GB,16B模型INT4量化后基础占用约7-9GB
- 精度表现:日常使用场景完全感知无损,仅在极端复杂的多步逻辑推理、超长上下文(32K以上)、高精度数学计算任务中,会出现极细微的精度下降,完全不影响个人日常使用
- 适配硬件:6G显存可流畅跑7B INT4模型,8G显存可流畅跑7B模型、可跑16B模型(需限制上下文窗口),是个人用户的首选
- INT2/INT1 低比特量化
- 显存占用:相比FP16缩小8-16倍,显存占用极低
- 精度表现:有明显的可感知精度损失,会出现回答逻辑混乱、事实错误、代码无法运行等问题,仅适合极限硬件场景的尝鲜,不适合日常使用
4.3 个人用户主流量化格式/方案对比
| 方案 | 核心特点 | 适配场景 |
|---|---|---|
| GPTQ | 目前NVIDIA显卡最主流的方案,推理速度快、精度损失极小,开源模型支持度最高 | Windows/Linux系统,NVIDIA消费级显卡,追求速度与精度的平衡 |
| AWQ | 新一代量化方案,优化了量化粒度,精度比GPTQ更优,推理速度持平,正在快速成为主流 | 同上,对精度有更高要求的用户 |
| GGUF | llama.cpp主推的格式,跨平台兼容性极强,CPU可运行,支持GPU加速,显存占用控制极致 | 低配电脑、Mac设备、无独立显卡的设备,主打轻量化运行 |
| bitsandbytes | Hugging Face原生支持,一行代码即可开启量化,无需提前下载量化模型 | 新手入门、快速测试模型,无需复杂配置 |
五、补充进阶知识点:个人跑模型必须了解的细节
5.1 量化不是“显存占用越低越好”
很多新手会陷入“位宽越低越好”的误区,实际上:
- 4位量化是精度、显存、速度的黄金平衡点,低于4位后,精度损失的幅度会远超显存节省的收益;
- 同一位宽下,分组越小(比如group_size=128比group_size=1024),精度越高,显存占用仅会上升不到5%,优先选小分组的量化模型。
5.2 模型加载的额外显存开销
很多人会疑惑:为什么7B INT4模型理论占用4GB,8G显存还是会爆显存?因为除了模型权重,推理过程还有必须的额外开销:
- KV缓存:对话过程中,模型会把之前的输入输出的键值对缓存下来,上下文窗口开得越大、对话轮次越多,KV缓存占用的显存就越多(32K上下文的KV缓存,比4K上下文高8倍);
- 激活值:推理过程中模型计算产生的临时数据,会占用一定的显存;
- 系统与显卡驱动预留:显卡会预留一部分显存给系统和驱动,8G显存的显卡,实际可用的用户显存一般只有7.5G左右。
实操建议:8G显存跑7B INT4模型,上下文窗口建议开到4K-8K;跑16B INT4模型,上下文窗口建议限制在4K以内,同时开启内存共享(swap),避免爆显存。
5.3 量化反而会提升推理速度
这是一个反常识的知识点:在消费级显卡上,量化后的模型,推理速度往往比原生FP16模型更快。 核心原因:原生模型太大,显卡的显存带宽不够,需要频繁把显存里的数据和电脑内存做交换(swap),这个过程会严重拖慢速度;而量化后的模型可以完整装进显存,无需频繁交换数据,同时低比特位的计算对显卡的算力要求更低,最终推理速度反而更快。
5.4 模型越大,量化的鲁棒性越强
另一个核心规律:参数量越大的模型,对量化的容忍度越高,精度损失越小。 举个例子:70B模型做INT4量化后,无论是问答、推理还是代码能力,都远超原生FP16的7B模型,哪怕它做了4位量化,核心的知识储备和推理能力的底子,远大于小模型的精度优势。这也是为什么很多16B INT4量化模型,日常使用效果比7B原生模型更好的原因。
六、总结
- 我的核心初始理解完全正确:量化的本质,就是给大模型做“轻量化瘦身”,在几乎不影响用户日常使用能力的前提下,大幅降低模型的显存需求,让个人消费级硬件也能流畅运行开源大模型;
- 修正了初始认知的细微偏差:量化不是“完全不降低精度”,而是通过成熟的技术方案,把精度损失控制在了用户完全感知不到的范围内,在学术指标上仅有可忽略的极小幅度下降,并非绝对的无损压缩;
- 形成了可落地的实操认知:对于8G显存的个人显卡,7B INT4量化模型是最优选择,可流畅无压力运行;16B INT4量化模型可尝鲜运行,需控制上下文窗口;低于4位的量化方案不适合日常使用。
量化技术的核心价值,就是打破了大语言模型的硬件门槛,让原本只能在企业级高端算力上运行的大模型,走进了普通用户的个人电脑,真正实现了大模型的普惠化落地。