ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

SimPO 超参数调优完全指南:从 Learning Rate 到 Gamma-Beta Ratio 的实战选参手册(AI-Research-SKILLs)

SimPO 超参数调优完全指南:从 Learning Rate 到 Gamma-Beta Ratio 的实战选参手册(AI-Research-SKILLs) SimPO 超参数调优完全指南从 Learning Rate 到 Gamma-Beta Ratio 的实战选参手册AI-Research-SKILLs【免费下载链接】AI-Research-SKILLsComprehensive open-source library of AI research and engineering skills for any AI model. Package the skills and your claude code/codex/gemini agent will be an AI research agent with full horsepower. Maintained by Orchestra Research.项目地址: https://gitcode.com/gh_mirrors/ai/AI-Research-SKILLsSimPOSimple Preference Optimization是一种无需参考模型的偏好优化方法相比 DPO 省去了参考模型的前向与反向传播训练更简单、更高效。本指南以 06-post-training/simpo/references/hyperparameters.md 为骨架系统梳理学习率Learning Rate、Betaβ、Gamma-Beta 比值γ/β与 SFT Weight 四大核心超参数的选择逻辑、推荐范围与调优流程并结合 06-post-training/simpo/SKILL.md 中的训练工作流与 loss-functions.md 中的数学定义给出从 1B 到 70B 不同规模模型的完整可运行配置。读完本文你将掌握 SimPO 训练从参数默认值到针对性调优的完整方法论能够独立为通用对话、代码生成、数学推理等任务挑选合理的超参数组合并诊断训练异常。一、为什么 SimPO 的超参数与 DPO 不同在进入参数细节之前需要先理解 SimPO 的独特设计因为它直接决定了每个超参数的取值逻辑。DPO 的损失函数需要参考模型 π_ref 参与计算详见 06-post-training/simpo/references/loss-functions.mdL_DPO -E[log σ(β * log(π_θ(y_w|x)/π_ref(y_w|x)) - β * log(π_θ(y_l|x)/π_ref(y_l|x)))]而 SimPO 彻底移除参考模型直接以策略自身的平均对数概率作为奖励L_SimPO -log σ(β * (log π_θ(y_w|x) - log π_θ(y_l|x) - γ/β))这种设计带来两个直接影响超参数的后果Beta 的量纲完全不同。DPO 的 β 是 KL 惩罚系数典型值在 0.010.1 之间见 06-post-training/trl-fine-tuning/references/dpo-variants.md 中对 β0.1 的默认设置而 SimPO 的 β 直接作用于平均对数概率其量级通常为 -1-3因此推荐值必须放大到 2.010.0 才能产生有效的梯度信号。新增了 γ/β 这一维度的目标间隔控制。DPO 的隐式正则来自参考模型约束SimPO 则用显式的 γ/β 目标间隔替代成为对齐强度的独立调节旋钮。正是这两点差异使得 SimPO 拥有四个需要协同调优的核心参数学习率、β、γ/β 比值、SFT Weight。二、Learning Rate学习率最重要的超参数2.1 按模型规模的推荐区间学习率是 SimPO 训练中最关键原文档标注 Most critical的超参数。偏好优化发生在 SFT 之后模型已经收敛在良好区域学习率过高会直接破坏已有能力因此整体取值远低于常规 SFT通常为 1e-5 量级模型规模学习率说明1B-3B5e-7 到 1e-6上界取较大值相对安全7B-8B3e-7 到 5e-7标准区间13B-30B1e-7 到 3e-7取低值以保证稳定性70B5e-8 到 1e-7非常保守2.2 按任务类型的推荐区间任务类型同样影响学习率选择。需要精确推理的任务代码、数学对参数扰动更敏感应使用更低的学习率任务学习率原因通用对话5e-7标准代码生成3e-7需要精确推理数学推理3e-7谨慎优化创意写作1e-6可以更激进2.3 学习率过高与过低的症状以 7B 模型为例hyperparameters.md 给出了明确的分界过高 1e-6损失发散loss divergence、灾难性遗忘、训练不稳定过低 1e-7收敛极慢、可能无法在预算步数内完成、欠训练undertraining最优3e-75e-7稳定收敛、最终性能良好、训练高效。2.4 配置示例# Mistral 7B通用对话 learning_rate: 5e-7 num_train_epochs: 1 warmup_ratio: 0.1 lr_scheduler_type: cosine# Llama 3 8B推理任务 learning_rate: 3e-7 num_train_epochs: 1 warmup_ratio: 0.1 lr_scheduler_type: cosine# Gemma 2 9B创意写作 learning_rate: 1e-6 num_train_epochs: 1 warmup_ratio: 0.1 lr_scheduler_type: linear注意创意写作场景使用了linear调度器其余任务使用cosinewarmup_ratio 统一取 0.1为训练初期提供稳定的预热期。三、Betaβ奖励缩放因子3.1 推荐值与偏好强度β 的作用是把平均对数概率差值缩放成奖励信号。由于 SimPO 直接使用策略自身的平均对数概率β 的推荐区间为2.010.0——这比 DPO 的 0.010.1 高出两个数量级原因见第一节。按照偏好数据的清晰程度选择Beta偏好强度适用场景1.0-2.0弱偏好差异微妙的场景2.0-5.0标准通用对齐5.0-10.0强偏好非常明确的数据默认值2.02.5。3.2 β 取值不当的症状过低 2.0奖励信号弱、偏好学习缓慢、可能欠拟合过高 10.0奖励信号过强、有过拟合风险、可能忽略弱偏好样本最优2.0-5.0奖励缩放均衡、训练稳定、泛化良好。3.3 β 与 γ 的协同关系β 与 γ/β 比值共同决定目标间隔落在奖励空间还是对数概率空间奖励空间reward space中的目标间隔 γ 对数概率空间logit space中的目标间隔 γ / β换算示例beta: 2.0 gamma_beta_ratio: 0.5 # 有效 gamma 2.0 * 0.5 1.03.4 配置示例# 弱偏好小间隔 beta: 2.0 gamma_beta_ratio: 0.3 # Small margin # 标准默认 beta: 2.5 gamma_beta_ratio: 0.5 # Default # 强偏好更大间隔 beta: 5.0 gamma_beta_ratio: 0.7 # Larger margin四、Gamma-Beta Ratioγ/β目标间隔旋钮4.1 推荐值与场景γ/β 比值把目标间隔从 β 中解耦出来取值范围0.01.0默认0.5比值间隔大小适用场景0.0-0.3小偏好数据含噪/差异弱0.4-0.6标准通用场景0.7-1.0大偏好非常明确4.2 γ 取值不当的症状过低 0.3目标间隔小、对齐不够激进、更保守过高 0.7目标间隔大、对齐更强、更激进、对数据质量要求更高最优0.4-0.6间隔均衡、训练稳定、对齐效果好。4.3 数学含义它如何改变决策边界在损失函数层面γ/β 直接参与 logits 的平移logits pi_logratios - gamma_beta_ratio loss -log(sigmoid(beta * logits))解读gamma_beta_ratio平移了决策边界decision boundary比值越大要求 chosen 与 rejected 的平均对数概率差越大才能被判为偏好正确它控制的是偏好必须有多清晰——比值越大模型越挑剔。结合 loss-functions.md 中的数值示例可以直观理解若 chosen 平均对数概率为 -1.2、rejected 为 -2.5则pi_logratios 1.3γ/β0.5 时 logits 0.8最终 sigmoid 损失约 0.184。如果把 γ/β 提升到 0.8logits 降到 0.5损失随之增大模型必须进一步拉开两者差距才能降低损失。4.4 配置示例# 含噪偏好更小间隔、更宽容 gamma_beta_ratio: 0.3 # 标准默认 gamma_beta_ratio: 0.5 # 高质量偏好更大间隔、更严格 gamma_beta_ratio: 0.8五、SFT Weight能力保持的安全绳5.1 推荐值SFT Weight 取值范围0.01.0默认0.0即不引入 SFT 正则。它决定总损失中叠加多少比例的 SFTchosen 响应的交叉熵损失用于对抗灾难性遗忘模型类型SFT Weight原因Base 模型0.0无先前能力需要保持Instruct 模型0.05-0.1保持指令跟随能力Chat 模型0.1-0.2保持对话技能5.2 取值不当的影响零 SFT0.0纯偏好优化可能遗忘既有能力适合 base 模型低 SFT0.05-0.1均衡方案推荐用于 instruct 模型轻微保持能力高 SFT 0.2强能力保持但偏好对齐被稀释可能削弱对齐收益。5.3 权衡公式Total Loss SimPO Loss (sft_weight * SFT Loss)对应 loss-functions.md 中的实现逻辑sft_loss -policy_chosen_logps当sft_weight 0时叠加进总损失。例如sft_weight: 0.1 # 90% 偏好优化 10% 能力保持5.4 配置示例# Base 模型无 SFT model_name_or_path: mistralai/Mistral-7B-v0.1 sft_weight: 0.0 # Instruct 模型轻量 SFT model_name_or_path: meta-llama/Meta-Llama-3-8B-Instruct sft_weight: 0.1 # Chat 模型适度 SFT model_name_or_path: HuggingFaceH4/zephyr-7b-beta sft_weight: 0.2六、按模型规模的完整推荐配置将上述四个参数组合hyperparameters.md 给出了三档按规模的开箱即用配置6.1 7B 模型Mistral、Llama 3learning_rate: 5e-7 beta: 2.0 gamma_beta_ratio: 0.5 sft_weight: 0.0 # instruct 模型改为 0.1 num_train_epochs: 1 per_device_train_batch_size: 2 gradient_accumulation_steps: 46.2 8B-13B 模型learning_rate: 3e-7 beta: 2.5 gamma_beta_ratio: 0.5 sft_weight: 0.1 # 若为 instruct 模型 num_train_epochs: 1 per_device_train_batch_size: 1 gradient_accumulation_steps: 86.3 70B 模型learning_rate: 1e-7 beta: 2.0 gamma_beta_ratio: 0.5 sft_weight: 0.05 num_train_epochs: 1 per_device_train_batch_size: 1 gradient_accumulation_steps: 16可以看到三条规律模型越大学习率越低SFT Weight 在 instruct/chat 模型上才需要大于 0梯度累积步数随模型增大而增大以维持合理的有效批大小。七、Batch Size 与梯度累积显存受限下的有效批大小7.1 有效批大小公式Effective Batch Size per_device_batch_size * num_gpus * grad_accum_steps推荐的有效批大小注意这是偏好对数量不是 token 数7B128-25613B64-12870B32-647.2 不同硬件拓扑下的配置# 单卡 A100 40GBper_device1累积 128 步 per_device_train_batch_size: 1 gradient_accumulation_steps: 128 # 有效批 128 # 4 卡 A100 40GB per_device_train_batch_size: 2 gradient_accumulation_steps: 16 # 有效批 2*4*16 128 # 8 卡 A100 80GB per_device_train_batch_size: 2 gradient_accumulation_steps: 8 # 有效批 2*8*8 128三种配置都锚定有效批大小 ≈128这正是 7B 模型推荐区间的下限。结合 SKILL.md 中的硬件建议7B 模型可用 1× A100 40GBDeepSpeed ZeRO-38B 需要 2× A100 40GB70B 需要 8× A100 80GB训练时建议开启gradient_checkpointing: true并配合 Flash Attention 2 与 BF16 混合精度来降低显存占用。八、Loss TypeSigmoid 还是 HingeSimPO 支持两种参考模型无关的损失类型详见 loss-functions.md# Sigmoid默认推荐 loss_type: sigmoid label_smoothing: 0.0 # Hinge实验性 loss_type: hinge # hinge 不使用 label smoothingSigmoid默认L -log σ(β * logits) * (1 - ε) - log σ(-β * logits) * ε梯度平滑连续具有概率解释与高 β 值配合良好是绝大多数任务的默认选择。Hinge实验性L max(0, 1 - β * logits)即torch.relu(1 - beta * logits)属于间隔式SVM 风格损失梯度在 margin 处不连续可得到更稀疏的解。仅建议用于间隔型任务或实验目的——一般情况下坚持用 sigmoid。当偏好标签存在噪声时可以在 sigmoid 损失上开启标签平滑label_smoothing: 0.1 # 10% 平滑用于噪声偏好九、系统化调优流程hyperparameters.md 给出了一个三步调优法配合训练日志中的指标逐层递进9.1 第一步从默认值起步learning_rate: 5e-7 # 针对 7B beta: 2.0 gamma_beta_ratio: 0.5 sft_weight: 0.0 # instruct 模型改为 0.1 loss_type: sigmoid9.2 第二步每 100 步监控三类指标损失曲线应平滑下降奖励间隔reward margin应持续增大。reward margin 的计算方式为chosen_rewards.mean() - rejected_rewards.mean()其中chosen_rewards beta * policy_chosen_logps.detach()见 loss-functions.mdchosen/rejected 的平均对数概率应逐渐分离。典型参考值chosen 在 -1.0-2.0越大越好rejected 在 -2.0-4.0越小越差。两者都低于 -10 说明模型没在学都大于 0 则可能数值不稳定。9.3 第三步按症状定向调整症状调整动作损失发散学习率 5e-7 → 3e-7β 2.0 → 1.0损失过早平台期学习率 5e-7 → 1e-6β 2.0 → 5.0模型遗忘能力sft_weight 0.0 → 0.2偏好分离不充分β 2.0 → 5.0γ/β 0.5 → 0.8训练 OOMper_device_batch_size → 1gradient_accumulation_steps 按比例增大以维持有效批大小开启 gradient_checkpointing# 损失发散时 learning_rate: 3e-7 # 从 5e-7 降低 beta: 1.0 # 从 2.0 降低 # 损失过早平台期 learning_rate: 1e-6 # 从 5e-7 提高 beta: 5.0 # 从 2.0 提高 # 模型遗忘能力 sft_weight: 0.2 # 从 0.0 提高调优的总体原则是每次只动一个旋钮先调学习率再调 β然后调 γ/β最后才考虑 SFT Weight 与批大小避免多参数同时变动导致无法归因。十、完整可运行配置示例10.1 Mistral 7B Base标准配置model_name_or_path: mistralai/Mistral-7B-v0.1 dataset_mixer: HuggingFaceH4/ultrafeedback_binarized: 1.0 learning_rate: 5e-7 beta: 2.0 gamma_beta_ratio: 0.5 loss_type: sigmoid sft_weight: 0.0 num_train_epochs: 1 per_device_train_batch_size: 2 gradient_accumulation_steps: 4 warmup_ratio: 0.1 lr_scheduler_type: cosine bf16: true gradient_checkpointing: true10.2 Llama 3 8B Instruct推理场景model_name_or_path: meta-llama/Meta-Llama-3-8B-Instruct dataset_mixer: argilla/distilabel-math-preference-dpo: 1.0 learning_rate: 3e-7 beta: 5.0 gamma_beta_ratio: 0.7 loss_type: sigmoid sft_weight: 0.1 num_train_epochs: 1 per_device_train_batch_size: 1 gradient_accumulation_steps: 16 warmup_ratio: 0.1 lr_scheduler_type: cosine第二个示例展示了推理任务的完整形态低学习率3e-7保证精细推理能力不被破坏高 β5.0与高 γ/β0.7针对质量清晰的数学偏好数据施加更强的对齐信号sft_weight 0.1 保持 instruct 能力16 步梯度累积弥补单卡小批量的不足。所用数据集 argilla/distilabel-math-preference-dpo 包含约 30K 对 GSM8K/MATH 数学偏好对与任务域匹配。十一、启动训练从配置到命令配置就绪后可按 SKILL.md 中的工作流启动训练。环境准备包括 Python 3.10、PyTorch 2.2.2、alignment-handbook 与 Flash Attention 2conda create -n simpo python3.10 conda activate simpo git clone https://github.com/huggingface/alignment-handbook.git cd alignment-handbook python -m pip install . python -m pip install flash-attn --no-build-isolation然后使用 accelerate 配合 DeepSpeed ZeRO-3 启动ACCELERATE_LOG_LEVELinfo accelerate launch \ --config_file accelerate_configs/deepspeed_zero3.yaml \ scripts/run_simpo.py \ training_configs/mistral-7b-base-simpo.yaml十二、调参速查总表最后汇总全部推荐区间便于快速查阅参数推荐范围默认核心作用learning_rate7B3e-75e-770B5e-81e-75e-77B控制更新幅度最高优先级beta2.010.02.02.5奖励缩放控制偏好学习强度gamma_beta_ratio0.01.00.5目标间隔控制偏好清晰度要求sft_weight0.01.00.0能力保持正则强度loss_typesigmoid / hingesigmoid损失函数形态label_smoothing0.00.50.0抗标签噪声仅 sigmoid有效批大小7B128-25670B32-64—由 per_device×GPU×累积步数决定延伸阅读06-post-training/simpo/SKILL.mdSimPO 技能总览含安装、三种训练工作流、常见问题与硬件要求06-post-training/simpo/references/loss-functions.mdsigmoid/hinge 损失的数学推导、与 DPO 的对比、label smoothing 与 SFT 正则实现06-post-training/simpo/references/datasets.md偏好数据集格式、数据集混合、质量过滤与自定义数据集创建06-post-training/trl-fine-tuning/references/dpo-variants.mdTRL 中 DPO 及其变体的 β 取值与损失对比可对照理解 SimPO 与 DPO 的参数差异README.mdAI-Research-SKILLs 技能库总览与安装方式npx orchestra-research/ai-research-skills【免费下载链接】AI-Research-SKILLsComprehensive open-source library of AI research and engineering skills for any AI model. Package the skills and your claude code/codex/gemini agent will be an AI research agent with full horsepower. Maintained by Orchestra Research.项目地址: https://gitcode.com/gh_mirrors/ai/AI-Research-SKILLs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表