大模型量化知识总结
2026/6/14 19:17:00 网站建设 项目流程

📑 目录

  • 1. 一句话理解模型量化
  • 2. 量化有什么用
  • 3. 关键概念
    • 3.1 权重量化、激活量化、KV cache 量化
    • 3.2 PTQ 和 QAT
    • 3.3 静态量化和动态量化
  • 4. 常见量化方法对比
  • 5. QLoRA 是什么
  • 6. 微调时量化 vs 导出后量化
    • 6.1 微调时量化:QLoRA
    • 6.2 导出后量化:GPTQ 等 PTQ
  • 7. 在 LLaMA-Factory 中怎么使用
    • 7.1 安装依赖
    • 7.2 QLoRA 训练配置示例
    • 7.3 训练时使用 8-bit
    • 7.4 使用已经量化好的 GPTQ/AWQ 模型
    • 7.5 合并 LoRA
    • 7.6 导出 GPTQ 量化模型
  • 8. 怎么选量化方案
  • 9. 常见坑

1. 一句话理解模型量化

模型量化(Model Quantization)就是把模型中原本用 FP32、FP16、BF16 等高精度格式保存或计算的数值,压缩成 INT8、INT4、NF4、FP4 等更低位宽格式。

大模型里最占空间的是权重。以参数量粗略估算:

精度每个参数约占空间7B 模型权重粗略占用作用
FP324 bytes约 28 GB训练早期常见,推理太重
FP16/BF162 bytes约 14 GB常见训练/推理精度
INT81 byte约 7 GB推理省显存,质量通常较稳
INT4/NF4/FP40.5 byte约 3.5 GB显存压力大幅下降,常用于 QLoRA 或低显存部署

实际占用会更高,因为还包括 KV cache、激活值、优化器状态、LoRA adapter、临时张量、框架开销等。

2. 量化有什么用

  1. 降低显存门槛
    比如 7B/14B/32B 模型在 FP16 下可能放不进消费级显卡,4-bit 后可以显著降低加载门槛。

  2. 降低推理成本
    同样显存可以放更大的模型,或者同一张卡服务更多并发。

  3. 提升推理速度
    低比特权重减少内存带宽压力;但是否真正变快取决于推理框架、kernel、GPU 架构、batch size 和量化格式。

  4. 让低资源微调变得可行
    QLoRA 的思路是冻结 4-bit 量化后的基座模型,只训练少量 LoRA 参数,从而显著降低微调显存。

  5. 便于本地和边缘部署
    GGUF/llama.cpp、AWQ、GPTQ 等格式常用于本地推理、单卡部署或 CPU/边缘环境。

3. 关键概念

3.1 权重量化、激活量化、KV cache 量化

  • 权重量化:压缩模型参数,是 LLM 量化里最常见的对象。
  • 激活量化:压缩前向过程中的中间激活值,收益大,但更容易影响质量和稳定性。
  • KV cache 量化:长上下文推理时,KV cache 可能占用大量显存;部分推理框架支持 KV cache 量化来节省显存。

3.2 PTQ 和 QAT

  • PTQ(Post-Training Quantization,训练后量化):模型训练完成后再做量化。部署场景最常见,如 GPTQ、AWQ、GGUF 量化。
  • QAT(Quantization-Aware Training,量化感知训练):训练过程中模拟或引入量化影响,让模型适应低精度。成本更高,工程复杂度也更高。

3.3 静态量化和动态量化

  • 静态量化:先用校准数据确定量化参数,之后参数固定。GPTQ、AWQ 通常属于这一类。
  • 动态量化:加载或推理时动态处理,使用更方便,常见代表是 bitsandbytes 的 8-bit/4-bit 加载。

4. 常见量化方法对比

