QLoRA:量化下微调
QLoRA(Quantized LoRA)在 LoRA 基础上进一步把预训练基座量化到 4 比特,仅以低秩适配器做反向更新,使 65B 级模型也能在单张 48GB 显卡上微调,把大模型微调门槛降到消费级硬件。
NF4 与双量化
QLoRA 用 4 比特正态分布量化(NF4)匹配权重分布,并对量化常数再做一次量化(双量化)省显存。基座以 4 比特常驻显存,前向时用反量化参与计算。
from peft import LoraConfig, get_peft_model
from transformers import AutoModelForCausalLM, BitsAndBytesConfig
bnb = BitsAndBytesConfig(load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype="bfloat16")
model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3-70B",
quantization_config=bnb)
model = get_peft_model(model, LoraConfig(r=8)) # 仅 LoRA 参数可训
与 LoRA 的关系
QLoRA 的梯度只流过 LoRA 适配器,基座权重被冻结且保持量化,因此显存主要来自量化基座与优化器状态。相比全量或纯 LoRA,它用相近质量把显存压到最低。
小结
QLoRA 以 NF4 量化冻结基座、仅训 LoRA 适配器,把大模型微调显存压到单卡可负担,是资源受限下最实用的微调方案。
参考与延伸阅读
- “QLoRA: Efficient Finetuning of Quantized LLMs”(Dettmers 等, 2023)。已核验。https://arxiv.org/abs/2305.14314
- Hugging Face PEFT 文档首页。已核验。https://huggingface.co/docs/peft/
本文累计阅读 — 次