Trl Training

作者 huggingfaceabc20ae526d8Apache-2.011K 個星標收錄於 2026年10月8日更新於 2026年10月8日儲存庫今天更新

Train and fine-tune transformer language models using TRL (Transformers Reinforcement Learning). Supports SFT, DPO, GRPO, KTO, RLOO and Reward Model training via CLI commands.

僅含說明AI & Agents
AI 產生的概覽

指導使用 TRL 命令列對 Transformer 語言模型進行微調與對齊,涵蓋 SFT、DPO、GRPO、KTO、RLOO 與獎勵模型訓練。

功能
此技能提供使用 TRL 函式庫訓練與後訓練 Transformer 語言模型的說明與命令列範例。內容涵蓋監督式微調、DPO、GRPO、KTO、RLOO 等偏好最佳化方法以及獎勵模型訓練,並包含 LoRA 轉接器選項。它也說明 YAML 設定檔、透過 Accelerate 搭配 FSDP 與 DeepSpeed ZeRO 的分散式訓練、疑難排解與最佳實務。
適用情境
當你需要用 TRL 微調或對齊語言模型、在 SFT、DPO、GRPO、KTO、RLOO 或獎勵模型訓練之間做選擇,或設定 LoRA、設定檔及多 GPU 訓練時,可以使用它。它也適合排查常見的 TRL 訓練問題,例如顯示記憶體不足、資料集載入、模型載入與訓練緩慢。
執行需求
需要 TRL 函式庫及其命令列工具,以及 Hugging Face Transformers、Datasets 和 Accelerate,並能存取 Hugging Face Hub 或本機路徑上的模型與資料集。訓練通常需要 GPU 資源,受限模型需要 Hugging Face 身分驗證。此技能不附帶指令碼,僅為說明文件。

TRL Training Skill

You are an expert at using the TRL (Transformers Reinforcement Learning) library to train and fine-tune large language models.

Overview

TRL provides CLI commands for post-training foundation models using state-of-the-art techniques:

  • SFT (Supervised Fine-Tuning): Fine-tune models on instruction-following or conversational datasets
  • DPO (Direct Preference Optimization): Align models using preference data
  • GRPO (Group Relative Policy Optimization): Train models by ranking multiple sampled outputs relative to each other and optimizing based on their comparative rewards.
  • RLOO (Reinforce Leave One Out): Online RL training with generation-based rewards
  • Reward Model Training: Train reward models for RLHF

TRL is built on top of Hugging Face Transformers and Accelerate, providing seamless integration with the Hugging Face ecosystem.

Core Commands

trl sft - Supervised Fine-Tuning

Fine-tune language models on instruction-following or conversational datasets.

Full training:

bash
trl sft \  --model_name_or_path Qwen/Qwen2-0.5B \  --dataset_name trl-lib/Capybara \  --learning_rate 2.0e-5 \  --num_train_epochs 1 \  --packing \  --per_device_train_batch_size 2 \  --gradient_accumulation_steps 8 \  --eos_token '<|im_end|>' \  --eval_strategy steps \  --eval_steps 100 \  --output_dir Qwen2-0.5B-SFT \  --push_to_hub

Train with LoRA adapters:

bash
trl sft \  --model_name_or_path Qwen/Qwen2-0.5B \  --dataset_name trl-lib/Capybara \  --learning_rate 2.0e-4 \  --num_train_epochs 1 \  --packing \  --per_device_train_batch_size 2 \  --gradient_accumulation_steps 8 \  --eos_token '<|im_end|>' \  --eval_strategy steps \  --eval_steps 100 \  --use_peft \  --lora_r 32 \  --lora_alpha 16 \  --output_dir Qwen2-0.5B-SFT \  --push_to_hub

trl dpo - Direct Preference Optimization

Align models using preference data (chosen/rejected pairs).

Full training:

bash
trl dpo \  --dataset_name trl-lib/ultrafeedback_binarized \  --model_name_or_path Qwen/Qwen2-0.5B-Instruct \  --learning_rate 5.0e-7 \  --num_train_epochs 1 \  --per_device_train_batch_size 2 \  --max_steps 1000 \  --gradient_accumulation_steps 8 \  --eval_strategy steps \  --eval_steps 50 \  --output_dir Qwen2-0.5B-DPO \  --no_remove_unused_columns

Train with LoRA adapters:

bash
trl dpo \  --dataset_name trl-lib/ultrafeedback_binarized \  --model_name_or_path Qwen/Qwen2-0.5B-Instruct \  --learning_rate 5.0e-6 \  --num_train_epochs 1 \  --per_device_train_batch_size 2 \  --max_steps 1000 \  --gradient_accumulation_steps 8 \  --eval_strategy steps \  --eval_steps 50 \  --output_dir Qwen2-0.5B-DPO \  --no_remove_unused_columns \  --use_peft \  --lora_r 32 \  --lora_alpha 16

trl grpo - Group Relative Policy Optimization

Train models using reward functions or LLM-as-a-judge for evaluating generations and providing rewards.

Basic usage:

bash
trl grpo \  --model_name_or_path Qwen/Qwen2.5-0.5B \  --dataset_name trl-lib/gsm8k \  --reward_funcs accuracy_reward \  --output_dir Qwen2-0.5B-GRPO \  --push_to_hub

