[ SKILL_DOCUMENTATION ]
# GGUF 量化指南
关于 GGUF 量化格式和模型转换的完整指南。
## 量化概述
**GGUF** (GPT-Generated Unified Format) - llama.cpp 模型的标准格式。
### 格式对比
| 格式 | 困惑度 (Perplexity) | 大小 (7B) | Tokens/秒 | 备注 |
|--------|------------|-----------|------------|-------|
| FP16 | 5.9565 (基准) | 13.0 GB | 15 tok/s | 原始质量 |
| Q8_0 | 5.9584 (+0.03%) | 7.0 GB | 25 tok/s | 近乎无损 |
| **Q6_K** | 5.9642 (+0.13%) | 5.5 GB | 30 tok/s | 质量/大小最佳 |
| **Q5_K_M** | 5.9796 (+0.39%) | 4.8 GB | 35 tok/s | 平衡 |
| **Q4_K_M** | 6.0565 (+1.68%) | 4.1 GB | 40 tok/s | **推荐** |
| Q4_K_S | 6.1125 (+2.62%) | 3.9 GB | 42 tok/s | 更快,质量较低 |
| Q3_K_M | 6.3184 (+6.07%) | 3.3 GB | 45 tok/s | 仅限小型模型 |
| Q2_K | 6.8673 (+15.3%) | 2.7 GB | 50 tok/s | 不推荐 |
**建议**:使用 **Q4_K_M** 以获得质量和速度的最佳平衡。
## 模型转换
### HuggingFace 转 GGUF
bash
# 1. 下载 HuggingFace 模型
huggingface-cli download meta-llama/Llama-2-7b-chat-hf
--local-dir models/llama-2-7b-chat/
# 2. 转换为 FP16 GGUF
python convert_hf_to_gguf.py
models/llama-2-7b-chat/
--outtype f16
--outfile models/llama-2-7b-chat-f16.gguf
# 3. 量化为 Q4_K_M
./llama-quantize
models/llama-2-7b-chat-f16.gguf
models/llama-2-7b-chat-Q4_K_M.gguf
Q4_K_M
### 批量量化
bash
# 量化为多种格式
for quant in Q4_K_M Q5_K_M Q6_K Q8_0; do
./llama-quantize
model-f16.gguf
model-${quant}.gguf
$quant
done
## K-量化方法
**K-quants** 使用混合精度以获得更好的质量:
- 注意力权重:更高精度
- 前馈网络权重:更低精度
**变体**:
- `_S` (Small): 更快,质量较低
- `_M` (Medium): 平衡(推荐)
- `_L` (Large): 质量更好,体积更大
**示例**:`Q4_K_M`
- `Q4`: 4-bit 量化
- `K`: 混合精度方法
- `M`: 中等质量
## 质量测试
bash
# 计算困惑度 (质量指标)
./llama-perplexity
-m model.gguf
-f wikitext-2-raw/wiki.test.raw
-c 512
# 困惑度越低 = 质量越好
# 基准 (FP16): ~5.96
# Q4_K_M: ~6.06 (+1.7%)
# Q2_K: ~6.87 (+15.3% - 降级过多)
## 使用场景指南
### 通用用途 (聊天机器人、助手)
Q4_K_M - 最佳平衡
Q5_K_M - 如果你有额外的内存
### 代码生成
Q5_K_M 或 Q6_K