快捷方式

DPOLoss

class torchtune.rlhf.loss.DPOLoss(beta: float = 0.1, label_smoothing: float = 0.0)[来源]

直接偏好优化 (DPO) 损失模块: https://arxiv.org/abs/2305.18290 该论文中简述如下

直观地说,DPO 更新增加了偏好响应相对于非偏好响应的相对对数概率,但它包含了一个动态的、逐样本的重要性权重,从而防止了我们发现在使用朴素概率比目标时发生的模型退化。

基于 HF TRL 库中的实现: https://github.com/huggingface/trl/blob/5d1deb1445828cfd0e947cb3a7925b1c03a283fc/trl/trainer/dpo_trainer.py#L844

DPO 与 PPO (https://arxiv.org/abs/2009.01325) 相似,它优化策略(语言)模型以与人类偏好对齐,并使用基线参考(冻结的初始语言模型)来正则化损失函数,以防止对偏好数据集的过拟合。它与 PPO 的不同之处在于直接使用标注的偏好数据优化策略模型,而不是使用额外的奖励模型提供反馈。这显著简化了训练并降低了计算开销。

参数:
  • beta (float) – DPO 损失的温度参数,通常在 0.1 到 0.5 的范围内。默认值为 0.1。

  • label_smoothing (float) – 编码标签不确定性的参数。默认值为 0。

forward(policy_chosen_logps: Tensor, policy_rejected_logps: Tensor, reference_chosen_logps: Tensor, reference_rejected_logps: Tensor) Tuple[Tensor, Tensor, Tensor][来源]

计算一批策略模型和参考模型的对数概率的 DPO 损失。

参数:
  • policy_chosen_logps (torch.Tensor) – 策略模型对选择的响应的对数概率。形状: (batch_size)

  • policy_rejected_logps (torch.Tensor) – 策略模型对拒绝的响应的对数概率。形状: (batch_size)

  • reference_chosen_logps (torch.Tensor) – 参考模型对选择的响应的对数概率。形状: (batch_size)

  • reference_rejected_logps (torch.Tensor) – 参考模型对拒绝的响应的对数概率。形状: (batch_size)

返回:

一个包含三个张量的元组
  • losses: 批次中每个样本的 DPO 损失。

  • chosen_rewards: 对选择的响应的奖励。

  • rejected_rewards: 对拒绝的响应的奖励。

返回类型:

Tuple[torch.Tensor, torch.Tensor, torch.Tensor]


© 版权所有 2023-至今, torchtune 贡献者。

使用 Sphinx 构建,主题由 Read the Docs 提供。

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

获取针对初学者和高级开发者的深入教程

查看教程

资源

查找开发资源并获得问题解答

查看资源