trl rloo - Reinforce Leave One Out

Online RL training where the model generates text and receives rewards based on custom criteria.

Basic usage:

bash
trl rloo \  --model_name_or_path Qwen/Qwen2.5-0.5B \  --dataset_name trl-lib/tldr \  --reward_model_name_or_path sentiment-analysis:nlptown/bert-base-multilingual-uncased-sentiment \  --output_dir Qwen2-0.5B-RLOO \  --push_to_hub

trl reward - Reward Model Training

Train a reward model to score text quality for RLHF.

Full training:

bash
trl reward \  --model_name_or_path Qwen/Qwen2-0.5B-Instruct \  --dataset_name trl-lib/ultrafeedback_binarized \  --output_dir Qwen2-0.5B-Reward \  --per_device_train_batch_size 8 \  --num_train_epochs 1 \  --learning_rate 1.0e-5 \  --eval_strategy steps \  --eval_steps 50 \  --max_length 2048

Train with LoRA adapters:

bash
trl reward \  --model_name_or_path Qwen/Qwen2-0.5B-Instruct \  --dataset_name trl-lib/ultrafeedback_binarized \  --output_dir Qwen2-0.5B-Reward-LoRA \  --per_device_train_batch_size 8 \  --num_train_epochs 1 \  --learning_rate 1.0e-4 \  --eval_strategy steps \  --eval_steps 50 \  --max_length 2048 \  --use_peft \  --lora_task_type SEQ_CLS \  --lora_r 32 \  --lora_alpha 16

Configuration Files

TRL supports YAML configuration files for reproducible training. All CLI arguments can be specified in a config file.

Example config (sft_config.yaml):

yaml
model_name_or_path: Qwen/Qwen2.5-0.5Bdataset_name: trl-lib/Capybaralearning_rate: 2.0e-5num_train_epochs: 1per_device_train_batch_size: 8gradient_accumulation_steps: 2output_dir: ./sft_outputuse_peft: truelora_r: 16lora_alpha: 16report_to: trackio

Launch with config:

bash
trl sft --config sft_config.yaml

Override config values:

bash
trl sft --config sft_config.yaml --learning_rate 1.0e-5

Distributed Training

TRL integrates with Accelerate for multi-GPU and multi-node training.

Multi-GPU training:

bash
trl sft \  --config sft_config.yaml \  --num_processes 4

Use predefined Accelerate configs:

TRL provides predefined configs: single_gpu, multi_gpu, fsdp1, fsdp2, zero1, zero2, zero3

bash
trl sft \  --config sft_config.yaml \  --accelerate_config zero2

Custom Accelerate config:

bash
# Generate custom configaccelerate config
# Use custom configtrl sft --config sft_config.yaml --config_file ~/.cache/huggingface/accelerate/default_config.yaml

Fully Sharded Data Parallel (FSDP):

bash
trl sft --config sft_config.yaml --accelerate_config fsdp2

DeepSpeed ZeRO:

bash
trl sft --config sft_config.yaml --accelerate_config zero3

Troubleshooting

CUDA Out of Memory

  • Reduce --per_device_train_batch_size and increase --gradient_accumulation_steps
  • Enable --use_peft for LoRA training
  • Use --gradient_checkpointing to save memory
  • Try smaller model or longer sequence truncation

Dataset Loading Issues

  • Verify dataset exists: check Hugging Face Hub or local path
  • Check dataset format matches expected columns
  • Use --dataset_config for multi-config datasets
  • Inspect dataset: from datasets import load_dataset; ds = load_dataset(name)

Model Loading Issues

  • Verify model exists on Hugging Face Hub
  • Check if gated model requires authentication: hf auth login
  • For local models, provide absolute path
  • Ensure sufficient disk space and memory

Slow Training

  • Enable dataset --packing for short sequences
  • Use larger --per_device_train_batch_size if memory allows
  • Enable --tf32 for faster computation on Ampere GPUs
  • Use --bf16 on supported hardware
  • Consider multi-GPU training with --num_processes

Generation Issues (GRPO/RLOO)

  • Check prompt format in dataset
  • Adjust --temperature and --top_p for generation
  • Verify the reward function (for GRPO/RLOO)

Additional Resources

Best Practices

  1. Start with SFT: Always fine-tune base models with SFT before preference alignment
  2. Use LoRA for efficiency: Enable --use_peft for faster training and lower memory
  3. Monitor training: Use --report_to trackio (or --report_to wandb or --report_to tensorboard) for tracking
  4. Save checkpoints: TRL automatically saves checkpoints in --output_dir
  5. Test on small datasets first: Verify pipeline works before full training
  6. Use configuration files: Create YAML configs for reproducibility
  7. Leverage Accelerate: Use multi-GPU training for faster iteration

When helping users with TRL:

  • Always check which training method is appropriate for their use case
  • Verify dataset format matches the expected schema
  • Recommend starting with smaller models for testing
  • Suggest LoRA for resource-constrained environments
  • Point to specific documentation sections for advanced features

來源與署名

來源:huggingface/skills位於skills/trl-training提交abc20ae

授權條款: Apache-2.0

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架