📅 2026年05月21日 · LLM FINE-TUNING TRAINING 深度解析
📌 概述
LLM 微调技术全景:从 SFT 到 RLHF
二、微调技术分类
LLM 微调技术可以分为以下几类:
- SFT (Supervised Fine-Tuning):使用标注数据进行监督学习,最基础的微调方式
- LoRA / QLoRA:低秩适配,只训练少量参数,大幅降低显存需求
- DPO (Direct Preference Optimization):直接从偏好数据学习,无需训练奖励模型
- RLHF (Reinforcement Learning from Human Feedback):通过人类反馈强化学习对齐
- ORPO:无需参考模型的偏好优化,简化 DPO 流程
三、LoRA 微调详解
LoRA 是当前最流行的高效微调方法,核心思想是将权重更新分解为低秩矩阵:
# LoRA 数学原理
# 原始权重: W ∈ R^(d×d)
# LoRA 分解: W + ΔW = W + B × A
# 其中 B ∈ R^(d×r), A ∈ R^(r×d), r << d (通常 r=8,16,32,64)
# 参数量对比 (以 7B 模型为例)
# 全量微调: 7B 参数
# LoRA (r=16): ~20M 参数 (0.3% 的原始参数)
# 使用 PEFT 库实现 LoRA
from peft import LoraConfig, get_peft_model
lora_config = LoraConfig(
r=16, # LoRA 秩
lora_alpha=32, # 缩放因子
target_modules=["q_proj", "v_proj", "k_proj", "o_proj"], # 目标层
lora_dropout=0.05,
bias="none",
task_type="CAUSAL_LM"
)
model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2.5-7B")
model = get_peft_model(model, lora_config)
model.print_trainable_parameters()
# 输出: trainable params: 19,988,480 || all params: 7,635,804,160 || 0.26%
四、DPO vs RLHF
对齐技术是让 LLM 更「听话」的关键:
# DPO (Direct Preference Optimization) 核心思想
# 不需要训练单独的奖励模型,直接从偏好对学习
# 输入格式
preference_data = [
{
"prompt": "写一首关于春天的诗",
"chosen": "春风拂面柳丝长,...", # 人类偏好的回答
"rejected": "春天到了,天气变暖了。", # 人类不偏好的回答
},
]
# DPO Loss 函数
def dpo_loss(policy_chosen_logps, policy_rejected_logps,
reference_chosen_logps, reference_rejected_logps, beta=0.1):
chosen_rewards = beta * (policy_chosen_logps - reference_chosen_logps)
rejected_rewards = beta * (policy_rejected_logps - reference_rejected_logps)
loss = -F.logsigmoid(chosen_rewards - rejected_rewards).mean()
return loss
DPO 相比 RLHF 的优势:无需训练奖励模型、无需在线采样、训练更稳定。ORPO 进一步简化,甚至不需要参考模型。
🔗 相关开源项目
- hiyouga/LlamaFactory ⭐ 71.5k - Unified Efficient Fine-Tuning of 100+ LLMs & VLMs (ACL 2024)
- rasbt/LLMs-from-scratch ⭐ 95.3k - Implement a ChatGPT-like LLM in PyTorch from scratch, step b
- hiyouga/LlamaFactory ⭐ 71.5k - Unified Efficient Fine-Tuning of 100+ LLMs & VLMs (ACL 2024)
📚 延伸阅读
- arXiv AI - 最新 AI 研究论文
- HuggingFace Papers - 每日精选论文
- Lil'Log - Lilian Weng 的技术博客
- Prompt Engineering Guide - 提示工程指南