TRL documentation

命令行界面(CLI)

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

命令行界面(CLI)

TRL 提供了一个功能强大的命令行界面(CLI),用于使用监督微调(SFT)、直接偏好优化(DPO)等方法对大型语言模型(LLM)进行微调。该 CLI 屏蔽了大量样板代码,让你能够快速且可复现地启动训练任务。

命令

当前支持的命令为:

训练命令

  • trl distillation:使用基于策略的知识蒸馏将教师模型蒸馏到学生模型中
  • trl dpo:使用 DPO 微调 LLM
  • trl grpo:使用 GRPO 微调 LLM
  • trl kto:使用 KTO 微调 LLM
  • trl reward:训练奖励模型
  • trl rloo:使用 RLOO 微调 LLM
  • trl sft:使用 SFT 微调 LLM

其他命令

  • trl env:获取系统信息
  • trl vllm-serve:使用 vLLM 提供模型服务(已弃用,请直接使用 vllm serve,参见 vLLM 集成)

使用 TRL CLI 进行微调

基本用法

您可以通过指定模型和数据集等必需参数,直接从命令行启动训练:

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

使用配置文件

为了让您的 CLI 命令保持简洁且可复现,您可以在 YAML 配置文件中定义所有训练参数:

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

使用以下命令启动:

trl sft --config sft_config.yaml

使用 torchrun 进行扩展

TRL CLI 使用 torchrun 启动训练,每个可用 GPU 对应一个进程。任何 torchrun 参数都可以直接传递给 trl,例如 --nproc_per_node 或 --nnodes。

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

或者,使用配置文件:

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

使用以下命令启动:

trl sft --config sft_config.yaml

DeepSpeed 和 FSDP

DeepSpeed ZeRO 和 FSDP 通过训练参数进行配置,与任何 Trainer 一样:--deepspeed 接受一个 DeepSpeed JSON 配置文件,而 --fsdp 用于启用 FSDP,并通过 --fsdp_config 进行调优。在命令行中单独使用 --fsdp 需要 transformers 5.10 或更高版本;如果使用旧版本,请在配置文件中设置 fsdp: true。现成的配置文件位于 examples/deepspeed_configs 和 examples/fsdp_configs。如果您通过 pip 安装了 TRL,请将此 ZeRO-2 配置保存为 zero2.json,并传入 --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
奖励
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

或者,使用配置文件:

# 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

使用以下命令启动:

trl sft --config sft_config.yaml

在 TRL v2.0.0 之前,当 trl 接收到仅 accelerate launch 识别的参数(例如 --num_processes 或 --accelerate_config),或者存在 accelerate config 默认文件时,trl 仍会通过 accelerate launch 启动。此路径已被弃用,并会发出警告。

使用数据集混合

您可以使用数据集混合将多个数据集合并为一个训练数据集。这在需要基于多样化数据源进行训练,或希望混合不同类型数据时非常有用。

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

使用以下命令启动:

trl sft --config sft_config.yaml

要查看用于定义数据集混合的所有可用关键字,请参阅 scripts.utils.DatasetConfig 和 DatasetMixtureConfig 类。

获取系统信息

运行以下命令即可获取系统信息:

trl env

这将打印出系统信息,包括 GPU 信息、CUDA 版本、PyTorch 版本、transformers 版本、TRL 版本,以及已安装的任何可选依赖项。

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

报告问题时,需要提供此信息。

Update on GitHub