方法常见位宽主要用途是否常需校准数据优点注意点
bitsandbytes LLM.int88-bit推理、加载大模型使用简单,Transformers 集成好加速效果依赖环境
bitsandbytes 4-bit / QLoRA4-bit, NF4/FP4低显存 LoRA 微调微调门槛低,LLaMA-Factory 易用基座冻结,主要训练 LoRA
GPTQ2/3/4/8-bit 常见部署推理精度保持较好,生态成熟量化耗时,依赖校准集和推理 kernel
AWQ3/4-bit 常见部署推理关注关键权重,硬件友好,推理常较快不同框架支持差异明显
HQQ2-8 bit快速量化、无需校准不需要校准,速度快生态和兼容性要按框架确认
EETQ8-bit推理通常否简单快速位宽选择不如 GPTQ/AWQ 丰富
GGUF多种,如 Q4_K_Mllama.cpp/CPU/本地推理转换量化时需要本地生态好,CPU 可用LLaMA-Factory 不直接导出 GGUF,通常用 llama.cpp 转

5. QLoRA 是什么

QLoRA 可以理解为“4-bit 量化基座模型 + LoRA 微调”:

  1. 把预训练基座模型以 4-bit 加载。
  2. 冻结量化后的基座权重。
  3. 插入少量可训练的 LoRA 参数。
  4. 训练时梯度通过量化模型回传,但真正更新的是 LoRA adapter。

QLoRA 论文提出了几个关键点:

  • NF4:适合近似正态分布权重的 4-bit 数据类型。
  • Double Quantization:再量化量化常数,进一步省显存。
  • Paged Optimizers:缓解训练过程中的显存峰值。

6. 微调时量化 vs 导出后量化

6.1 微调时量化:QLoRA

目标是让训练跑得动。

在 LLaMA-Factory 里,典型做法是在 LoRA 训练配置中加入:

finetuning_type:loraquantization_bit:4quantization_method:bitsandbytesquantization_type:nf4double_quantization:true

这表示:用 4-bit 方式加载基座模型,并在其上训练 LoRA。

6.2 导出后量化:GPTQ 等 PTQ

目标是让最终模型更适合部署。

典型流程是:

  1. 先完成 LoRA/QLoRA 微调,得到 adapter。
  2. 如果需要完整模型,先把 LoRA adapter 合并回未量化的基座模型。
  3. 再对合并后的完整模型做导出量化,如 GPTQ。

7. 在 LLaMA-Factory 中怎么使用

7.1 安装依赖

如果使用 CUDA 环境,通常需要安装 LLaMA-Factory 以及 bitsandbytes:

pipinstall-e".[torch,bitsandbytes]"

Windows 平台上 bitsandbytes 兼容性要特别注意。LLaMA-Factory GitHub README 提到,在 Windows 平台启用 QLoRA 需要安装支持对应 CUDA 版本的 bitsandbytes 预编译版本。

7.2 QLoRA 训练配置示例

下面是一个偏通用的 SFT QLoRA 配置示例,可保存为examples/train_lora/qwen_qlora_sft.yaml之类的文件,再用llamafactory-cli train启动。

### modelmodel_name_or_path:Qwen/Qwen3-4B-Instruct-2507trust_remote_code:true### methodstage:sftdo_train:truefinetuning_type:loralora_rank:8lora_target:all### quantizationquantization_bit:4quantization_method:bitsandbytesquantization_type:nf4double_quantization:true### datasetdataset:identity,alpaca_en_demotemplate:qwen3_nothinkcutoff_len:2048max_samples:1000preprocessing_num_workers:16dataloader_num_workers:4### outputoutput_dir:saves/qwen3-4b/qlora/sftlogging_steps:10save_steps:500plot_loss:trueoverwrite_output_dir:truesave_only_model:falsereport_to:none### trainper_device_train_batch_size:1gradient_accumulation_steps:8learning_rate:1.0e-4num_train_epochs:3.0lr_scheduler_type:cosinewarmup_ratio:0.1bf16:trueddp_timeout:180000000resume_from_checkpoint:null

启动:

llamafactory-cli train examples/train_lora/qwen_qlora_sft.yaml

最小理解:

  • quantization_bit: 4:启用 4-bit 加载,是 QLoRA 的关键。
  • quantization_method: bitsandbytes:使用 bitsandbytes 量化加载。
  • quantization_type: nf4:QLoRA 常用 NF4。
  • double_quantization: true:使用双重量化,进一步省显存。
  • finetuning_type: lora:训练 LoRA adapter,而不是全参训练。

7.3 训练时使用 8-bit

