版本信息最后核对:2026-10-24
GGUF 格式与转换:把 Hugging Face 模型转成 llama.cpp 可加载的量化文件
GGUF(GPT-Generated Unified Format)是 llama.cpp/GGML 生态的模型文件格式,把张量、分词器、元数据和量化参数打包在一个文件里。它适合本地 CPU/GPU 推理、边缘设备和快速分发;vLLM、TensorRT-LLM、TGI 等服务通常使用 safetensors,其中 vLLM 可通过实验性 GGUF 插件加载 GGUF,但兼容性有限。
GGUF 支持多种量化类型,例如 Q4_K_M、Q5_K_M、Q8_0 和 IQ 系列。Q4_K_M 是常见的质量/体积折中,Q8_0 更接近原始精度但更大。转换分两步:先把 Hugging Face 模型转成 GGUF(通常是 F16/BF16),再用 llama-quantize 量化;也可以直接下载社区已量化好的 GGUF。
# 准备 llama.cpp
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
cmake -B build -DGGML_CUDA=ON
cmake --build build -j
# Hugging Face 模型转 GGUF(F16)
python convert_hf_to_gguf.py /models/Qwen2.5-7B-Instruct \
--outfile /models/qwen2.5-7b-f16.gguf --outtype f16
# 量化成 Q4_K_M
./build/bin/llama-quantize /models/qwen2.5-7b-f16.gguf \
/models/qwen2.5-7b-q4_k_m.gguf Q4_K_M
# 运行量化后的模型
./build/bin/llama-cli -m /models/qwen2.5-7b-q4_k_m.gguf \
-p '用一句话解释 TCP 三次握手' -n 128
# 启动 OpenAI 兼容服务
./build/bin/llama-server -m /models/qwen2.5-7b-q4_k_m.gguf \
--host 0.0.0.0 --port 8080 -c 8192
# 查看 GGUF 元数据
python gguf-py/gguf/scripts/gguf_dump.py /models/qwen2.5-7b-q4_k_m.gguf
选择量化级别时先看显存/内存和任务容忍度:代码、数学和长上下文任务对量化更敏感,优先 Q5_K_M 或 Q8_0;通用聊天可以先用 Q4_K_M 做基线,再用评测集比较。
chat_template 决定对话格式;转换时确认模板已写入,否则模型会把系统提示当成普通文本。合上页面,先回答,再展开对照。
Q4_K_M 里的 K 和 M 大致代表什么?为什么不能只看文件大小选量化级别?chat_template 是否正确写入,以及转换时使用的 tokenizer 和模型配置是否匹配。
小程序版
微信扫码,随时查命令