TRL 文档

示例

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

示例

简介

这些示例应在以下任何设置中工作(使用相同的脚本)

  • 单 GPU
  • 多 GPU (使用 PyTorch 分布式模式)
  • 多 GPU (使用 DeepSpeed ZeRO-Offload 阶段 1、2 和 3)
  • fp16 (混合精度), fp32 (正常精度), 或 bf16 (bfloat16 精度)

要在这些不同的模式下运行它,首先使用 accelerate config 初始化 accelerate 配置

注意:要使用 4 位或 8 位模型进行训练,请运行

pip install --upgrade trl[quantization]

Accelerate 配置

对于所有示例,您需要使用以下命令生成一个 🤗 Accelerate 配置文件

accelerate config # will prompt you to define the training configuration

然后,建议使用 accelerate launch 启动作业!

维护的示例

脚本可以用作如何使用 TRL 训练器的示例。它们位于 trl/scripts 目录中。此外,我们在 examples/scripts 目录中提供了示例。这些示例会定期维护和测试。

文件 描述
examples/scripts/alignprop.py 此脚本演示了如何使用 AlignPropTrainer 来微调扩散模型。
examples/scripts/bco.py 此脚本演示了如何使用 KTOTrainer 和 BCO 损失来微调模型,以使用 openbmb/UltraFeedback 数据集提高指令遵循性、真实性、诚实性和乐于助人的程度。
examples/scripts/cpo.py 此脚本演示了如何使用 CPOTrainer 来微调模型,以使用 Anthropic/hh-rlhf 数据集提高乐于助人和无害的程度。
examples/scripts/ddpo.py 此脚本演示了如何使用 DDPOTrainer 来使用强化学习微调稳定扩散模型。
examples/scripts/dpo_vlm.py 此脚本演示了如何使用 DPOTrainer 来微调视觉语言模型,以使用 openbmb/RLAIF-V-Dataset 数据集减少幻觉。
examples/scripts/orpo.py 此脚本演示了如何使用 ORPOTrainer 来微调模型,以使用 Anthropic/hh-rlhf 数据集提高乐于助人和无害的程度。
examples/scripts/ppo/ppo.py 此脚本演示了如何使用 PPOTrainer 来微调模型,以提高其继续生成具有积极情感或物理描述性语言的文本的能力。
examples/scripts/ppo/ppo_tldr.py 此脚本演示了如何使用 PPOTrainer 来微调模型,以提高其生成 TL;DR 摘要的能力。
examples/scripts/reward_modeling.py 此脚本演示了如何使用 RewardTrainer 在您自己的数据集上训练奖励模型。
examples/scripts/sft_vlm.py 此脚本演示了如何在聊天设置中使用 SFTTrainer 来微调视觉语言模型。该脚本仅在 LLaVA 1.5, LLaVA 1.6, 和 Llama-3.2-11B-Vision-Instruct 模型上进行了测试,因此用户可能会在其他模型架构中看到意外行为。

这里还有一些更容易运行的 Colab 笔记本,您可以使用它们开始使用 TRL

文件 描述
examples/notebooks/best_of_n.ipynb 此笔记本演示了当使用 PPO 微调模型时,如何使用 TRL 的 “Best of N” 采样策略。
examples/notebooks/gpt2-sentiment.ipynb 此笔记本演示了如何在 jupyter notebook 上重现 GPT2 imdb 情感调优示例。
examples/notebooks/gpt2-control.ipynb 此笔记本演示了如何在 jupyter notebook 上重现 GPT2 情感控制示例。

我们还有一些其他维护较少的示例,但可以用作参考

  1. research_projects:查看此文件夹以查找用于某些使用 TRL 的研究项目的脚本(LM 去毒化、Stack-Llama 等)。

分布式训练

通过在调用 accelerate launch 时提供 🤗 Accelerate 配置文件的路径,所有脚本都可以在多个 GPU 上运行。要在单个或多个 GPU 上启动其中一个脚本,请运行以下命令(将 {NUM_GPUS} 替换为您机器中的 GPU 数量,并将 --all_arguments_of_the_script 替换为您的参数。)

accelerate launch --config_file=examples/accelerate_configs/multi_gpu.yaml --num_processes {NUM_GPUS} path_to_script.py --all_arguments_of_the_script

您还可以调整 🤗 Accelerate 配置文件的参数以满足您的需求(例如,以混合精度进行训练)。

使用 DeepSpeed 进行分布式训练

大多数脚本都可以在多个 GPU 上与 DeepSpeed ZeRO-{1,2,3} 一起运行,以实现优化器状态、梯度和模型权重的有效分片。为此,请运行以下命令(将 {NUM_GPUS} 替换为您机器中的 GPU 数量,将 --all_arguments_of_the_script 替换为您的参数,并将 --deepspeed_config 替换为 DeepSpeed 配置文件的路径,例如 examples/deepspeed_configs/deepspeed_zero1.yaml)。

accelerate launch --config_file=examples/accelerate_configs/deepspeed_zero{1,2,3}.yaml --num_processes {NUM_GPUS} path_to_script.py --all_arguments_of_the_script
< > 更新 在 GitHub 上