量化与推测解码
对于自行托管的模型:使用 int8/int4 量化节省内存,使用推测解码提升吞吐量。
量化与推测解码 是 CoddyKit 上的免费 AI Agents 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 AI Agents 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 AI Agents 课程共包含 4 节课。
本课时的部分内容尚未翻译,以英文显示。
自托管模型优化
对于自托管的开源模型,有两种显著的提速和降本方法:
- 量化 — 权重更小、RAM/VRAM 占用更少、推理速度更快
- 推测解码 — 每个步骤生成多个令牌
量化基础
模型通常以 FP16(每个权重 16 位)存储。量化会将其降低到更少的位数:
- FP16 — 基线
- INT8 — 体积缩小 2 倍,质量损失几乎可以忽略
- INT4 / Q4_K_M — 体积缩小 4 倍,质量略有损失
- INT2 / 1.58-bit — 体积缩小 8 倍以上,质量有明显损失
GGUF 与量化级别
GGUF 是 llama.cpp 使用的格式。常见级别包括:
- Q4_K_M — 最佳平衡(质量与大小)
- Q5_K_M — 略大,质量略好
- Q8_0 — 接近 FP16 的质量,压缩 2 倍
Quantise With llama.cpp
./llama-quantize models/llama-3-8b-f16.gguf models/llama-3-8b-q4_k_m.gguf Q4_K_M
# Or download pre-quantised from TheBloke / unsloth on HuggingFace硬件影响
一个 8B FP16 模型需要约 16GB VRAM。同一个模型使用 Q4 后只需约 5GB VRAM,可以在便宜得多的 GPU 上运行。
推测解码
诀窍是:使用小型“草稿”模型提出令牌,然后让大型“目标”模型通过一次前向传播进行验证。速度通常可以提升 2-3 倍。
from transformers import AutoModelForCausalLM
target = AutoModelForCausalLM.from_pretrained('meta-llama/Llama-3.1-70B')
draft = AutoModelForCausalLM.from_pretrained('meta-llama/Llama-3.1-8B')
outputs = target.generate(
input_ids,
assistant_model=draft, # speculative decoding
max_new_tokens=200
)为什么有效
草稿模型提出 K 个令牌。目标模型将它们全部 PARALLEL 处理(进行一次前向传播)。每个被接受的令牌都是“免费”的。被拒绝时会回滚;通常大多数令牌都会被接受。
其他解码加速方法
- 前瞻解码 — 每个步骤生成多个草稿
- Medusa — 联合训练的多个解码头
- EAGLE — 快速的基于树的推测方法
实现这些功能的工具
- vLLM — 同时支持量化(AWQ、GPTQ、FP8)和推测解码
- llama.cpp — 支持量化,并通过 --draft-model 支持推测解码
- TensorRT-LLM — NVIDIA 的生产级服务器
- SGLang — 支持连续批处理的高速批处理友好型服务器
连续批处理
vLLM 的旗舰功能:在同一次前向传播中处理长度不同的多个请求。对于生产服务器而言,吞吐量会得到大幅提升。
选择量化级别
在 YOUR 评估集上测试每个候选级别。Q4_K_M 是默认的起点;如果质量低于阈值,则选择更高级别。
逐令牌延迟与吞吐量
不同的优化方法有助于改善不同的指标:
- 单请求延迟:推测解码
- 多用户吞吐量:连续批处理
- 内存成本:量化
量化的效果
int4 量化的主要效果是什么?
回顾
量化到 Q4 以节省内存并提升速度。使用推测解码来降低延迟。使用连续批处理提高吞吐量。vLLM 和 llama.cpp 都实现了这三种方法。
常见问题解答
「量化与推测解码」课时是免费的吗?
是的 — 「量化与推测解码」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 AI Agents 课程的其余内容,请升级到 CoddyKit PRO。 AI Agents 课程共包含 4 节课。
「量化与推测解码」这节课中我会学到什么?
对于自行托管的模型:使用 int8/int4 量化节省内存,使用推测解码提升吞吐量。 你通过在浏览器中直接运行的动手代码来练习 AI Agents,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 AI Agents 需要有经验吗?
无需任何先前经验。CoddyKit 上的 AI Agents 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「量化与推测解码」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 AI Agents 课中编写并运行代码吗?
能。每节 AI Agents 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。