Hugging Face TRL 是什么?
TRL (Transformer Reinforcement Learning) 是 Hugging Face 推出的一个库,它可以使用强化学习技术来训练Transformer语言模型。它超越了传统的监督式微调,允许模型根据奖励模型或人类偏好数据集的反馈进行优化。这对于对齐模型以遵循指令、更有帮助并减少有害输出至关重要。TRL提供了易于使用的工具来实现诸如近端策略优化 (PPO) 和直接偏好优化 (DPO) 等流行算法。
主要特点
- PPO 实现: 包含一个内置、易于使用的近端策略优化实现,用于微调语言模型。
- 直接偏好优化 (DPO): 支持DPO,这是一种更稳定、更高效的方法,用于将模型与人类偏好对齐,而无需明确的奖励模型。
- 监督式微调 (SFT): 在应用强化学习之前,提供一个
SFTTrainer用于在基于指令的数据集上进行标准的监督式微调。 - 无缝集成: 与Hugging Face生态系统(包括
transformers、accelerate和peft)原生协作,以实现高效、大规模的模型训练。 - PEFT 支持: 原生支持参数高效微调方法(如LoRA和QLoRA),允许在消费级硬件上训练大型模型。
使用案例
- 对齐聊天机器人: 通过从偏好数据中学习,微调对话式AI,使其更有帮助、无害且更具吸引力。
- 改善指令遵循: 训练模型以更好地理解和执行复杂的用户指令。
- 内容摘要: 优化模型以生成因其清晰度和相关性而受人类青睐的摘要。
- 减少模型偏见: 使用强化学习来惩罚和减少有偏见或有害的输出,促进更安全的AI。
入门指南
这是一个如何使用TRL中的 SFTTrainer 在指令数据集上微调模型的基本示例。
首先,安装必要的库: ```bash pip install trl transformers datasets peft accelerate bitsandbytes
然后,您可以使用以下Python代码开始训练: ```python import torch from datasets import load_dataset from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig from peft import LoraConfig from trl import SFTTrainer
加载数据集
dataset = load_dataset(“imdb”, split=”train”)
使用QLoRA配置加载分词器和模型
compute_dtype = getattr(torch, “float16”) bnb_config = BitsAndBytesConfig( load_in_4bit=True, bnb_4bit_quant_type=”nf4”, bnb_4bit_compute_dtype=compute_dtype, bnb_4bit_use_double_quant=False, ) model = AutoModelForCausalLM.from_pretrained( “microsoft/phi-2”, quantization_config=bnb_config, device_map={“”: 0} ) tokenizer = AutoTokenizer.from_pretrained(“microsoft/phi-2”, trust_remote_code=True) tokenizer.pad_token = tokenizer.eos_token
PEFT 配置
peft_config = LoraConfig( lora_alpha=16, lora_dropout=0.1, r=64, bias=”none”, task_type=”CAUSAL_LM”, )
训练器配置
trainer = SFTTrainer( model=model, train_dataset=dataset, peft_config=peft_config, dataset_text_field=”text”, max_seq_length=512, tokenizer=tokenizer, args={ “output_dir”: “./results”, “per_device_train_batch_size”: 4, “gradient_accumulation_steps”: 4, “learning_rate”: 2e-4, “logging_steps”: 10, “max_steps”: 100 }, )
开始训练
trainer.train()
定价
TRL 是一个在 Apache 2.0 许可下发布的开源库,因此可以完全免费用于商业和个人项目。成本仅与运行训练任务所需的计算资源有关。