SimPO(Simple Preference Optimization)是一种无需参考模型的偏好优化方法,用于大语言模型对齐。资料称其性能优于 DPO,在 AlpacaEval 2.0 上提升约 6.4 分,同时不需要维护参考模型。该技能以对齐训练手册(alignment-handbook)为基础,给出从环境搭建到启动训练的完整流程。
用途:适用于拥有偏好数据(chosen/rejected 成对样本)、希望在有限算力下完成模型对齐训练的场景。资料建议在需要比 DPO 更简单的训练流程、追求更好性能、单节点训练即可满足需求时使用 SimPO。
主要能力:提供 SimPO 训练脚本与配置文件示例,覆盖三种典型工作流:从基座模型训练(Mistral 7B)、微调指令模型(Llama 3 8B,可加入 SFT 正则以保留能力)、以及数学/代码等推理密集型任务(较低学习率、较高 beta 与 margin)。关键超参数包括 beta(奖励缩放,示例取 2.0–10.0)、gamma_beta_ratio(目标 margin,0–1)、loss_type(sigmoid 或 hinge)、sft_weight(可选 SFT 正则)、学习率(约 3e-7 至 1e-6)、批大小与梯度累积步数。
使用方式:先创建 conda 环境(python=3.10),安装 PyTorch 2.2.2、alignment-handbook 与 Flash Attention 2,然后使用 accelerate 配合 DeepSpeed ZeRO-3 配置启动 scripts/run_simpo.py,并传入对应的 yaml 训练配置。资料还提供损失函数、超参数调优与数据集准备三份参考文档(references/loss-functions.md、references/hyperparameters.md、references/datasets.md)。
适用场景与限制:推荐使用 NVIDIA A100/H100 GPU,7B 模型约需 1×A100 40GB,8B 模型约需 2×A100 40GB,70B 模型约需 8×A100 80GB;建议使用 BF16 混合精度,并通过 DeepSpeed ZeRO-3、梯度检查点和 Flash Attention 2 优化显存。常见问题包括损失发散(降低学习率或 beta)、模型遗忘能力(加入 SFT 正则)、偏好区分不佳(提高 beta 与 margin)、显存不足(减小批大小并调整梯度累积、启用梯度检查点)。若需要多节点分布式训练或 PPO/GRPO,资料建议转向 OpenRLHF;若需在一个框架内使用多种方法可选 TRL。训练效果、速度与具体数值以实际环境和资料所述为准。