TRL documentation
Exemples
Exemples
Le répertoire examples/ contient une collection d’exemples autonomes qui illustrent l’utilisation de la bibliothèque TRL pour diverses applications. Chaque exemple est situé dans son propre dossier nommé d’après la méthode et la tâche qu’il démontre (par exemple grpo_wordle, sft_gpt_oss_chess), et regroupe tout ce dont l’exemple a besoin : scripts, notebooks, prompts, modèles de chat et code d’évaluation.
Les scripts d’entraînement de base à un seul formateur ne sont pas des exemples : ils se trouvent dans trl/scripts et sont exposés via l’interface en ligne de commande (trl sft, trl dpo, trl grpo, …). La page de documentation de chaque formateur contient également un extrait de code complet et exécutable.
Les ressources partagées se trouvent à la racine de examples/ :
examples/deepspeed_configs: fichiers de configuration DeepSpeed ZeRO, passés avec--deepspeed, utilisés par de nombreux exemples.examples/fsdp_configs: fichiers de configuration FSDP, passés avec--fsdp --fsdp_config(un simple--fsdpsur la ligne de commande nécessite transformers 5.10 ou une version ultérieure ; avec des versions antérieures, définissezfsdp=Truedans la configuration d’entraînement).examples/datasets: les scripts utilisés pour générer les jeux de donnéestrl-libutilisés dans les exemples.
Commencer
Installez TRL et les dépendances supplémentaires comme suit :
pip install --upgrade trl[quantization]
Vérifiez les dépendances optionnelles supplémentaires ici. Les exemples basés sur des notebooks sont autonomes et peuvent s’exécuter sur Colab gratuit ; les exemples basés sur des scripts s’exécutent sur des configurations mono-GPU, multi-GPU ou DeepSpeed (voir Entraînement distribué ci-dessous).
Index
| Exemple | Description | Ouvrir dans Colab |
|---|---|---|
async_distillation_math | Distillation asynchrone on-policy sur GSM8K avec experimental.async_distillation.AsyncDistillationTrainer : l'enseignant est servi via HTTP avec vLLM. | |
async_distillation_mopd | Distillation sur politique multi-enseignants (MOPD) avec experimental.async_distillation.AsyncDistillationTrainer : fusionne les experts mathématiques, code et suivi d'instructions d'Open-MOPD dans leur point de contrôle SFT : de 17,5 à 24,2 sur AIME24 et de 67,5 à 73,0 sur IFEval en 60 étapes (script, lanceur Hugging Face Jobs et README avec les résultats). | |
async_grpo_harbor | Entraînement AsyncGRPO sur une suite de tâches Harbor via n’importe quel agent de codage installé (mini-swe-agent, opencode, claude-code, …) servi par OpenEnv : l’agent gère sa propre boucle dans un bac à sable et TRL s’entraîne sur les identifiants de jetons et les logprobs enregistrés par le proxy de capture. | |
async_grpo_math | GRPO asynchrone sur GSM8K avec AsyncGRPOTrainer, découplant la génération (serveur vLLM) de l’entraînement, y compris une variante LoRA qui ne synchronise que l’adaptateur avec le serveur vLLM. | |
dpo_reduce_hallucinations | Ajustement fin DPO d'un modèle Vision Language pour réduire les hallucinations à l'aide du jeu de données openbmb/RLAIF-V-Dataset. | |
gold_chatbot_arena | Distillation de logit en ligne générale (GOLD) d’un enseignant Qwen2 vers un élève Llama 3.2 (tokeniseurs croisés) sur chatbot_arena_completions avec experimental.gold.GOLDTrainer, avec des variantes d’entraînement complet et LoRA. | |
gold_qwen3_vl | Distillation en ligne générale des logits (GOLD) de Qwen3-VL-8B vers des étudiants VLM plus petits à l'aide de experimental.gold.GOLDTrainer, couvrant la distillation intra-famille (perte JSD) et inter-famille (perte ULD). | |
grpo_2048 | GRPO avec l'appel d'outils pour apprendre à un modèle à jouer au jeu 2048. | |
grpo_browsergym | GRPO avec l'environnement OpenEnv de BrowserGym, avec des variantes LLM et VLM. | |
grpo_carla | GRPO avec l'environnement de conduite autonome CARLA OpenEnv, avec des variantes LLM et VLM (réponses d'outils multimodales à partir d'images de caméra). | |
grpo_catch | GRPO avec le piège (OpenSpiel) OpenEnv environnement. | |
grpo_continuous_batching | GRPO avec le moteur de lotissement continu de Transformers pour une génération plus rapide sur de grands lots avec des longueurs de complétion variables. | |
grpo_echo | Entraînement minimal de GRPO avec l'environnement OpenEnv Echo. | |
grpo_harbor | Entraînement GRPO face à une suite de tâches Harbor avec un agent de base modulaire (harnais bash / jupyter / terminal_notes). Consultez le guide Harbor Integration. | |
grpo_ministral3_vl | GRPO Ministral 3 avec QLoRA sur Colab gratuit. | |
grpo_multi_env | Entraînement GRPO multi-environnements : Wordle + Catch OpenEnv dans la même session d'entraînement. | |
grpo_qlora | GRPO utilisant QLoRA sur Colab gratuit. | |
grpo_qwen3_vl | GRPO Qwen3-VL avec QLoRA sur Colab gratuit. | |
grpo_rnj_1_instruct | GRPO sur rnj-1-instruct avec QLoRA sur Colab pour ajouter des capacités de raisonnement. | |
grpo_seta | Entraînement GRPO contre l’environnement SETA ORS du catalogue openreward.ai. Consultez le guide Intégration OpenReward. | |
grpo_sql_agent | GRPO pour entraîner un agent qui répond à des questions en interrogeant une base de données SQL (script et notebook ; non exécutable sur Colab gratuit en raison d'un OOM). | |
grpo_sudoku | GRPO pour jouer au Sudoku (TextArena) dans un environnement OpenEnv, à partir d'un modèle SFT : 0, 10 et 22 grilles sur 30 résolues avec 26 cellules vides pour les modèles de base, SFT et SFT + GRPO (script, notebook et README avec les résultats). | |
grpo_visual_math | Fine-tuning GRPO d'un modèle multimodal pour le raisonnement à l'aide du jeu de données lmms-lab/multimodal-open-r1-8k-verified. | |
grpo_wordle | GRPO pour jouer à Wordle (TextArena) dans un environnement OpenEnv (script et notebook). | |
gspo_math | GSPO via le GRPOTrainer pour le raisonnement mathématique sur le jeu de données AI-MO/NuminaMath-TIR. | |
gspo_visual_math | GSPO via le GRPOTrainer pour l’ajustement fin d’un modèle multimodal de raisonnement en utilisant le jeu de données lmms-lab/multimodal-open-r1-8k-verified. | |
lfm2_5_moe_research_agent | LiquidAI/LFM2.5-8B-A1B en deux étapes : SFT complet sur l’appel de fonctions xLAM sur un nœud 8xH100 avec SFTTrainer, sharding au chargement via DistributedConfig de transformers (parallélisme d’experts avec dispatch de tokens, plus FSDP), puis GRPO d’un agent de recherche multi-tours sur HotpotQA avec GRPOTrainer et environment_factory (outils search / read, récompense par correspondance exacte). | |
mpo_visual_preferences | MPO via le DPOTrainer pour aligner un modèle multimodal basé sur les préférences en utilisant le jeu de données HuggingFaceH4/rlaif-v_formatted et un ensemble de poids de perte. | |
online_dpo_visual_math | Ajustement fin en ligne par DPO d'un modèle Vision Language avec experimental.online_dpo.OnlineDPOTrainer. | |
rloo_math | RLOO avec le RLOOTrainer pour le raisonnement mathématique sur le jeu de données AI-MO/NuminaMath-TIR avec vLLM. | |
rloo_visual_math | Fine-tuning RLOO d'un modèle multimodal pour le raisonnement à l'aide du jeu de données lmms-lab/multimodal-open-r1-8k-verified. | |
sdft_privileged_context | Ajustement fin par auto-distillation avec experimental.sdft.SDFTTrainer, distillant le contexte privilégié (réservé à l'enseignant) dans le modèle. | |
sdpo_math | SDPO avec experimental.sdpo.SDPOTrainer en utilisant des récompenses mathématiques vérifiables et un retour d'environnement facultatif sur openai/gsm8k. | |
sft_agent_traces | SFT de Qwen3.5-2B sur des traces d’agent : Qwen3.5-397B-A17B traite des tâches d’analyse de données Harbor en tant qu’agent OpenCode dans les Hugging Face Sandboxes, enregistré par OpenEnv, et l’élève s’entraîne sur les conversations résolues avec une perte uniquement sur les réponses de l’assistant. Sur des tâches dont les données n’ont été touchées par aucune trace, environ 500 traces le font passer de 7,6 % à 33,3 % (scripts de rollout, de jeu de données et d’entraînement, ainsi que le README avec les résultats). | |
sft_beam | SFT LoRA de reflection/Beam-1.0-501B-A23B sur un nœud 8xB300 avec SFTTrainer, sharding au chargement via DistributedConfig de transformers (parallélisme d'experts avec dispatch de tokens). | |
sft_diffusion_gemma | SFT du modèle de langage à diffusion par blocs DiffusionGemma sur GSM8K en étendant le SFTTrainer avec un objectif de diffusion par blocs. | |
sft_gemma3 | SFT de Gemma 3 sur le jeu de données Codeforces COTS. | |
sft_gemma3_vision | SFT de Gemma 3 sur des tâches de vision vers texte. | |
sft_gpt_oss_chess | Ajustement complet de openai/gpt-oss-20b sur des puzzles d'échecs avec SFTTrainer : TRL charge ses experts MXFP4 déquantifiés, et les experts ajustés sont re-quantifiés en MXFP4 pour être servis comme l'original. | |
sft_ministral3_vl | SFT Ministral 3 avec QLoRA sur Colab gratuit. | |
sft_mistral_large_4 | SFT LoRA de mistralai/Mistral-Large-4-1T-A52B sur ses poids FP8 sur un nœud 8xB300 avec SFTTrainer, fractionné au chargement par DistributedConfig de transformers (parallélisme d'experts avec dispatch de jetons). | |
sft_nemotron_3 | SFT des modèles NVIDIA Nemotron 3 (script et notebook LoRA). | |
sft_qlora | SFT avec QLoRA sur Colab gratuit. | |
sft_qwen3_8b_1m_context | SFT de Qwen3-8B sur des séquences de 1 048 576 jetons avec parallélisme de contexte, sur un nœud 8xH100. | |
sft_qwen3_vl | SFT de Qwen3-VL avec QLoRA sur Colab gratuit. | |
tail_sft_gsm8k | TailSFT sur GSM8K en étendant SFTTrainer avec un filtrage de la perte de politique initiale. | |
sft_muse_spark_open | SFT LoRA des méta-modèles/Muse-Spark-Open-816B-A42B sur 8 nœuds avec SFTTrainer, fractionné au chargement par DistributedConfig de transformers (parallélisme d'experts avec dispatch de jetons). | |
sft_tool_calling | Enseigner l'appel d'outils à un modèle sans support natif de l'appel d'outils à l'aide de SFT avec QLoRA (script, modèle de discussion et notebook). | |
sft_visual_chat | SFT d'un modèle de vision-langage dans un contexte de chat. Testé uniquement avec LLaVA 1.5, LLaVA 1.6 et Llama-3.2-11B-Vision-Instruct ; les utilisateurs peuvent rencontrer un comportement inattendu avec d'autres architectures de modèles. | |
xtoken | X-Token distillation de connaissances cross-tokenizer hors politique avec experimental.gold.GOLDTrainer, y compris la préparation de la matrice de projection. |
Entraînement distribué
Vous pouvez exécuter les scripts d'exemple sur plusieurs GPU avec torchrun :
torchrun --nproc_per_node {NUM_GPUS} path_to_script.py --all_arguments_of_the_scriptPour DeepSpeed ZeRO-{1,2,3} :
torchrun --nproc_per_node {NUM_GPUS} path_to_script.py --deepspeed examples/deepspeed_configs/zero{1,2,3}.json --all_arguments_of_the_scriptAjustez NUM_GPUS et --all_arguments_of_the_script selon vos besoins.