如果 4-bit 不稳定,或者显存略充足,可以尝试:

quantization_bit:8quantization_method:bitsandbytes

8-bit 通常比 4-bit 更保守,显存节省少一些,但数值风险也较低。

7.4 使用已经量化好的 GPTQ/AWQ 模型

如果只是加载一个已经 GPTQ/AWQ 量化好的模型,通常直接把model_name_or_path指向对应模型即可,例如:

model_name_or_path:TechxGenus/Meta-Llama-3-8B-Instruct-GPTQ

或:

model_name_or_path:TechxGenus/Meta-Llama-3-8B-Instruct-AWQ

注意:如果模型本身已经是 PTQ 量化模型,再设置quantization_bit不一定会产生你期望的效果。训练、推理、导出的量化入口要分清。

7.5 合并 LoRA

训练得到 LoRA adapter 后,如果希望导出完整模型:

### modelmodel_name_or_path:Qwen/Qwen3-4B-Instruct-2507adapter_name_or_path:saves/qwen3-4b/qlora/sfttemplate:qwen3_nothinktrust_remote_code:true### exportexport_dir:saves/qwen3_sft_mergedexport_size:5export_device:cpuexport_legacy_format:false

执行:

llamafactory-cliexportexamples/merge_lora/qwen3_lora_sft.yaml

重点:合并时使用未量化的基座模型,不要在这个配置里写训练时的quantization_bit: 4

7.6 导出 GPTQ 量化模型

LLaMA-Factory 官方示例里的 GPTQ 导出配置类似:

### modelmodel_name_or_path:Qwen/Qwen3-4B-Instruct-2507template:qwen3_nothinktrust_remote_code:true### exportexport_dir:saves/qwen3_gptqexport_quantization_bit:4export_quantization_dataset:data/c4_demo.jsonlexport_size:5export_device:cpuexport_legacy_format:false

执行:

llamafactory-cliexportexamples/merge_lora/qwen3_gptq.yaml

关键参数:

  • export_quantization_bit:导出量化位宽。
  • export_quantization_dataset:校准数据集路径。
  • export_quantization_nsamples:校准样本数量,默认文档中为 128。
  • export_quantization_maxlen:校准输入最大长度,默认文档中为 1024。

8. 怎么选量化方案

场景推荐优先尝试原因
显存不够,想做 SFT 微调QLoRA 4-bit NF4最成熟的低显存微调路线
显存略够,想更稳一点LoRA + 8-bit 或普通 LoRA质量和稳定性更保守
已有 LoRA,想部署为完整模型先合并,再 GPTQ/AWQ/GGUF部署格式和训练格式分离
Transformers 内推理,想简单省显存bitsandbytes 8-bit/4-bit接入简单
vLLM/TGI 等服务部署看框架支持的 AWQ/GPTQ/FP8推理速度取决于 kernel 支持
CPU/本地客户端推理GGUF + llama.cpp本地生态成熟
极低显存但能接受质量风险3-bit/2-bit/HQQ/AQLM 等需要实际评测,不建议一上来就用

9. 常见坑

  1. 把 QLoRA 和 GPTQ 混为一谈
    QLoRA 是训练策略;GPTQ 是更典型的训练后量化部署方法。

  2. 合并 LoRA 时用了量化基座
    LLaMA-Factory 官方文档提醒,合并 LoRA 时应使用未量化基座,不要设置训练时的quantization_bit

  3. 以为 4-bit 一定更快
    4-bit 一定省显存,但不一定在所有硬件/框架上更快。是否加速取决于 kernel、batch size、模型结构、推理引擎。

  4. 校准数据随便选
    GPTQ/AWQ 等 PTQ 方法的校准数据会影响量化效果,最好接近真实使用场景。

  5. 忽略 bitsandbytes 版本和平台兼容性
    Windows、NPU、ROCm、CUDA 版本都可能影响 bitsandbytes 可用性。遇到错误先核对 PyTorch、CUDA、bitsandbytes 版本。

  6. 以为量化后还能随便全参训练
    低精度权重直接训练往往不稳定。QLoRA 的关键是冻结量化基座,只训练 LoRA adapter。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询