模型格式与量化

模型文件到底是什么

当你下载一个 LLM 时,你下载的其实是一堆权重参数——数十亿个浮点数,存储了模型从训练数据中学到的所有"知识"。

这些参数需要用某种格式保存到文件中。不同的格式有不同的特性,了解它们能帮你做出更好的选择。

主流模型格式

GGUF

GGUF(GPT-Generated Unified Format)是目前本地推理最主流的格式,由 llama.cpp 项目定义。

核心特点:

  • 单文件:模型的所有信息(权重、分词器、元数据)打包在一个文件里
  • 支持量化:内置多种量化方案
  • 跨平台:CPU、GPU、Metal 都能用
  • Ollama 的底层格式:当你 ollama pull 一个模型时,背后就是 GGUF

GGUF 文件名通常包含量化信息,比如 llama-3-8b-Q4_K_M.gguf,一眼就能看出模型大小和量化级别。

SafeTensors

SafeTensors 是 Hugging Face 推出的格式,主要用于 GPU 推理和训练。

核心特点:

  • 安全:不使用 pickle,避免了序列化攻击风险
  • 快速加载:支持内存映射,加载速度快
  • GPU 训练和推理的标准格式
  • 通常保存为多个分片文件

如果你用 transformers 库或 vLLM 做推理,用的就是 SafeTensors 格式。

PyTorch (.bin) 和 GGML

  • PyTorch .bin:老格式,用 pickle 序列化,有安全风险,正在被 SafeTensors 替代
  • GGML:GGUF 的前身,已经过时,不建议使用

量化:用精度换空间

一个 7B 参数的模型,如果每个参数用 16 位浮点数(FP16)存储,需要大约 14GB 内存。70B 的模型就需要 140GB——远超普通消费级显卡的容量。

量化(Quantization)是解决这个问题的关键技术:用更少的比特位来表示每个参数,换取更小的内存占用和更快的推理速度。

原理很简单。FP16 用 16 bit 存一个参数,但很多参数的精度其实不需要那么高。如果我们用 4 bit 来存,内存占用直接降到原来的 1/4。

量化级别详解

量化级别每参数比特7B 模型大小质量损失适用场景
F1616 bit~14 GB有足够显存时的最佳选择
Q8_08 bit~7 GB极小质量优先,空间充足
Q6_K6 bit~5.5 GB很小质量和空间的良好平衡
Q5_K_M5 bit~4.8 GB推荐的通用选择
Q4_K_M4 bit~4.0 GB轻微最流行的选择,性价比最高
Q3_K_M3 bit~3.3 GB明显内存紧张时的选择
Q2_K2 bit~2.5 GB严重不推荐,质量下降太大

命名中的 K 表示使用了 k-quant 方法(更智能的量化),M 表示中等(Medium)精度,还有 S(Small,更小但质量更低)和 L(Large,更大但质量更好)。

如何选择量化级别

实用决策流程:

  1. 显存够用 → F16 或 Q8:质量最好,不用纠结
  2. 想要性价比 → Q4_K_M:这是社区最推荐的"甜点"级别,质量损失很小,内存占用大幅降低
  3. 内存紧张 → Q5_K_M 或 Q4_K_M:在质量和空间之间取得平衡
  4. 极度紧张 → Q3_K_M:能跑,但质量有明显下降
  5. Q2 → 基本不要用:质量损失太大,不如换个更小的模型

一个常见的误区是:与其用 70B 模型的 Q2 量化,不如用 7B 模型的 Q8 量化。 过度量化带来的质量损失往往比换小模型更严重。

模型大小估算

快速估算公式:

内存需求 ≈ 参数量(十亿) × 每参数比特数 ÷ 8

例如:7B 模型 Q4 量化
7 × 4 ÷ 8 = 3.5 GB(实际还需要一些额外开销,约 4 GB)

这个估算帮你快速判断一个模型能不能在你的硬件上跑起来。

在哪里找量化模型

  • Hugging Face:搜索模型名 + "GGUF",比如 "llama 3 8b GGUF"
  • TheBloke:Hugging Face 上最知名的量化模型发布者(虽然现在很多模型作者自己也发布 GGUF 了)
  • Ollama 模型库ollama list 查看可用模型,已经预配置好了

要点总结

  1. GGUF 是本地推理的标准格式,SafeTensors 用于 GPU 训练和推理。选格式取决于你的使用场景。
  2. 量化是本地跑大模型的关键技术——用精度换空间。Q4_K_M 是最流行的选择,性价比最高。
  3. 不要过度量化。Q2 通常不可用,与其过度量化大模型,不如选个小一号但量化级别更高的模型。
  4. 模型大小 ≈ 参数量 × 比特数 ÷ 8。用这个公式快速判断你的硬件能否承载。