📅 2026年05月21日 · LLM FINE-TUNING TRAINING 深度解析

📌 概述

LLM 微调技术全景:从 SFT 到 RLHF

二、微调技术分类

LLM 微调技术可以分为以下几类:

三、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 进一步简化,甚至不需要参考模型。

🔗 相关开源项目

📚 延伸阅读