TRL 文档

示例

Hugging Face's logo
加入 Hugging Face 社区

并获得增强版文档体验

入门

示例

介绍

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

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

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

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

pip install --upgrade trl[quantization]

加速配置

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

accelerate config # will prompt you to define the training configuration

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

维护的示例

文件 描述
examples/scripts/alignprop.py 该脚本展示了如何使用AlignPropTrainer微调扩散模型。
examples/scripts/bco.py 该脚本展示了如何使用KTOTrainer和BCO损失来微调模型,使用openbmb/UltraFeedback数据集来提高模型对指令的遵循度、真实性、诚实度和帮助度。
examples/scripts/chat.py 该脚本允许您加载模型并将其用作聊天机器人。
examples/scripts/cpo.py 该脚本展示了如何使用CPOTrainer来微调模型,使用Anthropic/hh-rlhf数据集来提高模型的帮助度和无害性。
examples/scripts/ddpo.py 该脚本展示了如何使用DDPOTrainer通过强化学习微调稳定扩散模型。
examples/scripts/dpo_visual.py 该脚本展示了如何使用DPOTrainer来微调视觉语言模型,使用openbmb/RLAIF-V-Dataset数据集来减少幻觉。
examples/scripts/dpo.py 该脚本展示了如何使用DPOTrainer来微调稳定模型,使用Anthropic/hh-rlhf数据集来提高模型的帮助度和无害性。
examples/scripts/kto.py 该脚本展示了如何使用KTOTrainer来微调模型。
examples/scripts/orpo.py 该脚本展示了如何使用ORPOTrainer来微调模型,使用Anthropic/hh-rlhf数据集来提高模型的帮助度和无害性。
examples/scripts/ppo_multi_adapter.py 该脚本展示了如何使用PPOTrainer训练具有多个适配器的单个基础模型。需要您在运行该示例脚本之前先进行奖励模型训练。
examples/scripts/ppo.py 该脚本展示了如何使用PPOTrainer使用IMDB数据集来微调情感分析模型。
examples/scripts/reward_modeling.py 该脚本展示了如何使用RewardTrainer在您自己的数据集上训练奖励模型。
examples/scripts/sft.py 该脚本展示了如何使用SFTTrainer将模型或适配器微调到目标数据集。
examples/scripts/vsft_llava.py 该脚本展示了如何使用SFTTrainer在聊天环境中微调视觉语言模型。该脚本只在LLaVA 1.5模型上进行了测试,因此用户在其他模型架构中可能会看到意外的行为。

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

文件 描述
examples/notebooks/best_of_n.ipynb 该笔记本演示了如何在使用PPO微调模型时使用TRL的“最佳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 等)。

分布式训练

所有脚本都可以在多个GPU上运行,方法是在调用accelerate launch时提供 🤗 Accelerate 配置文件的路径。要在一台或多台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上更新