Simpo Training — Simple Preference Optimization for LLM alignment
Simpo Training
Section titled “Simpo Training”Simple Preference Optimization for LLM alignment. Reference-free alternative to DPO with better performance (+6.4 points on AlpacaEval 2.0). No reference model needed, more efficient than DPO. Use for preference alignment when want simpler, faster training than DPO/PPO.
Skill metadata
Section titled “Skill metadata”| Source | Optional — install with hermes skills install official/mlops/simpo |
| Path | optional-skills/mlops/simpo |
| Version | 1.0.0 |
| Author | Orchestra Research |
| License | MIT |
| Dependencies | torch, transformers, datasets, trl, accelerate |
| Tags | Post-Training, SimPO, Preference Optimization, Alignment, DPO Alternative, Reference-Free, LLM Alignment, Efficient Training |
Reference: full SKILL.md
Section titled “Reference: full SKILL.md”The following is the complete skill definition that Hermes loads when this skill is triggered. This is what the agent sees as instructions when the skill is active.
SimPO - Simple Preference Optimization
Section titled “SimPO - Simple Preference Optimization”Quick start
Section titled “Quick start”SimPO is a reference-free preference optimization method that outperforms DPO without needing a reference model.
Installation:
# Create environmentconda create -n simpo python=3.10 && conda activate simpo
# Install PyTorch 2.2.2# Visit: https://pytorch.org/get-started/locally/
# Install alignment-handbookgit clone https://github.com/huggingface/alignment-handbook.gitcd alignment-handbookpython -m pip install .
# Install Flash Attention 2python -m pip install flash-attn --no-build-isolationTraining (Mistral 7B):
ACCELERATE_LOG_LEVEL=info accelerate launch \ --config_file accelerate_configs/deepspeed_zero3.yaml \ scripts/run_simpo.py \ training_configs/mistral-7b-base-simpo.yamlCommon workflows
Section titled “Common workflows”Workflow 1: Train from base model (Mistral 7B)
Section titled “Workflow 1: Train from base model (Mistral 7B)”Config (mistral-7b-base-simpo.yaml):
# Modelmodel_name_or_path: mistralai/Mistral-7B-v0.1torch_dtype: bfloat16
# Datasetdataset_mixer: HuggingFaceH4/ultrafeedback_binarized: 1.0dataset_splits: - train_prefs - test_prefs
# SimPO hyperparametersbeta: 2.0 # Reward scaling (2.0-10.0)gamma_beta_ratio: 0.5 # Target margin (0-1)loss_type: sigmoid # sigmoid or hingesft_weight: 0.0 # Optional SFT regularization
# Traininglearning_rate: 5e-7 # Critical: 3e-7 to 1e-6num_train_epochs: 1per_device_train_batch_size: 1gradient_accumulation_steps: 8
# Outputoutput_dir: ./outputs/mistral-7b-simpoLaunch training:
accelerate launch --config_file accelerate_configs/deepspeed_zero3.yaml \ scripts/run_simpo.py training_configs/mistral-7b-base-simpo.yamlWorkflow 2: Fine-tune instruct model (Llama 3 8B)
Section titled “Workflow 2: Fine-tune instruct model (Llama 3 8B)”Config (llama3-8b-instruct-simpo.yaml):
model_name_or_path: meta-llama/Meta-Llama-3-8B-Instruct
dataset_mixer: argilla/ultrafeedback-binarized-preferences-cleaned: 1.0
beta: 2.5gamma_beta_ratio: 0.5learning_rate: 5e-7sft_weight: 0.1 # Add SFT loss to preserve capabilities
num_train_epochs: 1per_device_train_batch_size: 2gradient_accumulation_steps: 4output_dir: ./outputs/llama3-8b-simpoLaunch:
accelerate launch --config_file accelerate_configs/deepspeed_zero3.yaml \ scripts/run_simpo.py training_configs/llama3-8b-instruct-simpo.yamlWorkflow 3: Reasoning-intensive tasks (lower LR)
Section titled “Workflow 3: Reasoning-intensive tasks (lower LR)”For math/code tasks:
model_name_or_path: deepseek-ai/deepseek-math-7b-base
dataset_mixer: argilla/distilabel-math-preference-dpo: 1.0
beta: 5.0 # Higher for stronger signalgamma_beta_ratio: 0.7 # Larger marginlearning_rate: 3e-7 # Lower LR for reasoningsft_weight: 0.0
num_train_epochs: 1per_device_train_batch_size: 1gradient_accumulation_steps: 16When to use vs alternatives
Section titled “When to use vs alternatives”Use SimPO when:
- Want simpler training than DPO (no reference model)
- Have preference data (chosen/rejected pairs)
- Need better performance than DPO
- Limited compute resources
- Single-node training sufficient
Algorithm selection:
- SimPO: Simplest, best performance, no reference model
- DPO: Need reference model baseline, more conservative
- PPO: Maximum control, need reward model, complex setup
- GRPO: Memory-efficient RL, no critic
Use alternatives instead:
- OpenRLHF: Multi-node distributed training, PPO/GRPO
- TRL: Need multiple methods in one framework
- DPO: Established baseline comparison
Common issues
Section titled “Common issues”Issue: Loss divergence
Reduce learning rate:
learning_rate: 3e-7 # Reduce from 5e-7Reduce beta:
beta: 1.0 # Reduce from 2.0Issue: Model forgets capabilities
Add SFT regularization:
sft_weight: 0.1 # Add SFT loss componentIssue: Poor preference separation
Increase beta and margin:
beta: 5.0 # Increase from 2.0gamma_beta_ratio: 0.8 # Increase from 0.5Issue: OOM during training
Reduce batch size:
per_device_train_batch_size: 1gradient_accumulation_steps: 16 # Maintain effective batchEnable gradient checkpointing:
gradient_checkpointing: trueAdvanced topics
Section titled “Advanced topics”Loss functions: See references/loss-functions.md for sigmoid vs hinge loss, mathematical formulations, and when to use each.
Hyperparameter tuning: See references/hyperparameters.md for beta, gamma, learning rate selection guide, and model-size-specific recommendations.
Dataset preparation: See references/datasets.md for preference data formats, quality filtering, and custom dataset creation.
Hardware requirements
Section titled “Hardware requirements”- GPU: NVIDIA A100/H100 recommended
- VRAM:
- 7B model: 1× A100 40GB (DeepSpeed ZeRO-3)
- 8B model: 2× A100 40GB
- 70B model: 8× A100 80GB
- Single-node: DeepSpeed ZeRO-3 sufficient
- Mixed precision: BF16 recommended
Memory optimization:
- DeepSpeed ZeRO-3 (default config)
- Gradient checkpointing
- Flash Attention 2
Resources
Section titled “Resources”- Paper: https://arxiv.org/abs/2405.14734 (NeurIPS 2024)
- GitHub: https://github.com/princeton-nlp/SimPO
- Models: https://huggingface.co/princeton-nlp
- Alignment Handbook: https://github.com/huggingface/alignment-handbook