TRL documentation

Interfaces de Linha de Comando (CLIs)

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

and get access to the augmented documentation experience

to get started

Interfaces de Linha de Comando (CLIs)

O TRL oferece uma interface de linha de comando (CLI) poderosa para ajustar finamente modelos de linguagem grandes (LLMs) usando métodos como Supervised Fine-Tuning (SFT), Direct Preference Optimization (DPO) e outros. A CLI abstrai grande parte do código repetitivo, permitindo que você inicie trabalhos de treinamento rapidamente e de forma reprodutível.

Comandos

Os comandos atualmente suportados são:

Comandos de Treinamento

  • trl distillation: destilar um modelo professor em um aluno com destilação de conhecimento on-policy
  • trl dpo: ajuste fino de um LLM com DPO
  • trl grpo: ajuste fino de um LLM com GRPO
  • trl kto: ajuste fino de um LLM com KTO
  • trl reward: treinar um Modelo de Recompensa
  • trl rloo: ajuste fino de um LLM com RLOO
  • trl sft: ajuste fino de um LLM com SFT

Outros Comandos

  • trl env: obtém as informações do sistema
  • trl vllm-serve: serve um modelo com vLLM (descontinuado, use vllm serve diretamente, veja integração com vLLM)

Fine-Tuning com o TRL CLI

Uso Básico

Você pode iniciar o treinamento diretamente pela CLI, especificando os argumentos necessários, como o modelo e o conjunto de dados:

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

Usando Arquivos de Configuração

Para manter seus comandos de CLI limpos e reproduzíveis, você pode definir todos os argumentos de treinamento em um arquivo de configuração YAML:

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

Inicie com:

trl sft --config sft_config.yaml

Escala com torchrun

O TRL CLI inicia o treinamento com torchrun, um processo por GPU disponível. Qualquer argumento do torchrun pode ser passado diretamente para o trl, como --nproc_per_node ou --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

ou, com um arquivo de configuração:

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

Inicie com:

trl sft --config sft_config.yaml

DeepSpeed e FSDP

DeepSpeed ZeRO e FSDP são configurados por meio dos argumentos de treinamento, como para qualquer Trainer: --deepspeed aceita uma configuração JSON do DeepSpeed, e --fsdp ativa o FSDP, ajustado com --fsdp_config. Um --fsdp simples na linha de comando requer transformers 5.10 ou posterior; em versões anteriores, defina fsdp: true em um arquivo de configuração. Configurações prontas para uso estão em examples/deepspeed_configs e examples/fsdp_configs. Se você instalou o TRL com pip, salve esta configuração ZeRO-2 como zero2.json e passe --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

ou, com um arquivo de configuração:

# 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

Inicie com:

trl sft --config sft_config.yaml

Até a TRL v2.0.0, o trl ainda é iniciado por meio do accelerate launch quando recebe argumentos que apenas o accelerate launch conhece, como --num_processes ou --accelerate_config, ou quando existe um arquivo padrão de accelerate config. Esse caminho está obsoleto e emite um aviso.

Usando misturas de conjuntos de dados

Você pode usar misturas de conjuntos de dados para combinar vários conjuntos de dados em um único conjunto de dados de treinamento. Isso é útil para treinar em fontes de dados diversas ou quando você deseja misturar diferentes tipos de dados.

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

Inicie com:

trl sft --config sft_config.yaml

Para ver todas as palavras-chave disponíveis para definir misturas de conjuntos de dados, consulte as classes scripts.utils.DatasetConfig e DatasetMixtureConfig.

Obtendo as informações do sistema

Você pode obter as informações do sistema executando o seguinte comando:

trl env

Isso exibirá as informações do sistema, incluindo as informações da GPU, a versão do CUDA, a versão do PyTorch, a versão do transformers, a versão do TRL e quaisquer dependências opcionais instaladas.

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

Essas informações são obrigatórias ao reportar um problema.

Update on GitHub