快捷方式

PPOLoss

class torchtune.rlhf.loss.PPOLoss(epsilon: float = 0.1, value_clip_range: float = 0.2, value_coeff: float = 0.1)[source]

近端策略优化 (PPO) 损失模块。此实现使用以下参考

https://arxiv.org/abs/1707.06347 eqn. 7

https://github.com/vwxyzjn/lm-human-preference-details/blob/ccc19538e817e98a60d3253242ac15e2a562cb49/lm_human_preference_details/train_policy_accelerate.py#L719

https://github.com/openai/baselines/blob/ea25b9e8b234e6ee1bca43083f8f3cf974143998/baselines/ppo2/model.py#L68-L75

参数:
  • epsilon (float) – PPO 更新的裁剪范围。

  • value_clip_range (float) – 价值函数更新的裁剪范围。

  • value_coeff (float) – 价值函数损失贡献的系数。

forward(pi_old_logprobs: Tensor, pi_logprobs: Tensor, advantages: Tensor, phi_old_values: Tensor, phi_values: Tensor, returns: Tensor, padding_masks: Optional[Tensor] = None, value_padding_masks: Optional[Tensor] = None) Tuple[Tensor, Tensor, Tensor, Tensor, Tensor][source]

PPO 损失模块的前向传播。

参数:
  • pi_old_logprobs (torch.Tensor) – 旧策略的对数概率。

  • pi_logprobs (torch.Tensor) – 当前策略的对数概率。

  • advantages (torch.Tensor) – 优势值。

  • phi_old_values (torch.Tensor) – 旧价值函数的价值预测。

  • phi_values (torch.Tensor) – 当前价值函数的价值预测。

  • returns (torch.Tensor) – 返回值。

  • padding_masks (Optional[torch.Tensor]) – 与 pi_logprobs 形状相同的填充标记掩码,其中 True 表示相应的损失值应参与策略损失计算。

  • value_padding_masks (Optional[torch.Tensor]) – 与 pi_logprobs 形状相同的填充标记掩码,其中 True 表示相应的损失值应参与价值损失计算。

返回:

包含五个张量的元组
  • loss: 总 PPO 损失。

  • policy_loss: 策略函数损失。

  • value_loss: 价值函数损失。

  • ratios: 当前策略概率与旧策略概率之间的比率。

  • clipfrac: 被裁剪的比率的比例。

返回类型:

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

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

获取面向初学者和高级开发者的深入教程

查看教程

资源

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

查看资源