大模型基于llama.cpp量化详解

概述

llama.cpp 是一个高性能的 LLM 推理库,支持在各种硬件(包括 CPU 和 GPU)上运行量化后的大语言模型。本文档详细介绍如何使用 llama.cpp 将 HuggingFace 格式的模型转换为 GGUF 格式,并进行不同程度的量化。

GGUF 格式:GGUF(Georgi Gerganov Universal Format)是 llama.cpp 专门设计的模型文件格式,针对快速加载和保存模型进行了优化,支持单文件部署,包含加载模型所需的所有信息,无需依赖外部文件。

1.安装cmake

CMake 是跨平台的构建工具,用于编译 llama.cpp 项目。

下载地址https://cmake.org/download/

安装建议

  • Windows 用户建议下载 cmake-3.x.x-windows-x86_64.msi 安装包
  • 安装时选择 "Add CMake to the system PATH",以便在命令行中直接使用

验证安装

bash 复制代码
cmake --version



2.安装llama.cpp

```bash
git clone https://github.com/ggerganov/llama.cpp

convert_hf_to_gguf.py:HuggingFace 格式转 GGUF 的脚本

llama-quantize(或 quantize.exe):量化工具

main(或 main.exe):推理主程序

examples/:各种示例程序

3.编译

bash 复制代码
cd llama.cpp

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

pip install -r requirements/requirements-convert_hf_to_gguf.txt

cmake -G "MinGW Makefiles" -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -B build

cmake --build build --config Release

4.模型转换

将safetensors转换为gguf

bash 复制代码
convert-hf-to-gguf.py D:\\Project\\2026\\llama3-lora-merge --outtype f16 --outfile D:\\Project\\2026\\my_llama3.gguf

参数说明:

D:\Project\2026\llama3-lora-merge:输入模型路径(包含 config.json 和权重文件的目录)

--outtype f16:输出类型,f16 表示半精度浮点数(16-bit),可选 f32(全精度)或 bf16

--outfile:输出 GGUF 文件路径

类型 精度 说明
f32 32-bit 全精度,文件最大,精度最高
f16 16-bit 半精度,平衡选择
bf16 16-bit Brain Float,动态范围更大
q8_0 8-bit 直接量化为 8 位

6.进一步量化

bash 复制代码
D:\Project\2026\test_llama3.cpp\llama.cpp\build\bin\Release
quantize.exe D:\\Project\\2026\\my_llama3.gguf D:\\Project\\2026\\quantized_model.gguf q4_0

llama-quantize可执行文件来对模型进行进一步量化处理。量化可以帮助我们减少模型的大小,但是代价是损失了模型精度,也就是模型回答的能力可能有所下降。权衡以后我们可以选择合适的量化参数,保证模型的最大效益。

量化使用 q 表示存储权重的位数。位数越低,模型越小,速度越快,但精度损失越大。

量化类型 位宽 精度损失 适用场景 典型压缩率
q2_k 2-bit 极低资源环境,实验用途 ~75%
q3_k_s / q3_k_m / q3_k_l 3-bit 中高 资源受限,可接受一定质量损失 ~60%
q4_0 / q4_1 4-bit 最常用,平衡大小与质量 ~50%
q4_k_s / q4_k_m 4-bit 改进的 4-bit,质量更好 ~50%
q5_0 / q5_1 5-bit 较高质量要求 ~40%
q5_k_s / q5_k_m 5-bit 改进的 5-bit ~40%
q6_k 6-bit 很低 接近原始质量 ~35%
q8_0 8-bit 极低 几乎无损,文件较大 ~25%
f16 16-bit 原始转换,未量化 0%

K-quant 说明:

后缀带 _k 的(如 q4_k_m)使用改进的量化算法

混合量化策略:对 attention 层使用更高精度,其他层使用较低精度

_s(small)、_m(medium)、_l(large)表示混合程度

相关推荐
yumgpkpm18 小时前
华为昇腾910B上用Kubernetes(K8s)部署LLM(Qwen3-32B)的详细步骤,保姆级命令及方法、下载链接等
运维·服务器·华为·stable diffusion·aigc·copilot·llama
YanDDDeat21 小时前
【大模型微调】基于 Llama3-8B 的 LoRA 微调专有领域QA 问答对生成模型
python·语言模型·llama
tinygone1 天前
OpenClaw之Memory配置成本地模式,Ubuntu+CUDA+cuDNN+llama.cpp
人工智能·ubuntu·llama
建行一世1 天前
【Windows笔记本大模型“傻瓜式”教程】使用LLaMA-Factory工具来完成对Windows笔记本大模型Qwen2.5-3B-Instruct微调
windows·ai·语言模型·llama
Thomas.Sir2 天前
第二章:LlamaIndex 的基本概念
人工智能·python·ai·llama·llamaindex
Thomas.Sir3 天前
第三章:Agent智能体开发实战之【LlamaIndex 工作流从入门到实战】
python·ai·llama·workflow·llamaindex
Thomas.Sir3 天前
第一章:Agent智能体开发实战之【初步认识 LlamaIndex:从入门到实操】
人工智能·python·ai·检索增强·llama·llamaindex
做个文艺程序员3 天前
2026 年开源大模型选型指南:Qwen3.5 / DeepSeek V3.2 / Llama 4 横向对比
人工智能·开源·llama
汀江游非侠4 天前
编译llama.cpp
llama
AI大模型..5 天前
数据洞察加速器:LLM Copilot 如何让 SQL 查询效率提升 50% 以上?
人工智能·langchain·llm·agent·llama