[NLP]TRL 正式推出,来训练你的首个 RLHF 模型

[NLP]TRL 正式推出,来训练你的首个 RLHF 模型_第1张图片

正式向大家介绍 TRL——Transformer Reinforcement Learning。这是一个超全面的全栈库,包含了一整套工具用于使用强化学习 (Reinforcement Learning) 训练 transformer 语言模型。从监督调优 (Supervised Fine-tuning step, SFT),到训练奖励模型 (Reward Modeling),再到近端策略优化 (Proximal Policy Optimization),实现了全面覆盖!并且 TRL 库已经与 transformers 集成,方便你直接使用!

目前已支持大多数解码器架构和编码器-解码器架构。有关示例代码片段和如何运行这些工具,请参阅文档或 examples/ 文件夹

[NLP]TRL 正式推出,来训练你的首个 RLHF 模型_第2张图片

文档地址在这里https://hf.co/docs/trl/

Model Class: 涵盖了每个公开模型各自用途的概述

SFTTrainer: 帮助你使用 SFTTrainer 实现模型监督调优

RewardTrainer: 帮助你使用 RewardTrainer 训练奖励模型

PPOTrainer: 使用 PPO 算法进一步对经过监督调优的模型再调优

Best-of-N Samppling: 将“拔萃法”作为从模型的预测中采样的替代方法

DPOTrainer: 帮助你使用 DPOTrainer 完成直接偏好优化

TextEnvironment  : Text environment to train your model using tools with RL.

文档中还给出了几个例子供参考:

  • Sentiment Tuning: 调优模型以生成更积极的电影内容
  • Training with PEFT: 执行由 PEFT 适配器优化内存效率的 RLHF 训练
  • Detoxifying LLMs: 通过 RLHF 为模型解毒,使其更符合人类的价值观
  • StackLlama: 在 Stack exchange 数据集上实现端到端 RLHF 训练一个 Llama 模型
  • Learning with Tools: Walkthrough of using TextEnvironments
  • Multi-Adapter Training: 使用单一模型和多适配器实现优化内存效率的端到端训练

[NLP]TRL 正式推出,来训练你的首个 RLHF 模型_第3张图片

可以在短短几行代码中对所有 Llama-2 模型使用自己的数据进行训练!通过使用 4-bit 和 PEFT,即使在单个 A100 GPU 上,这个脚本也可以用于 70B 模型的训练。你可以在 T4 GPU 上进行 7B 的训练(即在 Colab 上可以免费获取的资源),或者在 A100 GPU 上进行 70B 的训练。

4-bit 在这里指的是四位量化(4-bit quantization),是一种将模型的权重量化为更低比特数的技术。在深度学习中,通常模型的权重会以较高的浮点数表示,这需要更大的存储和计算资源。通过量化,可以将权重表示为更短的二进制位数,从而减小模型的存储需求和计算成本。四位量化意味着权重将被表示为只有 4 个二进制位的数字,这样可以大幅减小权重的表示大小。然而,量化也会引入一定的信息损失,因为权重的精度被降低了。为了缓解这种损失,通常会使用特殊的量化技术,如对称量化或非对称量化,以尽量保留模型的性能。

PEFT(Parameter Efficient Fine-Tuning)是一种用于微调神经网络模型的技术,旨在在保持模型性能的同时,显著减少微调所需的计算资源和时间。这对于在资源有限的环境下进行模型微调非常有用。PEFT 的主要思想是通过使用较小的学习率来微调模型的一部分参数,而不是对整个模型的所有参数进行微调。具体来说,PEFT 将模型的参数分为不同的组,然后在每个组上应用不同的学习率。这样可以将微调的计算开销分布到多个小批次中,从而减少了每个小批次的计算负担,使得模型可以在较小的设备上进行高效微调。

你可以轻松地使用 SFTTrainer 和官方脚本对 Llama2 模型进行微调。例如,要对 llama2-7b 在 Guanaco 数据集上进行微调,请运行以下命令(已在单个 NVIDIA T4-16GB 上进行了测试):

''' python examples/scripts/sft_trainer.py --model_name meta-llama/Llama-2-7b-hf --dataset_name timdettmers/openassistant-guanaco --load_in_4bit --use_peft --batch_size 4 --gradient_accumulation_steps 2 '''

了解更多:hf.co/docs/trl/ma… 完整脚本:github.com/lvwerra/trl…

 

你可能感兴趣的:(人工智能)