返回学习路线

AI 学习路线 · 深入

Part 17 · 模型量化

目标:理解"为什么量化、主流算法各自思路",能动手量化并评估效果。


Section 1 · 为什么量化(概念)

Subsection 1 · 记概念

量化 = 把模型的权重/激活从高精度(FP32/FP16)压到低精度(INT8/INT4)目的:省显存、加速推理代价:精度损失(可能影响输出质量)

Subsection 2 · 记精度与显存

FP32 = 4字节/参数   7B ≈ 28GBFP16 = 2字节/参数   7B ≈ 14GBINT8 = 1字节/参数   7B ≈ 7GBINT4 ≈ 0.5字节/参数  7B ≈ 3.5GB

过关:能说清量化换什么、代价什么 = Section 1 完成。


Section 2 · GPU 算力测算

Subsection 1 · 记概念

算力单位 TFLOPS:每秒万亿次浮点运算推理算力需求 ≈ 2 × 参数量 × 每秒生成 token 数(FLOPs)例:7B 模型要 20 tokens/s → 需 ~2×7e9×20 ≈ 280 GFLOPs → 一般消费级卡轻松满足训练需求则大几个数量级 → 所以训练要数据中心

Subsection 2 · 查自己的卡 nvidia-smi 看显存;nvidia-smi --query-gpu=name,memory.total --format=csv 看型号。

  • 记下你的卡能跑多大量化模型。

过关:会算显存 + 了解算力 = Section 2 完成。


Section 3 · PTQ 训练后量化

Subsection 1 · 记概念

PTQ(Post-Training Quantization,训练后量化)= 模型训练好之后,直接量化,不重新训练优点:快、简单缺点:精度损失相对大

Subsection 2 · 用 transformers 跑 PTQ 雏形 新建 ptq_demo.py:

python
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig# 加载时直接 8bit 量化(HF 内建 PTQ)model_name = "Qwen/Qwen2.5-0.5B-Instruct"config = BitsAndBytesConfig(load_in_8bit=True)model = AutoModelForCausalLM.from_pretrained(model_name, quantization_config=config, trust_remote_code=True)tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)out = model.generate(tokenizer("你好", return_tensors="pt").input_ids, max_new_tokens=20)print(tokenizer.decode(out[0], skip_special_tokens=True))print("8bit 量化模型加载成功")
  • 预期看到:模型正常运行(内部已是 8bit)。

过关:PTQ 概念 + 8bit 加载跑通 = Section 3 完成。


Section 4 · QAT 量化感知训练

Subsection 1 · 记概念

QAT(Quantization-Aware Training,量化感知训练)= 训练时就模拟量化误差,让模型"适应"低精度优点:效果比 PTQ 好缺点:要训练,成本高
  • 面试点:PTQ 快但损失大,QAT 好但贵。

过关:能说 PTQ/QAT 区别 = Section 4 完成。


Section 5 · GPTQ(量化算法)

Subsection 1 · 记概念

GPTQ = 专为 GPT 系模型设计的 4bit 量化思路:逐层量化,用"误差补偿"减少损失生态:AutoGPTQ 库,GGUF/GPTQ 格式常见

Subsection 2 · 装并量化 cmd:pip install auto-gptq(或 llm-compressor) 用 AutoGPTQ 官方示例对一个小模型做 4bit 量化(代码见 https://github.com/AutoGPTQ/AutoGPTQ README)。

  • 预期看到:量化后的模型能正常推理。

过关:能说 GPTQ 思路 + 跑通示例 = Section 5 完成。


Section 6 · AWQ(激活感知量化)

Subsection 1 · 记概念

AWQ(Activation-aware Weight Quantization)= 根据"激活值的重要性"决定哪些权重少量化、哪些多量化思路:不是所有权重一样重要,重要的保留高精度效果:4bit 下效果通常优于 GPTQ

Subsection 2 · 查资料

过关:能说出 AWQ 与 GPTQ 区别 = Section 6 完成。


Section 7 · GGUF 量化实操(llama.cpp / Ollama)

Subsection 1 · 用 Ollama 体验量化档位

  • ollama run qwen2.5:1.5b-q4_K_M(4bit 量化版)
  • ollama run qwen2.5:1.5b(默认更高精度)
  • 对比两个的回答质量与速度。
  • 预期看到:q4 版更快、显存更省,质量略降但中文通常仍可用。

Subsection 2 · 看 GGUF 档位

q2_K/q3_K  极省,质量差q4_K       主流折中(推荐)q5_K/q6_K  更稳,略大f16        无量化,最大

过关:能对比不同档位 = Section 7 完成。


Section 8 · 量化前后完整对比

Subsection 1 · 做对比实验

  • 同一模型,分别用:FP16 / INT8 / INT4 跑同一批 10 个问题。
  • 记录:显存占用、生成速度、回答质量(自己打分 1~5)。
  • 整理成表格写进笔记。
  • 预期看到:量化程度越高,显存↓ 速度↑ 质量↓,找到你的"甜点档位"。

过关:有完整对比数据 = Section 8 完成。


Section 9 · 面试题

Subsection 1 · 练习

  1. 什么是量化?为什么需要?
  2. PTQ 和 QAT 区别?
  3. GPTQ 和 AWQ 各自思路?
  4. 4bit 模型质量能接受吗?怎么验证?
  5. 一个 13B 模型 FP16/INT4 各多少显存?
  • 先自己答,再让 DeepSeek 补充。

过关:5 题能答 = Section 9 完成。


Section 10 · 站 15 验收

勾选

  • 能说清量化换什么、代价什么
  • 会算显存,知道自己的卡能跑什么档位
  • PTQ 概念 + 8bit 加载跑通
  • 能说 PTQ / QAT 区别
  • 了解 GPTQ / AWQ 思路
  • 用 GGUF 不同档位对比过(Section 7)
  • 有量化前后完整对比数据(Section 8)
  • 5 道面试题能答

写 300 字Part 15 总结:你的甜点档位是什么,为什么。

全勾选 = Part 17 通过 → 进入下一站 Part 18 · 训练数据与模型评估,10 天)。