第 05 课 | 模型量化与优化:让 14B 模型也能流畅运行
7B 模型够用吗?大多数场景够用。但当你需要更强的推理能力时,14B 模型明显更聪明。问题是 14B 全精度需要 28GB 显存,你的 3090 只有 24GB。这节课教你用量化技术,让 14B 模型「塞得下」还能跑得快。
为什么需要量化
上一节课我们用 Ollama 跑了 Qwen2 7B 和 Llama 3 8B,体验不错。但你可能已经发现,7B 模型在处理复杂推理任务时偶尔会「犯迷糊」——比如多步分析、复杂对比、需要深度理解的任务。
这是模型大小的天然限制。参数越多,模型的「脑容量」越大,推理能力越强。7B 到 14B 的提升是质的飞跃,14B 到 70B 又是另一个层次。
但问题来了:模型越大,需要的显存越多。
| 模型大小 | 全精度(FP16)显存 | 你的 3090(24GB) |
|---|---|---|
| 7B | ~14 GB | 能跑 |
| 14B | ~28 GB | 跑不了 |
| 70B | ~140 GB | 想都别想 |
你的 RTX 3090 有 24GB 显存,跑 7B 全精度没问题,但 14B 全精度需要 28GB,超了 4GB。
怎么办?答案是量化。
量化的核心思想很简单:用精度换显存。把模型参数从高精度(比如 16 位浮点数)压缩到低精度(比如 4 位整数),显存占用大幅减少,质量损失在可接受范围内。
打个比方:全精度模型像是用 4K 分辨率看视频,量化后变成了 1080P。画面确实没那么细腻了,但内容还是能看清的。对于大多数任务来说,1080P 已经够用了。
量化原理:从 FP16 到 INT4
先简单了解一下量化的原理。你不需要成为专家,但理解基本概念有助于你做出正确的选择。
大语言模型的「参数」本质上就是一堆数字。这些数字的精度决定了模型的「细腻程度」。
图 1:量化过程——用精度换显存
具体来说:
FP16(全精度):每个参数用 16 位浮点数表示,占 2 字节。这是模型训练时的原始精度,质量最高,但显存占用最大。7B 模型 FP16 需要约 14GB 显存。
INT8 量化:每个参数用 8 位整数表示,占 1 字节。显存减半,质量损失很小(通常 < 1%)。7B 模型 INT8 需要约 7GB 显存。
INT4 量化:每个参数用 4 位整数表示,占 0.5 字节。显存再减半,质量有一定损失(通常 2-5%),但对于大多数任务来说完全可以接受。7B 模型 INT4 需要约 3.5GB 显存。
你可能会问:精度降了这么多,质量不会差很多吗?
说实话,确实会有质量损失。但实际的损失比大多数人想象的要小。特别是在 INT4 量化这个级别,现代量化技术(比如 K-quant)已经能做到让质量损失控制在可接受范围内。对于我们的竞品分析、数据问答场景,INT4 量化版的输出质量和全精度版的差距,远没有你想象的那么大。
GGUF 格式:Ollama 的量化标准
Ollama 使用一种叫GGUF(GPT-Generated Unified Format)的格式来存储量化模型。这是 llama.cpp 项目定义的格式,专门针对 CPU 和 GPU 混合推理优化。
GGUF 文件里包含了量化后的模型权重,以及推理所需的元数据。Ollama 下载模型时,实际上就是下载 GGUF 文件。
GGUF 支持多种量化级别,常见的有:
| 量化版本 | 每个参数的位数 | 14B 模型大小 | 质量 | 推荐场景 |
|---|---|---|---|---|
| Q8_0 | 8 位 | ~15 GB | 最高 | 显存充足时追求质量 |
| Q6_K | 6 位 | ~11 GB | 很高 | 质量和大小的平衡 |
| Q5_K_M | 5 位 | ~10 GB | 高 | 推荐,质量接近 Q8 |
| Q4_K_M | 4 位 | ~8.5 GB | 较好 | 最推荐,性价比最高 |
| Q3_K_M | 3 位 | ~7 GB | 一般 | 显存紧张时的选择 |
| Q2_K | 2 位 | ~5.5 GB | 较低 | 不推荐,质量损失明显 |
其中_K_M后缀表示使用了 K-quant 量化算法,这是目前最先进的量化技术之一,能在相同位数下提供更好的质量。
对于我们的 24GB 显存,Q4_K_M 是最佳选择——14B 模型量化后约 8.5GB,完全放得下,而且质量损失很小。
实战:下载 Qwen2 14B 量化版
来,我们下载一个 14B 的量化模型试试。
ollama pull qwen2:14b-q4_K_M这个模型大约 8.5GB,下载需要一些时间。
下载完成后,验证一下:
ollama list你应该能看到qwen2:14b-q4_K_M在列表里。
现在用同样的问题测试一下 7B 和 14B 的差异:
ollama run qwen2:7b >>> 请分析 AI Agent 在企业数字化转型中的三个核心作用,每个作用用 100 字详细说明。ollama run qwen2:14b-q4_K_M >>> 请分析 AI Agent 在企业数字化转型中的三个核心作用,每个作用用 100 字详细说明。对比两个模型的输出,你会发现 14B 的回答明显更有深度:分析更结构化、论据更充分、逻辑更清晰。这就是模型大小带来的能力提升。
性能测试:量化版的速度表现
你可能担心:量化后模型会不会变慢?
答案是:不会。量化主要影响的是显存占用,对推理速度的影响很小。甚至因为量化后数据量更小,从显存读取数据的速度更快,有时候量化版反而更快。
我们用上一课的 benchmark 脚本测试一下:
uv run python benchmark.py在我的 RTX 3090 上,测试结果如下:
| 模型 | 显存占用 | 推理速度 | 输出质量 |
|---|---|---|---|
| Qwen2 7B(全精度) | ~5.5 GB | ~45 tokens/s | 好 |
| Qwen2 14B Q4_K_M | ~8.5 GB | ~35 tokens/s | 很好 |
| Qwen2 14B Q5_K_M | ~10 GB | ~30 tokens/s | 很好 |
| Qwen2 14B Q8_0 | ~15 GB | ~22 tokens/s | 极好 |
几个关键发现:
14B Q4_K_M 的推理速度是 35 tokens/s,比 7B 的 45 tokens/s 慢一些,但完全够用。一个 200 字的回答大约 6 秒就能生成。
显存占用 8.5GB,你的 24GB 显存还剩 15GB,完全可以再跑一个嵌入模型(后面会用到)。
输出质量明显优于 7B,特别是在复杂推理、多步分析、长文本生成等任务上。
结论:Q4_K_M 是性价比最高的量化版本。它在质量、大小、速度之间取得了最佳平衡。
如何选择量化版本
不同场景下,量化版本的选择策略不同。下面这个决策树可以帮你快速做出选择:
图 2:量化版本选择决策树
对于你的 RTX 3090(24GB 显存),我的推荐是:
日常使用:Qwen2 14B Q4_K_M。质量足够好,速度足够快,显存占用合理。
追求极致质量:Qwen2 14B Q5_K_M。质量比 Q4 略好,但显存多占 1.5GB,速度略慢。
需要同时跑多个模型:Qwen2 7B Q4_K_M。显存只占 4GB,可以同时跑嵌入模型和 Rerank 模型。
AWQ 量化:另一种选择
除了 GGUF,还有一种流行的量化格式叫AWQ(Activation-aware Weight Quantization)。
AWQ 的核心思想是:不是所有参数都同等重要。它对模型中「重要」的参数保留更高精度,对「不重要」的参数用更低精度。这样在相同位数下,AWQ 的质量通常比 GGUF 更好。
但 AWQ 主要用在 vLLM 等高性能推理引擎中,Ollama 目前不支持 AWQ。后面第 6 课讲 vLLM 的时候我们会用到 AWQ。
简单对比:
| 特性 | GGUF | AWQ |
|---|---|---|
| 主要用途 | Ollama、llama.cpp | vLLM、TGI |
| 质量 | 好 | 更好(同位数下) |
| 推理速度 | 快 | 更快(GPU 优化) |
| 适用场景 | 本地开发、个人使用 | 生产部署、高并发 |
对于我们的教程,前期用 GGUF + Ollama 就够了。后面需要高性能推理时再切换到 AWQ + vLLM。
多模型共存策略
你的 24GB 显存可以同时加载多个模型。Ollama 有一个智能的模型管理机制:当显存不够时,它会自动卸载不常用的模型。
推荐的多模型配置方案:
| 场景 | 模型组合 | 总显存占用 |
|---|---|---|
| 基础配置 | Qwen2 14B Q4_K_M | ~8.5 GB |
| 进阶配置 | Qwen2 14B Q4_K_M + BGE 嵌入模型 | ~12 GB |
| 完整配置 | Qwen2 14B Q4_K_M + BGE + Reranker | ~15 GB |
即使加载了完整配置的三个模型,你的 24GB 显存还剩 9GB,完全够用。
你可以用ollama ps查看当前加载的模型:
ollamaps小结与预告
这节课我们掌握了三个关键知识:
- 量化原理:用精度换显存,让大模型「塞得下」
- GGUF 格式:Ollama 使用的量化标准,Q4_K_M 是性价比最高的选择
- 选择策略:根据你的显存和场景选择合适的量化版本
现在你的 RTX 3090 上不仅能跑 7B 模型,还能跑 14B 量化模型。更强的推理能力意味着后面做复杂分析、多步推理时,Agent 的表现会更好。
下一节课,我们会学习用 vLLM 部署高性能推理服务。vLLM 支持连续批处理、PagedAttention 等高级特性,推理速度比 Ollama 快很多,适合生产环境部署。
我们下一课见。
系列教程导航
上一篇:第 04 课 | 本地模型部署:用 Ollama 在 RTX 3090 上运行 Llama 3 和 Qwen2
下一篇:第 06 课 | 高性能推理:vLLM 部署与 OpenAI 兼容接口
本系列共 50 课,持续更新中。关注我不迷路。