AI 基础入门 · 第7课
量化:把大模型"压缩"到你电脑上跑得动
一个 7B 模型不量化要 14GB 显存,普通笔记本根本跑不动;量化到 4-bit 只要 4GB 左右,MacBook 都能聊。这一课把"精度档位"——FP32、FP16、BF16、INT8、INT4——和主流量化方法(GPTQ / AWQ / GGUF)讲清楚,让你知道为什么量化几乎不损失聊天体验,以及什么时候不能省这一点显存。
① 小白第一课怎么学(4 步走,约 55 分钟)
这一课是"本地跑大模型"的必备前置知识,讲完你就能用 Ollama 在自己电脑上玩 7B 模型。
1建立压缩直觉(12 分钟)
读②③:把"用 32 位记一个数"压成"用 4 位记"。
2记住精度档位(13 分钟)
读④:FP32/FP16/BF16/INT8/INT4 一张表。
3认识量化方法(15 分钟)
读⑤:GPTQ、AWQ、GGUF 谁适合谁。
4刷题自测(15 分钟)
做⑦⑩,错题回⑥看易错点。
本课小目标学完你要能:① 说清"位宽"是什么、为什么能省显存;② 看到 Q4_K_M、Q8_0 这种文件名知道大概占多大;③ 区分 GPTQ / AWQ / GGUF 三个阵营;④ 知道什么时候该上高比特、什么时候低比特够用。
② 一图看懂:精度档位与显存对照
读法:横轴是"每个权重用几个 bit 存"。位数越多越准,但越占显存;位数越少越省,但误差越大。训练要精度用高比特,推理图省事用低比特——这就是量化存在的意义。
③ 本质直觉:把"精密尺子"换成"粗略格子"
先想一个问题。权重数字长什么样?比如某个权重是 0.123456789。你真的需要小数点后 9 位吗?实际跑起来发现:0.12 和 0.13 的效果几乎没差。
这就是量化的核心思想:不必用 32 个二进制位去记那个"完美的小数字",只要在它附近选一个"够接近"的格子存起来就行。位数越少,格子越粗,但文件越小、算得越快。
打个比方:用一把毫米刻度的尺子量桌长,是 802mm;你用厘米刻度量,是 80cm。差别只有 2mm,但你记下来的数字从 3 位变成 2 位。量化就是这个过程——把浮点"四舍五入"到附近的离散档位。
为什么大模型扛得住这种粗糙?因为它有几百亿个参数,单个参数误差一点,被平均之后整体输出几乎不变。这就像你把一本词典里每个词都写错一个笔画,整段话读下来还是通顺的。
一句话记住量化不是"删参数",参数个数没变;它是把每个参数存得更粗糙。几百亿个数字每个省 1.5 字节,加起来就是省出一整张显卡。
④ 完整体系:精度家族一张表
| 精度 | 位数 | 每参数字节 | 7B 模型权重 | 用在哪 |
| FP32 | 32 位浮点 | 4 字节 | ≈28GB | 几乎不用,训练时偶尔用 |
| FP16 | 16 位浮点 | 2 字节 | ≈14GB | 推理常用、有 A100 以上显卡时首选 |
| BF16 | 16 位浮点(谷歌版) | 2 字节 | ≈14GB | 训练更稳,动态范围大 |
| INT8 | 8 位整数 | 1 字节 | ≈7GB | 推理,几乎无损 |
| INT4 | 4 位整数 | 0.5 字节 | ≈4GB | 本地笔记本、Mac、手机 |
显存速算
显存(GB) ≈ 参数量(B) × 每参数字节 × 10亿 ÷ 1024
例:7B × 0.5 字节(INT4) ≈ 3.5 GB(加 KV Cache 后约 4-5GB)
GPTQ / AWQ / GGUF 三个阵营
| 方法 | 谁在用 | 特点 |
| GPTQ | GPU 推理、vLLM 早期支持 | 训练后量化(PTQ),一次性把权重压到 INT4/INT8,速度快 |
| AWQ | GPU 推理,主流推荐 | 激活感知:保护"重要权重"不量化,质量比 GPTQ 更好 |
| GGUF | llama.cpp / Ollama / Mac / CPU | 单文件、CPU 友好,文件名里 Q4_K_M、Q8_0 就是量化档位 |
看文件名选档位GGUF 里 Q4_K_M = 4-bit 中等质量(最常用),Q5_K_M = 5-bit 更准一点,Q8_0 = 8-bit 几乎无损。数字越低越省显存。
⑤ 应用场景:本地跑大模型的完整路径
普通笔记本也想玩大模型?
不用买显卡。装一个 Ollama,一条命令就行。
ollama run qwen2.5 ——Ollama 会自动下一个 GGUF 量化版(默认 Q4_K_M),Mac M 系列芯片统一调用内存跑。7B 模型占 4-5GB 内存,日常对话完全够。
量化后质量掉多少?
日常聊天几乎感觉不到;数学/推理任务会掉一点。
INT8 通常被认为几乎无损;INT4 在普通对话、写代码、总结这类任务上和 FP16 差距很小。但让它做复杂数学证明、长链推理,低比特会更容易出错。所以严肃推理任务尽量用高比特。
量化不是免费午餐
压得越低,模型越容易犯奇怪的错。
INT3、INT2 这种极限压缩省是省,但输出可能开始胡说、复读、格式崩坏。日常用 Q4 是甜点,Q8 是稳妥,别再往低压了。
本地跑大模型三步走① 选一个 7B 级别的开源模型(Qwen / Llama 都行);② 装 Ollama,一条命令拉 GGUF 量化版;③ 日常对话用 Q4,要写严谨代码/做数学题再上 Q8。
⑥ 高频错误诊断(5 条)
错误 1:以为量化是"把模型变小、删掉一部分参数"不是。参数量一个不少,只是每个数字用更少的 bit 存。
错误 2:觉得量化一定掉很多智商INT8 几乎无损;INT4 在普通对话里人耳听不出差别。真正掉分的是数学/长推理这类任务。
错误 3:训练也用 INT4千万别。训练要反向传播,梯度需要高精度,必须用 FP32/BF16。量化只在推理时用。
错误 4:把 FP16 和 BF16 当成一回事都是 16 位,但 BF16 指数位更宽、动态范围更大,训练时不容易梯度下溢。推理上差别不大。
错误 5:一味追求最低比特压到 INT3/2 省了显存,但模型开始胡言乱语、复读、漏格式。Q4/Q8 是甜点,再低就是负优化。
⑦ 考点真题演练(4 题)
考点分布
| 考法 | 出题形式 | 应对 |
| 位宽与显存 | 问 7B INT4 占多少 | ≈4GB |
| 训练 vs 推理精度 | 问训练能用 INT4 吗 | 不能,训练用高比特 |
| 量化方法 | 问 GGUF 谁用 | llama.cpp/Ollama/CPU |
| 质量损失 | 问哪类任务最敏感 | 数学/长链推理 |
真题基础1. 量化(Quantization)本质上在做什么?
真题基础2. 一个 7B 模型量化到 INT4,权重大约占多少显存?
真题中档3. 下面哪个精度主要是给"训练"用,而不是给"推理量化"用?
真题拔高4. 关于量化后的质量损失,下面说法最准确的是?
⑧ 必背知识点卡
量化本质:参数个数不变,每个数字用更少 bit 存 不是删参数
FP32:32 位浮点,4 字节,训练用 推理几乎不用
FP16/BF16:16 位,2 字节,7B≈14GB BF16 训练稳
INT8:8 位,1 字节,7B≈7GB,几乎无损 稳妥选择
INT4:4 位,0.5 字节,7B≈4GB,笔记本首选 Q4_K_M
三方法:GPTQ 老牌 / AWQ 质量好 / GGUF CPU 本地 GPU 选 AWQ
代价:越低比特越容易出错,数学/推理用高比特 别压过 Q4
⑨ 应用输出:给想在自己 Mac 上玩大模型的朋友指条路
实战场景:朋友说"我也想在自己电脑上跑 ChatGPT 那种东西,买不起显卡怎么办"
① 先破迷思:你不需要 24GB 显卡。把模型量化到 4-bit,7B 模型只要 4-5GB 内存,MacBook M 系列统一内存就能跑。
② 给方案:装个 Ollama,终端敲 ollama run qwen2.5,它自动下 GGUF 量化版,等几分钟就能聊。
③ 讲清取舍:量化到 4-bit 日常对话、写邮件、总结文章完全够用;真要让它做奥数题、写严谨代码,就上 Q8 或者干脆用云端 API。
④ 避坑:别追极限压缩(Q2/Q3),省那点内存换来一堆胡话不划算;也别在训练时用量化,量化只在推理用。
口述全链路"量化就是把每个权重数字用更少 bit 存,参数个数不变。FP32 训练用,FP16 推理常用,INT8 几乎无损,INT4 让 7B 模型缩到 4GB 能塞进笔记本。GPU 上推荐 AWQ,本地 Mac/CPU 用 GGUF(Ollama 默认)。日常对话 Q4 够,严肃推理上 Q8。"
⑩ 分层练习 16 题(基础 6 + 中档 5 + 拔高 5)
▍基础 6 题
基础1量化是"删参数"吗?
不是。参数个数一个不少,只是每个数字用更少 bit 存储。
基础2FP16 每个参数占几字节?
2 字节(16 位)。所以 7B 模型 FP16 约 14GB。
基础3INT4 每个参数占多少字节?
0.5 字节(4 位)。7B 模型 INT4 约 4GB。
基础4训练大模型能用 INT4 吗?
不能。训练反向传播需要高精度梯度,用 FP32/BF16。量化只在推理阶段做。
基础5GGUF 格式主要给谁用?
给 llama.cpp / Ollama / Mac / CPU 这类本地推理场景,单文件、自带量化档位。
基础6Ollama 拉一个模型,默认大概是几比特?
一般默认 Q4_K_M(4-bit),平衡质量和体积,普通笔记本内存就能跑。
▍中档 5 题
中档7FP16 和 BF16 有什么区别?
都是 16 位、2 字节,但位数分配不同:BF16 指数位更宽、动态范围更大,训练时梯度不容易下溢,所以训练常用 BF16;纯推理差别不大。
中档8AWQ 比 GPTQ 好在哪里?
AWQ 是"激活感知"量化——识别出哪些权重对输出影响大,保留它们的高精度,只压不重要的。同档比特下,AWQ 质量通常比 GPTQ 更好。
中档9为什么 INT8 被认为"几乎无损"?
8 位能表示 256 个离散档位,已经足够细。大量实测显示 INT8 模型在多数基准上和 FP16 差距小于 1%,人基本感觉不到。
中档10Q4_K_M 里的 K_M 是什么意思?
GGUF 的命名:Q4=4-bit,K=mix 不同层用不同精度,M=Medium 中等大小。它是体积和质量的折中,Ollama 默认档。
中档11量化为什么能同时"省显存"和"加快度"?
省显存是因为每个参数字节数变少;加快度是因为内存带宽往往是推理瓶颈,数据变小后从显存搬到计算单元的时间变短,访存快了整体就快。
▍拔高 5 题
拔高12为什么说"量化对训练不友好、对推理友好"?
训练要反复算梯度、更新参数,对数值精度极敏感,低比特会让梯度下溢、训练发散;推理只做一次前向,几百亿参数的小误差互相抵消,输出几乎不变。
拔高13为什么 AWQ 这种"激活感知"比均匀量化好?
实验发现一小部分"显著权重"对输出影响特别大。均匀量化会把它们也压粗;AWQ 识别并保护这些权重,其余大胆压,整体质量就保住了。
拔高14为什么量化后还要留一点 FP16 计算?
实践中常做"权重量化、激活不量化"或"计算时反量化回 FP16"。完全整数化(W8A8)在 GPU 上才有专门硬件加速,否则精度损失大。
拔高15同样 7B 模型,Q4 和 FP16 在数学题上差距为什么比聊天大?
数学/长链推理需要每一步都精准,误差会沿链累积;聊天有很强的统计先验,哪怕每个 token 略糙也能"蒙"得很自然。任务越靠"精确计算",对低比特越敏感。
拔高16为什么大模型公司线上推理基本都用量化,但不会用最低比特?
线上要同时省显存(多接用户)和保质量(用户体验)。INT4 虽然最省,但面对付费客户要做严肃任务时翻车代价大;所以常见做法是 INT8/AWQ-INT4 起步,关键业务再上 FP16。
⑪ 记忆口诀 + 7 天复习计划
三句口诀
① 量化不删参数,只是每个数字用更少 bit 存。
② FP32 训练、FP16 推理、INT8 几乎无损、INT4 塞笔记本。
③ GPU 选 AWQ,本地 Mac 用 GGUF/Ollama;日常 Q4 够,严肃任务上 Q8。
| 天 | 任务 | 自检 |
| 第 1 天 | 读②③,画"毫米尺→厘米尺"类比 | 说清量化本质 |
| 第 2 天 | 背知识点卡 + 基础 1-6 | 显存速算不错 |
| 第 3 天 | 读④⑤,做中档 7-11 | 区分三种量化方法 |
| 第 4 天 | 做拔高 12-16 | 理解训练/推理差别 |
| 第 5 天 | 做⑦真题 4 题 | 限时每题 2 分钟 |
| 第 6-7 天 | 装 Ollama 实跑一次 qwen2.5 | 亲手感受 Q4 |
📌 知识链路
本节位置
把 FP16 的权重压成 INT4/INT8,体积砍到 1/4,让普通笔记本也能跑。这是 GGUF 后缀的来源。