EN

LLM 微调实战:LoRA、QLoRA 与 RLHF(2025版)

使用参数高效微调技术,将基础模型高效适配到你的领域

返回教程列表🌐 Read in English
高级24 分钟

LLM 微调实战:LoRA、QLoRA 与 RLHF(2025版)

使用参数高效微调技术,将基础模型高效适配到你的领域

微调 LLM 可以在不从头训练的情况下,将强大的基础模型适配到特定领域。本指南涵盖 LoRA 和 QLoRA 的参数高效微调、数据集准备与质量过滤、指令微调格式、RLHF 和 DPO 对齐、在消费级 GPU 上使用量化进行微调、使用领域基准评估,以及使用 vLLM 或 TGI 部署微调模型用于生产服务。

LLM 微调实战:LoRA、QLoRA 与 RLHF

何时微调 vs. 提示工程

使用提示工程的情况:GPT-4/Claude/Gemini 配合示例效果良好,任务多样,每次请求的成本可接受,迭代速度重要。

使用微调的情况:输出格式一致至关重要(结构化 JSON 提取),需要领域特定术语和知识,延迟或成本要求使用更小模型,隐私要求本地运行,指令遵循质量需要提升。

参数高效微调

LoRA(低秩适配)

通过向冻结的模型权重添加低秩分解矩阵,仅微调少量参数。无需更新全部 7B 参数,LoRA 仅更新约 4M 参数(占总参数的 0.06%),在 10 倍更低的内存和计算成本下达到相当的性能。

架构:冻结原始权重矩阵 W,添加可训练矩阵 A 和 B,其中 A 为 d×r,B 为 r×k(r << d, k)。前向传播时:h = Wx + (BA)x * (alpha/r)。仅训练 A 和 B。训练后合并:W_merged = W + BA * (alpha/r)。

QLoRA

将 4 位量化与 LoRA 结合:以 4 位加载基础模型(NF4 量化),以全精度(bf16)添加 LoRA 适配器。仅微调适配器。这使得可以在单个 48GB GPU 上微调 65B 参数模型。

关键组件:bitsandbytes 用于 4 位量化,PEFT 库用于 LoRA 适配器,Hugging Face transformers 用于模型加载,TRL 用于指令微调。

数据集准备

指令微调格式

格式:{"system": "你是一个有用的医疗文档助手...", "user": "总结这份临床记录...", "assistant": "患者:45 岁男性..."}。

质量过滤:去除重复项,过滤低质量回复(过短、包含错误),确保主题和风格的多样性,平衡分类任务的类别。

数据集大小:1,000-10,000 个高质量指令示例通常优于 100,000 个低质量示例。质量 >> 数量。

数据增强

LLM 生成增强:使用 GPT-4 改写现有示例,从种子数据生成新示例,创建对抗性示例以提高鲁棒性。在纳入训练前验证生成数据的质量。

使用 PEFT + TRL 的微调设置

以 4 位量化加载基础模型:from_pretrained 设置 load_in_4bit=True,bnb_4bit_compute_dtype=torch.float16,bnb_4bit_quant_type="nf4"。应用 LoRA 配置:r=16,lora_alpha=32,target_modules=["q_proj","v_proj"],lora_dropout=0.05,bias="none",task_type="CAUSAL_LM"。

使用 TRL 的 SFTTrainer 进行监督微调:设置 max_seq_length=2048,per_device_train_batch_size=4,gradient_accumulation_steps=4(有效批量大小 16),learning_rate=2e-4,num_train_epochs=3,warmup_ratio=0.03。

对齐:RLHF 和 DPO

RLHF(基于人类反馈的强化学习)

三个阶段:在高质量演示上进行监督微调(SFT),奖励模型训练(人类对回复对的偏好),PPO 强化学习(优化 LLM 以最大化奖励模型得分)。

实现复杂——需要奖励模型训练和 PPO 稳定性调优。

DPO(直接偏好优化)

RLHF 的简化替代方案:直接从偏好数据(选择 vs. 拒绝的回复对)优化,无需单独的奖励模型。质量与 RLHF 相同,训练更简单。DPO 损失函数直接调整模型权重,使其偏好选择的回复而非拒绝的回复。

数据集格式:{"prompt": "...", "chosen": "高质量回复...", "rejected": "低质量回复..."}。使用 TRL 的 DPOTrainer。

评估

领域基准:创建 200-500 个代表生产查询的测试示例。评估:任务准确率(精确匹配、ROUGE、BLEU),输出格式合规性(有效 JSON、必填字段),安全性(对有害查询的拒绝率),延迟和吞吐量。

回归测试:确保微调模型在通用能力(MMLU、HellaSwag)上不退化。使用 LLM-as-judge 进行大规模定性评估。

生产服务

vLLM 高吞吐服务

vLLM 通过 PagedAttention(高效 KV 缓存管理)提供比朴素服务高 2-24 倍的吞吐量。使用 vllm.LLM 加载带有 LoRA 适配器的微调模型,设置 enable_lora=True。部署前合并适配器以获得最简单的服务设置。

Hugging Face 文本生成推理(TGI)

生产就绪的服务,支持连续批处理、量化、流式响应和 OpenAI 兼容 API。使用 Docker 部署:docker run --gpus all 并挂载模型卷和端口映射。

生产量化

训练后量化将模型大小减少 2-4 倍,质量损失极小:GPTQ(4 位,CPU 兼容),AWQ(4 位,比 GPTQ 更快),GGUF(llama.cpp,CPU 推理)。根据推理硬件和延迟要求选择。

微调 + 使用 vLLM 的生产服务可实现企业级 LLM 性能,对于高容量用例,成本仅为 GPT-4 API 的一小部分。

相关工具

Hugging FacePEFTTRLvLLMbitsandbytesAxolotl