为 llama.cpp 选择理想的量化类型
目录
警告
本文最后更新于 2024-03-15,文中内容可能已过时。
当我们部署 llama.cpp 或 Ollama 实例时,我们更倾向于运行量化模型以节省内存并加速推理。
但是,量化模型的质量并不总是很好。我们需要选择合适的量化类型来平衡质量和性能。
llama.cpp 中的量化类型
llama.cpp 中有许多量化类型。当你尝试量化模型时,可以看到以下打印信息。
|
|
量化类型比较
为了帮助我们比较量化类型,我制作了一个表格来显示每种量化类型的大小和 ppl(困惑度)变化。ppl 变化越小意味着质量越好。困惑度通常衡量模型预测结果的置信度。困惑度越低,模型越好。
Q Type | Size | ppl Change | Note |
---|---|---|---|
Q2_K_S | 2.16G | +9.0634 | @ LLaMA-v1-7B |
Q2_K | 2.63G | +0.6717 | @ LLaMA-v1-7B |
Q3_K_S | 2.75G | +0.5551 | @ LLaMA-v1-7B |
Q3_K | - | - | alias for Q3_K_M |
Q3_K_M | 3.07G | +0.2496 | @ LLaMA-v1-7B |
Q3_K_L | 3.35G | +0.1764 | @ LLaMA-v1-7B |
Q4_0 | 3.56G | +0.2166 | @ LLaMA-v1-7B |
Q4_K_S | 3.59G | +0.0992 | @ LLaMA-v1-7B |
Q4_K | - | - | alias for Q4_K_M |
Q4_K_M | 3.80G | +0.0532 | @ LLaMA-v1-7B |
Q4_1 | 3.90G | +0.1585 | @ LLaMA-v1-7B |
Q5_0 | 4.33G | +0.0683 | @ LLaMA-v1-7B |
Q5_K_S | 4.33G | +0.0400 | @ LLaMA-v1-7B |
Q5_1 | 4.70G | +0.0349 | @ LLaMA-v1-7B |
Q5_K | - | - | alias for Q5_K_M |
Q5_K_M | 4.45G | +0.0122 | @ LLaMA-v1-7B |
Q6_K | 5.15G | +0.0008 | @ LLaMA-v1-7B |
Q8_0 | 6.70G | +0.0004 | @ LLaMA-v1-7B |
为了帮助我们理解大小和 ppl 变化之间的关系,我制作了一个象限图来显示这种关系。
quadrantChart title 大小与困惑度变化对比 x-axis "体积小" --> "体积大" y-axis "困惑度小" --> "困惑度大" quadrant-1 "最差模型" quadrant-2 "有潜力" quadrant-3 "最佳模型" quadrant-4 "低优先级" Q3_K_M: [0.05, 0.95] Q3_K_L: [0.1, 0.8] Q4_0: [0.15, 0.85] Q4_K_S: [0.2, 0.55] Q4_K_M: [0.25, 0.4] Q4_1: [0.3, 0.7] Q5_0: [0.4, 0.45] Q5_K_S: [0.4, 0.35] Q5_1: [0.5, 0.3] Q5_K_M: [0.45, 0.2] Q6_K: [0.7, 0.08] Q8_0: [0.95, 0.05]quadrantChart title 大小与困惑度变化对比 x-axis "体积小" --> "体积大" y-axis "困惑度小" --> "困惑度大" quadrant-1 "最差模型" quadrant-2 "有潜力" quadrant-3 "最佳模型" quadrant-4 "低优先级" Q3_K_M: [0.05, 0.95] Q3_K_L: [0.1, 0.8] Q4_0: [0.15, 0.85] Q4_K_S: [0.2, 0.55] Q4_K_M: [0.25, 0.4] Q4_1: [0.3, 0.7] Q5_0: [0.4, 0.45] Q5_K_S: [0.4, 0.35] Q5_1: [0.5, 0.3] Q5_K_M: [0.45, 0.2] Q6_K: [0.7, 0.08] Q8_0: [0.95, 0.05]
总结
从表格和散点图中,我们可以看出 Q8_0 质量最好,但大小也最大。Q2_K_S 质量最差,但大小最小。Q4_K_M 在质量和大小之间取得了最佳平衡。但我推荐 Q5_K_M,它具有良好的质量和合理的大小。
对于小模型,如 7B、14B,我推荐 Q6_K,即使它比 Q5_K_M 大,但 ppl 变化非常小。对于像 RTX 4090 这样的 GPU,24GB 显存绰绰有余。但对于 GPU,其他量化类型如 exl2 可能是更好的选择。