simpo-training — Claude Code skill: what it does, how to install
Sets up SimPO preference training for language models from chosen and rejected pairs. Use it when DPO's reference model adds unwanted setup.
npx skills add Orchestra-Research/AI-Research-SKILLs --skill simpo-training -a claude-code
npx skills add Orchestra-Research/AI-Research-SKILLs --skill simpo -a claude-codeWhat simpo-training does
SimPO trains from chosen and rejected preference pairs without a reference model. The skill covers launches with scripts/run_simpo.py, accelerate configurations and DeepSpeed ZeRO-3, plus controls for beta, gamma_beta_ratio, loss_type and sft_weight.
It includes workflows for base Mistral 7B, instruct-tuned Llama 3 8B, and reasoning-heavy work. For diverging loss, it suggests lowering learning_rate or beta; SFT regularization addresses capability loss. Smaller batches, gradient accumulation and gradient checkpointing address OOM errors.
Training uses torch, transformers, datasets, trl, accelerate, Flash Attention 2 and Alignment Handbook. NVIDIA A100/H100 GPUs are recommended, so check the available VRAM before planning a run.
What it helps with
- train a model on preference pairs
- launch SimPO with
accelerate - tune
betaand the target margin - address diverging loss
- reduce memory pressure during training
Example prompts for the agent
- “Set up a SimPO configuration for Mistral 7B and run
scripts/run_simpo.py.” - “Adjust
sft_weightfor Llama 3 8B to preserve model capabilities.” - “Help fix an OOM error in SimPO training with DeepSpeed ZeRO-3.”
How to install simpo-training
1Skills CLI (Vercel)
npx skills add Orchestra-Research/AI-Research-SKILLs --skill simpo-training -a claude-codenpx skills add Orchestra-Research/AI-Research-SKILLs --skill simpo -a claude-code2Manually: put the files in place
~/.claude/skills/simpo/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/simpo/
1Skills CLI (Vercel)
npx skills add Orchestra-Research/AI-Research-SKILLs --skill simpo -a codex2Manually: put the files in place
.agents/skills/simpo/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add Orchestra-Research/AI-Research-SKILLs --skill simpo -a cursor2Manually: put the files in place
.cursor/skills/simpo/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install Orchestra-Research/AI-Research-SKILLs simpo2Manually: put the files in place
.github/skills/simpo/SKILL.md1Skills CLI (Vercel)
npx skills add Orchestra-Research/AI-Research-SKILLs --skill simpo -a gemini-cli2Platform CLI
gemini skills install https://github.com/Orchestra-Research/AI-Research-SKILLs --path 06-post-training/simpoManually: put the files in place
.devin/skills/simpo/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add Orchestra-Research/AI-Research-SKILLs --skill simpo -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about simpo-training
How do I install simpo-training in Claude Code?
Run npx skills add Orchestra-Research/AI-Research-SKILLs --skill simpo-training -a claude-code in your terminal.
What does simpo-training do?
It guides preference-based LLM post-training with SimPO. The method works without a reference model and is presented as an alternative to DPO.
What is required for SimPO training?
The setup uses torch, transformers, datasets, trl, accelerate, Flash Attention 2 and Alignment Handbook. Its examples for 7B, 8B and 70B models use NVIDIA A100 configurations with DeepSpeed ZeRO-3.
Source text
SKILL.md · MIT
--- name: simpo-training description: 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. version: 1.0.0 author: Orchestra Research license: MIT tags: [Post-Training, SimPO, Preference Optimization, Alignment, DPO Alternative, Reference-Free, LLM Alignment, Efficient Training] dependencies: [torch, transformers, datasets, trl, accelerate] --- # SimPO - Simple Preference Optimization ## Quick start SimPO is a reference-free preference optimization method that outperforms DPO without needing a reference model. **Installation**: ```bash # Create environment conda create -n simpo python=3.10 && conda activate simpo # Install PyTorch 2.2.2 # Visit: https://pytorch.org/get-started/locally/ # Install alignment-handbook git clone https://github.com/huggingface/alignment-handbook.git cd alignment-handbook python -m pip install . # Install Flash Attention 2 python -m pip install flash-attn --no-build-isolation ``` **Training** (Mistral 7B): ```bash ACCELERATE_LOG_LEVEL=info accelerate launch \ --config_file accelerate_configs/deepspeed_zero3.yaml \ scripts/run_simpo.py \ training_configs/mistral-7b-base-simpo.yaml ``` ## Common workflows ### Workflow 1: Train from base model (Mistral 7B) **Config** (`mistral-7b-base-simpo.yaml`): ```yaml # Model model_name_or_path: mistralai/Mistral-7B-v0.1 torch_dtype: bfloat16 # Dataset dataset_mixer: HuggingFaceH4/ultrafeedback_binarized: 1.0 dataset_splits: - train_prefs - test_prefs # SimPO hyperparameters beta: 2.0 # Reward scaling (2.0-10.0) gamma_beta_ratio: 0.5 # Target margin (0-1) loss_type: sigmoid # sigmoid or hinge sft_weight: 0.0 # Optional SFT regularization # Training learning_rate: 5e-7 # Critical: 3e-7 to 1e-6 num_train_epochs: 1 per_device_train_batch_size: 1 gradient_accumulation_steps: 8 # Output output_dir: ./outputs/mistral-7b-simpo ``` **Launch training**: ```bash accelerate launch --config_file accelerate_configs/deepspeed_zero3.yaml \ scripts/run_simpo.py training_configs/mistral-7b-base-simpo.yaml ``` ### Workflow 2: Fine-tune instruct model (Llama 3 8B) **Config** (`llama3-8b-instruct-simpo.yaml`): ```yaml model_name_or_path: meta-llama/Meta-Llama-3-8B-Instruct dataset_mixer: argilla/ultrafeedback-binarized-preferences-cleaned: 1.0 beta: 2.5 gamma_beta_ratio: 0.5 learning_rate: 5e-7 sft_weight: 0.1 # Add SFT loss to preserve capabilities num_train_epochs: 1 per_device_train_batch_size: 2 gradient_accumulation_steps: 4 output_dir: ./outputs/llama3-8b-simpo ``` **Launch**: ```bash accelerate launch --config_file accelerate_configs/deepspeed_zero3.yaml \ scripts/run_simpo.py training_configs/llama3-8b-instruct-simpo.yaml ``` ### Workflow 3: Reasoning-intensive tasks (lower LR) **For math/code tasks**: ```yaml 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 signal gamma_beta_ratio: 0.7 # Larger margin learning_rate: 3e-7 # Lower LR for reasoning sft_weight: 0.0 num_train_epochs: 1 per_device_train_batch_size: 1 gradient_accumulation_steps: 16 ``` ## 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 **Issue: Loss divergence** Reduce learning rate: ```yaml learning_rate: 3e-7 # Reduce from 5e-7 ``` Reduce beta: ```yaml beta: 1.0 # Reduce from 2.0 ``` **Issue: Model forgets capabilities** Add SFT regularization: ```yaml sft_weight: 0.1 # Add SFT loss component ``` **Issue: Poor preference separation** Increase beta and margin: ```yaml beta: 5.0 # Increase from 2.0 gamma_beta_ratio: 0.8 # Increase from 0.5 ``` **Issue: OOM during training** Reduce batch size: ```yaml per_device_train_batch_size: 1 gradient_accumulation_steps: 16 # Maintain effective batch ``` Enable gradient checkpointing: ```yaml gradient_checkpointing: true ``` ## Advanced topics **Loss functions**: See [references/loss-functions.md](references/loss-functions.md) for sigmoid vs hinge loss, mathematical formulations, and when to use each. **Hyperparameter tuning**: See [references/hyperparameters.md](references/hyperparameters.md) for beta, gamma, learning rate selection guide, and model-size-specific recommendations. **Dataset preparation**: See [references/datasets.md](references/datasets.md) for preference data formats, quality filtering, and custom dataset creation. ## 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 - 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
© Orchestra Research · MIT · Orchestra-Research/AI-Research-SKILLs