SimPO (Simple Preference Optimization)
iaDéfinition
SimPO (Simple Preference Optimization) est une methode d'alignement des LLMs proposee par Meng et al. (Princeton/CMU, 2024) qui simplifie DPO en eliminant completement le besoin d'un modele de reference, tout en ameliorant les performances. SimPO utilise la longueur-normalisee log-probabilite moyenne de la reponse comme reward implicite, associee a une marge gamma qui force un ecart entre les reponses choisies et rejetees. La formule cle de SimPO : L_SimPO = -log(sigma(beta/|y_w| * log p(y_w|x) - beta/|y_r| * log p(y_r|x) - gamma)), ou |y| est la longueur de la reponse (normalisation par longueur), gamma est la marge cible, et beta est l'echelle de temperature. La normalisation par longueur corrige le biais DPO vers les reponses plus longues. Les avantages de SimPO : (1) Pas de modele de reference — reduire de 50% la memoire GPU, (2) Normalisation par longueur — reponses alignees en termes de qualite, pas de longueur, (3) Marge gamma — separation explicite entre choisie et rejetee pour un meilleur signal d'apprentissage. SimPO a obtenu des scores SOTA sur AlpacaEval 2 et Arena-Hard au moment de sa publication. SimPO est disponible dans TRL depuis la version 0.9. Sa configuration est similaire a DPO : meme format de donnees (prompt, chosen, rejected), meme tokenizer, mais sans parametre ref_model. Les hyperparametres cles sont beta (5-10 typique) et gamma (0.5-1.0 typique). La comparaison ORPO vs SimPO : les deux eliminent le besoin de reference et fusionnent SFT+alignment en une passe. ORPO utilise un odds ratio basé sur les probabilites directes ; SimPO utilise la longueur-normalisee log-prob. En pratique, SimPO tend a mieux performer sur les benchmarks d'alignement conversationnel tandis qu'ORPO est plus stable pour les petits modeles.
SimPO avec TRL
from trl import CPOTrainer, CPOConfig
# SimPO est implem. via CPOTrainer avec loss_type='simpo'
config = CPOConfig(
learning_rate=8e-6,
loss_type='simpo',
beta=2.0,
simpo_gamma=0.5, # Marge cible
max_length=2048,
max_prompt_length=512,
per_device_train_batch_size=2
)
trainer = CPOTrainer(model=model, args=config, train_dataset=dataset, tokenizer=tokenizer)
trainer.train()
Articles liés
Expert en cybersécurité offensive et intelligence artificielle. Pentest, audit et développement IA sur-mesure.
Services
- Audit Infrastructure
- Audit Kubernetes
- Audit Microsoft 365
- Audit Sécurité Réseau
- Analyse de Risques
- Audit Active Directory
- Audit Application Web
- Audit Cloud (AWS/Azure/GCP)
- Audit Messagerie
- Audit API (OWASP Top 10)
- Audit DevSecOps & CI/CD
- Audit Code Source (SAST)
- Audit Postes de Travail
- Audit Sauvegarde & Résilience
- Audit OT/SCADA (IEC 62443)
- Développement IA
- Formations
Ressources
Projets & Outils
© 2026 Ayi NEDJIMI Consultants. Tous droits réservés.
Un projet cybersécurité ?
Expert dispo · Réponse 24h