TRL 文档
示例
并获得增强的文档体验
开始使用
示例
简介
这些示例应在以下任何设置中工作(使用相同的脚本)
- 单 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 情感控制示例。 |
我们还有一些其他维护较少的示例,但可以用作参考
- 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