ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

大语言模型对齐与微调:原理解析与工程实践

大语言模型对齐与微调:原理解析与工程实践 大语言模型对齐与微调原理解析与工程实践摘要当前大语言模型LLM的训练范式已形成一套相对成熟的四阶段流水线预训练Pre-Training, PT、指令微调Supervised Fine-Tuning, SFT、偏好对齐Preference Alignment以及能力精化Capability Refinement。其中PT阶段通过海量无标注文本学习语言统计规律与世界知识是模型能力的基石SFT阶段通过人工构建的指令-回答对赋予模型对话格式与指令跟随能力是构建对话模型的关键环节偏好对齐阶段旨在使模型输出符合人类价值观与偏好主流方法包括DPO与PPORLHF能力精化阶段则针对推理等特定能力进行强化学习优化。本文系统梳理上述四阶段的技术原理与工程实现要点重点分析DPO与PPO在数学推导、资源消耗与训练稳定性方面的差异并深入探讨PAFTParallel Fine-Tuning并行微调范式。PAFT通过在同一基座模型上并行训练SFT与DPO避免了串行流水线中DPO可能覆盖SFT格式能力的缺陷结合参数融合技术如TIES、DARE TIES实现模型合并在HuggingFace Open LLM Leaderboard上取得了优异表现。本文亦客观讨论了各方法的局限性与适用场景为工程实践中的方案选型提供参考。技术原理与核心方法四阶段训练流水线大语言模型的完整训练流程可概括为以下四个阶段第一阶段预训练PT。在万亿级token的无标注文本上通过next-token prediction目标函数学习语言的统计规律与世界知识。该阶段产出基座模型Base Model计算成本最高通常需要数千张GPU持续运行数月。第二阶段指令微调SFT。使用数千至数万条人工编写的指令-回答对对基座模型进行监督微调使其学会对话格式与指令跟随能力。SFT是所有对话模型的必经之路通常训练1–2个epoch以防止过拟合。第三阶段偏好对齐Preference Alignment。使模型回答符合人类偏好包含三种可选路径DPO、PPORLHF或跳过。第四阶段能力精化Capability Refinement。针对推理等特定能力进行强化学习训练作为流水线的可选优化步骤。DPO的数学推导与实现DPODirect Preference Optimization从最大熵逆强化学习框架出发推导出奖励函数可表示为策略与参考策略的对数比r(x,y)β⋅log⁡π(y∣x)πref(y∣x)β⋅log⁡Z(x)r(x,y) \beta \cdot \log \frac{\pi(y|x)}{\pi_{ref}(y|x)} \beta \cdot \log Z(x)r(x,y)β⋅logπref​(y∣x)π(y∣x)​β⋅logZ(x)代入Bradley-Terry偏好模型后配分函数Z(x)被抵消得到DPO的损失函数LDPO−E[log⁡σ(β⋅log⁡πθ(yw∣x)πref(yw∣x)−β⋅log⁡πθ(yl∣x)πref(yl∣x))]\mathcal{L}_{DPO} -\mathbb{E}\left[\log\sigma\left(\beta \cdot \log\frac{\pi_\theta(y_w|x)}{\pi_{ref}(y_w|x)} - \beta \cdot \log\frac{\pi_\theta(y_l|x)}{\pi_{ref}(y_l|x)}\right)\right]LDPO​−E[logσ(β⋅logπref​(yw​∣x)πθ​(yw​∣x)​−β⋅logπref​(yl​∣x)πθ​(yl​∣x)​)]其中ywy_wyw​为偏好数据中的胜出回答yly_lyl​为落败回答β\betaβ为温度参数πref\pi_{ref}πref​为参考策略通常为SFT模型。DPO的核心实现逻辑如下# DPO损失函数核心实现defdpo_loss(policy_model,ref_model,batch,beta0.1): 计算DPO损失 Args: policy_model: 当前策略模型 (pi_theta) ref_model: 参考模型 (pi_ref), 通常冻结梯度 batch: 包含 prompt, chosen, rejected 的偏好数据 beta: 温度参数控制偏离参考策略的程度 # 分别计算策略模型和参考模型在 chosen/rejected 上的对数概率log_pi_chosenpolicy_model.log_prob(batch.prompt,batch.chosen)log_pi_rejectedpolicy_model.log_prob(batch.prompt,batch.rejected)withtorch.no_grad():log_ref_chosenref_model.log_prob(batch.prompt,batch.chosen)log_ref_rejectedref_model.log_prob(batch.prompt,batch.rejected)# 计算策略与参考策略的对数比log_ratio_chosenlog_pi_chosen-log_ref_chosen log_ratio_rejectedlog_pi_rejected-log_ref_rejected# DPO损失: -log(sigma(beta * (log_ratio_chosen - log_ratio_rejected)))logitsbeta*(log_ratio_chosen-log_ratio_rejected)loss-torch.nn.functional.logsigmoid(logits).mean()returnlossPPO/RLHF的四模型架构PPOProximal Policy Optimization作为RLHF的核心算法需要同时维护四个模型组件actor策略模型、critic价值模型、reference参考模型和reward model奖励模型。相比DPO仅需策略模型与参考模型PPO的工程复杂度显著更高。PAFT并行微调范式PAFTParallel Fine-Tuning提出了一种替代传统串行pipeline的训练范式。其核心发现包括偏好对齐如DPO天然导致模型参数稀疏化SFT训练产生的是自然稠密模型需要L1正则化进行稀疏化处理才能有效合并使用TIES或DARE TIES等参数融合方法进行模型合并可解决符号冲突问题。PAFT的关键在于将SFT与DPO在同一基座模型上并行训练两者各自独立、互不干扰训练完成后通过参数融合合并。这避免了串行训练中DPO可能覆盖SFT学到的格式能力的问题。# PAFT并行训练与模型合并伪代码classPAFTTrainer:def__init__(self,base_model,sft_data,preference_data):self.base_modelbase_model# 并行启动SFT和DPO训练self.sft_modelself._train_sft(base_model,sft_data)self.dpo_modelself._train_dpo(base_model,preference_data)def_train_sft(self,model,data):# SFT训练添加L1正则化促进稀疏化# 标准SFT损失 L1正则化# loss ce_loss lambda * l1_norm(params)passdef_train_dpo(self,model,data):# DPO训练天然产生稀疏化passdefmerge_models(self,methoddare_ties):# 使用参数融合方法合并SFT与DPO模型# 支持: linear, slerp, task_arithmetic, ties, dare_tiesifmethoddare_ties:# DARE TIES: TIES 动态对齐正则化# 1. 计算各模型相对于base的增量参数# 2. 选择性保留重要权重解决符号冲突# 3. 动态对齐正则化merged_paramsdare_ties_merge(self.base_model,self.sft_model,self.dpo_model)returnmerged_params对比分析DPO与PPO横向对比对比维度DPOPPO (RLHF)模型组件数量2个policy reference4个actor critic reference reward显存需求较低较高需额外加载critic和reward model训练稳定性较稳定对超参数敏感训练不稳定超参数调优难度较低主要调β较高涉及多个模型的超参数协调训练时间7B模型1–2天5–7天数据效率较高相对较低复杂任务效果潜力良好略强是否需要独立奖励模型否是工程实现复杂度低高PAFT与传统串行Pipeline对比对比维度传统串行Pipeline (SFT → DPO)PAFT并行范式训练流程先SFT后DPO串行执行SFT与DPO并行训练最后合并格式能力保留DPO可能覆盖SFT学到的格式SFT与DPO互不干扰格式能力完整保留模型合并需求无需合并需参数融合TIES/DARE TIES等SFT稀疏化处理不需要需要L1正则化训练效率串行耗时累加并行可缩短总训练时间效果表现基准水平HuggingFace Open LLM Leaderboard Rank #1工程实践要点预训练阶段PT阶段的计算成本最高资源规划需提前数月。万亿级token训练通常需要几千张GPU持续运行需充分考虑硬件故障恢复、checkpoint管理与数据质量清洗。SFT阶段SFT是构建对话模型最关键的一步数据质量远比数量重要。几千到几万条高质量人工标注数据即可取得显著效果。训练轮数应控制在1–2个epoch过多轮次易导致过拟合与多样性下降。偏好对齐选型资源有限或追求快速迭代时优先选择DPO。DPO无需独立奖励模型训练流程简单7B模型1–2天即可完成对齐。追求极致效果且资源充足时可考虑PPO。PPO在复杂任务上效果潜力略强但需投入更多工程资源处理四模型协调与超参数调优。若业务场景对偏好对齐需求不强可直接跳过该阶段。PAFT实践注意事项SFT训练时必须添加L1正则化使SFT模型参数稀疏化否则与DPO模型的稀疏模式不兼容合并效果会显著下降。模型合并方法的选择对最终效果影响较大。DARE TIES在当前实验中表现最优但不同任务可能需要尝试多种合并策略。并行训练时需注意SFT与DPO的学习率调度策略避免一方收敛过快导致合并时权重失衡。能力精化阶段推理RL等能力精化步骤为可选优化建议在SFT与偏好对齐完成后再进行。该阶段需要专门构建推理类训练数据且强化学习的训练稳定性仍需关注。局限性与客观评价DPO的局限性DPO的数学推导依赖于Bradley-Terry偏好模型的假设当偏好数据存在噪声或标注不一致时DPO的性能可能显著下降。此外DPO在极端复杂任务上的效果上限可能低于PPO因为其隐式奖励函数的表达能力受限于策略与参考策略的对数比形式。PPO的工程挑战PPO需要同时维护四个模型显存占用高训练过程中的reward hacking、KL散度失控等问题需要精细的超参数调节与监控。工程实现门槛较高不适合资源有限或工程团队经验不足的场景。PAFT的假设局限PAFT的有效性建立在SFT模型可通过L1正则化有效稀疏化以及DPO天然稀疏化两个假设之上。当基座模型架构或训练数据分布发生较大变化时这两个假设的成立程度可能发生变化合并效果的不确定性增加。此外参数融合方法TIES、DARE TIES等本身引入了额外的超参数如保留比例、正则化系数需要针对具体任务进行调优。SFT过拟合风险SFT阶段数据量通常远小于PT阶段1–2个epoch的约束虽能缓解过拟合但在小数据集上仍可能出现模型记忆特定指令模板而非真正理解指令意图的情况。评估SFT效果时需关注泛化能力而非仅看训练集指标。偏好对齐的数据依赖无论DPO还是PPO对齐效果高度依赖偏好数据的质量与覆盖度。偏好数据的标注者偏差、领域覆盖不足等问题会直接传导至模型行为且难以通过算法层面完全消除。整体pipeline的累积误差四阶段流水线中每个阶段的输出都是下一阶段的输入前序阶段的缺陷会在后续阶段被放大。例如PT阶段的知识缺失无法通过SFT弥补SFT的格式问题可能在DPO阶段被进一步固化。各阶段的质量把控与评估体系至关重要。参考与延伸阅读Rafailov, R., et al. “Direct Preference Optimization: Your Language Model is Secretly a Reward Model.” NeurIPS 2023.Ouyang, L., et al. “Training language models to follow instructions with human feedback.” NeurIPS 2022. (InstructGPT / RLHF)Pentyala, S., et al. “PAFT: A Parallel Training Paradigm for Effective LLM Fine-Tuning.” arXiv:2406.17923, June 2024.Yadav, P., et al. “TIES-Merging: Resolving Interference When Merging Models.” NeurIPS 2023.Yu, L., et al. “Language Models are Super Mario: Absorbing Abilities from Homologous Models as a Free Lunch.” ICML 2024. (DARE)Schulman, J., et al. “Proximal Policy Optimization Algorithms.” arXiv:1707.06347, 2017.Touvron, H., et al. “Llama 2: Open Foundation and Fine-Tuned Chat Models.” arXiv:2307.09288, 2023.
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进