TRL documentation

Interfaces en ligne de commande (CLI)

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Interfaces en ligne de commande (CLI)

TRL fournit une puissante interface en ligne de commande (CLI) pour l’ajustement fin de grands modèles de langage (LLM) à l’aide de méthodes telles que l’ajustement fin supervisé (SFT), l’optimisation directe des préférences (DPO) et d’autres encore. La CLI abstrait une grande partie du code de base, vous permettant de lancer des tâches d’entraînement rapidement et de manière reproductible.

Commandes

Les commandes actuellement prises en charge sont :

Commandes d'entraînement

  • trl distillation : distiller un modèle enseignant vers un modèle élève par distillation de connaissances on-policy
  • trl dpo : fine-tuning d'un LLM avec DPO
  • trl grpo : fine-tuning d'un LLM avec GRPO
  • trl kto : fine-tuning d'un LLM avec KTO
  • trl reward : entraîner un Reward Model
  • trl rloo : fine-tuning d'un LLM avec RLOO
  • trl sft : fine-tuning d'un LLM avec SFT

Autres commandes

  • trl env : obtenir les informations système
  • trl vllm-serve : sert un modèle avec vLLM (obsolète, utilisez vllm serve directement, voir intégration vLLM)

Fine-tuning avec le CLI TRL

Utilisation de base

Vous pouvez lancer l’entraînement directement depuis l’interface en ligne de commande en spécifiant les arguments requis, tels que le modèle et le jeu de données :

SFT
DPO
Récompense
GRPO
RLOO
KTO
trl sft \
  --model_name_or_path Qwen/Qwen2.5-0.5B \
  --dataset_name stanfordnlp/imdb

Utilisation des fichiers de configuration

Pour garder vos commandes CLI propres et reproductibles, vous pouvez définir tous les arguments d’entraînement dans un fichier de configuration YAML :

SFT
DPO
Récompense
GRPO
RLOO
KTO
# sft_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: stanfordnlp/imdb

Lancer avec :

trl sft --config sft_config.yaml

Passer à l'échelle avec torchrun

Le CLI TRL lance l’entraînement avec torchrun, un processus par GPU disponible. Tout argument torchrun peut être transmis directement à trl, par exemple --nproc_per_node ou --nnodes.

SFT
DPO
Récompense
GRPO
RLOO
KTO
trl sft \
  --model_name_or_path Qwen/Qwen2.5-0.5B \
  --dataset_name stanfordnlp/imdb \
  --nproc_per_node 4

ou, avec un fichier de configuration :

# sft_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: stanfordnlp/imdb
nproc_per_node: 4

Lancer avec :

trl sft --config sft_config.yaml

DeepSpeed et FSDP

DeepSpeed ZeRO et FSDP sont configurés via les arguments d'entraînement, comme pour n'importe quel Trainer : --deepspeed prend une configuration JSON DeepSpeed, et --fsdp active FSDP, réglé avec --fsdp_config. Un simple --fsdp sur la ligne de commande nécessite transformers 5.10 ou une version ultérieure ; avec des versions antérieures, définissez fsdp: true dans un fichier de configuration. Des configurations prêtes à l'emploi se trouvent dans examples/deepspeed_configs et examples/fsdp_configs. Si vous avez installé TRL avec pip, enregistrez cette configuration ZeRO-2 sous le nom zero2.json et passez --deepspeed zero2.json :

{
  "bf16": {"enabled": "auto"},
  "zero_optimization": {
    "stage": 2,
    "offload_optimizer": {"device": "none"}
  },
  "gradient_accumulation_steps": "auto",
  "gradient_clipping": "auto",
  "train_batch_size": "auto",
  "train_micro_batch_size_per_gpu": "auto"
}
SFT
DPO
Récompense
GRPO
RLOO
KTO
trl sft \
  --model_name_or_path Qwen/Qwen2.5-0.5B \
  --dataset_name stanfordnlp/imdb \
  --deepspeed examples/deepspeed_configs/zero2.json  # or --fsdp

ou, avec un fichier de configuration :

# sft_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: stanfordnlp/imdb
deepspeed: examples/deepspeed_configs/zero2.json  # or fsdp: true

Lancer avec :

trl sft --config sft_config.yaml

Jusqu'à TRL v2.0.0, trl lance toujours accelerate launch lorsqu'il reçoit des arguments que seul accelerate launch connaît, tels que --num_processes ou --accelerate_config, ou lorsqu'un fichier par défaut accelerate config existe. Ce chemin est obsolète et émet un avertissement.

Utilisation de mélanges de jeux de données

Vous pouvez utiliser des mélanges de jeux de données pour combiner plusieurs jeux de données en un seul jeu de données d'entraînement. Cela est utile pour l'entraînement sur des sources de données diverses ou lorsque vous souhaitez mélanger différents types de données.

SFT
DPO
Récompense
GRPO
RLOO
KTO
# sft_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
datasets:
  - path: stanfordnlp/imdb
  - path: roneneldan/TinyStories

Lancer avec :

trl sft --config sft_config.yaml

Pour consulter tous les mots-clés disponibles pour définir les mélanges de jeux de données, reportez-vous aux classes scripts.utils.DatasetConfig et DatasetMixtureConfig.

Obtenir les informations système

Vous pouvez obtenir les informations système en exécutant la commande suivante :

trl env

Cela affichera les informations système, y compris les informations sur le GPU, la version de CUDA, la version de PyTorch, la version de transformers, la version de TRL, ainsi que les dépendances facultatives installées.

Copy-paste the following information when reporting an issue:

- Platform: Linux-5.15.0-1048-aws-x86_64-with-glibc2.31
- Python version: 3.11.9
- PyTorch version: 2.4.1
- accelerator(s): NVIDIA H100 80GB HBM3
- Transformers version: 4.45.0.dev0
- Accelerate version: 0.34.2
- Accelerate config: 
  - compute_environment: LOCAL_MACHINE
  - distributed_type: DEEPSPEED
  - mixed_precision: no
  - use_cpu: False
  - debug: False
  - num_processes: 4
  - machine_rank: 0
  - num_machines: 1
  - rdzv_backend: static
  - same_network: True
  - main_training_function: main
  - enable_cpu_affinity: False
  - deepspeed_config: {'gradient_accumulation_steps': 4, 'offload_optimizer_device': 'none', 'offload_param_device': 'none', 'zero3_init_flag': False, 'zero_stage': 2}
  - downcast_bf16: no
  - tpu_use_cluster: False
  - tpu_use_sudo: False
  - tpu_env: []
- Datasets version: 3.0.0
- HF Hub version: 0.24.7
- TRL version: 0.12.0.dev0+acb4d70
- bitsandbytes version: 0.41.1
- DeepSpeed version: 0.15.1
- Diffusers version: 0.30.3
- Liger-Kernel version: 0.3.0
- LLM-Blender version: 0.0.2
- OpenAI version: 1.46.0
- PEFT version: 0.12.0
- vLLM version: not installed

Ces informations sont requises lors de la déclaration d'un problème.

Update on GitHub