TRL documentation

Interfaces de línea de comandos (CLIs)

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v1.17.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Interfaces de línea de comandos (CLIs)

TRL ofrece una potente interfaz de línea de comandos (CLI) para ajustar modelos de lenguaje grandes (LLM) mediante métodos como Supervised Fine-Tuning (SFT), Direct Preference Optimization (DPO) y más. La CLI abstrae gran parte del código repetitivo, lo que te permite lanzar trabajos de entrenamiento de forma rápida y reproducible.

Comandos

Los comandos actualmente soportados son:

Comandos de entrenamiento

  • trl distillation: destilar un modelo maestro en un estudiante mediante destilación de conocimiento on-policy
  • trl dpo: ajustar un LLM con DPO
  • trl grpo: ajuste fino de un LLM con GRPO
  • trl kto: ajustar un LLM con KTO
  • trl reward: entrenar un modelo de recompensa
  • trl rloo: ajuste fino de un LLM con RLOO
  • trl sft: ajustar un LLM con SFT

Otros comandos

  • trl env: obtener la información del sistema
  • trl vllm-serve: sirve un modelo con vLLM (obsoleto, usa vllm serve directamente, consulta integración de vLLM)

Ajuste fino con la CLI de TRL

Uso básico

Puede iniciar el entrenamiento directamente desde la CLI especificando los argumentos necesarios, como el modelo y el conjunto de datos:

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

Uso de archivos de configuración

Para mantener limpias y reproducibles tus comandos de CLI, puedes definir todos los argumentos de entrenamiento en un archivo de configuración YAML:

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

Lanzar con:

trl sft --config sft_config.yaml

Escalar con torchrun

La CLI de TRL inicia el entrenamiento con torchrun, un proceso por cada GPU disponible. Cualquier argumento de torchrun se puede pasar directamente a trl, como --nproc_per_node o --nnodes.

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

o, con un archivo de configuración:

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

Lanzar con:

trl sft --config sft_config.yaml

DeepSpeed y FSDP

DeepSpeed ZeRO y FSDP se configuran a través de los argumentos de entrenamiento, igual que con cualquier Trainer: --deepspeed toma una configuración JSON de DeepSpeed, y --fsdp activa FSDP, ajustado con --fsdp_config. Un --fsdp simple en la línea de comandos requiere transformers 5.10 o posterior; con versiones anteriores, establece fsdp: true en un archivo de configuración. Las configuraciones listas para usar están en examples/deepspeed_configs y examples/fsdp_configs. Si instalaste TRL con pip, guarda esta configuración ZeRO-2 como zero2.json y pasa --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
Recompensa
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

o, con un archivo de configuración:

# 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

Lanzar con:

trl sft --config sft_config.yaml

Hasta la versión 2.0.0 de TRL, trl todavía se inicia a través de accelerate launch cuando recibe argumentos que solo conoce accelerate launch, como --num_processes o --accelerate_config, o cuando existe un archivo predeterminado de accelerate config. Esta ruta está obsoleta y emite una advertencia.

Uso de mezclas de conjuntos de datos

Puede usar mezclas de conjuntos de datos para combinar varios conjuntos de datos en un único conjunto de datos de entrenamiento. Esto es útil para entrenar con fuentes de datos diversas o cuando desea mezclar diferentes tipos de datos.

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

Lanzar con:

trl sft --config sft_config.yaml

Para ver todas las palabras clave disponibles para definir mezclas de conjuntos de datos, consulte las clases scripts.utils.DatasetConfig y DatasetMixtureConfig.

Obtener la información del sistema

Puede obtener la información del sistema ejecutando el siguiente comando:

trl env

Esto imprimirá la información del sistema, incluida la información de la GPU, la versión de CUDA, la versión de PyTorch, la versión de transformers, la versión de TRL y cualquier dependencia opcional que esté instalada.

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

Esta información es necesaria al reportar un problema.

Update on GitHub