Skip to content

Importance Matrix (imatrix) 通过校准数据统计各张量的重要性,指导量化时保留关键权重,提升量化模型的质量。

为什么需要 imatrix

标准量化对所有权重一视同仁,但模型中不同权重对输出的影响差异很大。imatrix 识别出更"重要"的权重,在量化时给予更高精度,从而在相同压缩率下获得更好的模型质量。

核心原理

  1. 收集统计 — 在校准数据上运行推理,记录每个张量的激活值
  2. 计算重要性 — 基于激活值的统计量(如方差、范数)评估重要性
  3. 指导量化 — 重要的张量使用更高精度的量化类型
bash
# 步骤 1: 生成 imatrix
./llama-imatrix -m model-F16.gguf -f calibration.txt -o imatrix.dat

# 步骤 2: 使用 imatrix 量化
./llama-quantize --imatrix imatrix.dat model-F16.gguf model-Q4_K_M.gguf Q4_K_M

校准数据通常使用 ~100K-1M token 的多样化文本。

在源码中的实现

  • tools/imatrix/ — imatrix 生成工具
  • ggml/src/ggml-quants.c — 量化时使用 imatrix 数据
  • tools/quantize/ — 量化工具支持 --imatrix 参数

相关概念

  • quantization — imatrix 服务的量化过程
  • gguf — imatrix 数据可以嵌入 GGUF 文件
  • ggml — 量化在 GGML 层实现