TRL 日志信息

TRL 日志信息

由于强化学习算法历来都难以调试,因此密切关注日志记录非常重要。默认情况下,TRL PPOTrainer将大量相关信息保存到wandb或tensorboard。

初始化后,将这两个选项之一传递给PPOConfig

在这里插入代码片

如果您想使用tensorboard进行日志记录,请将kwarg添加project_kwargs={"logging_dir": PATH_TO_LOGS}PPOConfig中。

PPO 记录

以下是数据中提供的记录指标的简要说明:

要监控的关键指标。我们希望最大化奖励,保持较低的 KL 散度,并最大化熵:

  • env/reward_mean:从环境中获得的平均奖励。Alias ppo/mean_scores,它是 sed 专门监控奖励模型的。
  • env/reward_std:从环境中获得的奖励的标准差。别名 ` ppo/std_scores,是 sed 专门监控奖励模型的。
  • env/reward_dist:从环境中获得的奖励的直方图分布。
  • objective/kl:新旧政策之间的平均 Kullback-Leibler (KL) 差异。它衡量新政策与旧政策的偏差程度。KL 散度用于计算目标函数中的 KL 惩罚。
  • objective/kl_dist: 的直方图分布objective/kl。
  • objective/kl_coef:目标函数中 Kullback-Leibler (KL) 散度的系数。
  • ppo/mean_non_score_reward:KL惩罚objective/kl * objective/kl_coef作为优化的总奖励来计算,以防止新策略与旧策略偏离太远。
  • objective/entropy:模型策略的熵,通过 计算-logprobs.sum(-1).mean()。高熵意味着模型的行为更加随机,这有利于探索。

训练统计:

  • ppo/learning_rate:PPO 算法的学习率。

  • ppo/policy/entropy:模型策略的熵,通过 计算pd = torch.nn.functional.softmax(logits, dim=-1); entropy = torch.logsumexp(logits, dim=-1) - torch.sum(pd * logits, dim=-1)。它衡量策略的随机性。

  • ppo/policy/clipfrac:落在 PPO 目标剪裁范围之外的概率比(旧政策/新政策)的分数。这可用于监控优化过程。

  • ppo/policy/approxkl:新旧政策之间的近似 KL 散度,通过 测量0.5 * masked_mean((logprobs - old_logprobs) ** 2, mask),对应于http://joschu.net/blog/kl-approx.html k2中的估计器

  • ppo/policy/policykl:与 类似ppo/policy/approxkl,但通过 测量masked_mean(old_logprobs - logprobs, mask),对应于http://joschu.net/blog/kl-approx.html k1中的估计器

  • ppo/policy/ratio:新旧政策之间比率的直方图分布,用于计算 PPO 目标。

  • ppo/policy/advantages_mean:GAE(广义优势估计)优势估计的平均值。优势函数衡量一个动作与某个状态的平均动作相比有多好。

  • ppo/policy/advantages: 的直方图分布ppo/policy/advantages_mean。

  • ppo/returns/mean:TD(λ) 回报的平均值,由 计算得出returns = advantage + values,是模型性能的另一个指标。有关更多详细信息,请参阅https://iclr-blog-track.github.io/2022/03/25/ppo-implementation-details/

  • ppo/returns/var:TD(λ) 回报的方差,通过 计算returns = advantage + values,是模型性能的另一个指标。

  • ppo/val/mean:值的平均值,用于监控值函数的性能。

  • ppo/val/var:值的方差,用于监控值函数的性能。

  • ppo/val/var_explained:价值函数的解释方差,用于监控价值函数的性能。

  • ppo/val/clipfrac:值函数的预测值中被剪裁的部分。

  • ppo/val/vpred:价值函数的预测值。

  • ppo/val/error: 和 返回之间的均方误差ppo/val/vpred,用于监控价值函数的性能。

  • ppo/loss/policy:近端策略优化 (PPO) 算法的策略损失。

  • ppo/loss/value:PPO算法中价值函数的损失。该值量化了函数估计预期未来奖励的程度。

  • ppo/loss/total:PPO 算法的总损失。它是策略损失和价值函数损失的总和。
    查询、响应和日志概率的统计信息:

  • tokens/queries_len_mean:查询标记的平均长度。

  • tokens/queries_len_std:查询标记长度的标准偏差。

  • tokens/queries_dist:查询标记长度的直方图分布。

  • tokens/responses_len_mean:响应标记的平均长度。

  • tokens/responses_len_std:响应标记长度的标准偏差。

  • tokens/responses_dist:响应标记长度的直方图分布。(Costa:命名不一致,应该是tokens/responses_len_dist)

  • objective/logprobs:模型所采取的操作的对数概率的直方图分布。

  • objective/ref_logprobs:参考模型所采取的操作的对数概率的直方图分布。

关键价值观

在训练过程中,会记录许多值,以下是最重要的值:

  • env/reward_mean, env/reward_std, env/reward_dist:“环境”/奖励模型的奖励分配的属性
    ppo/mean_non_score_reward:训练期间平均否定 KL 惩罚(显示参考模型与步骤中批次的新策略之间的增量)
    以下是一些可用于监控稳定性的参数(当这些参数发散或崩溃到 0 时,请尝试调整变量):

  • ppo/loss/value:如果进展不顺利,它会尖峰/NaN。

  • ppo/policy/ratio:ratio1是一个基线值,意味着在新旧策略下采样token的概率是相同的。如果该比率太高(例如200),则意味着在新策略下采样令牌的概率比旧策略高200倍。这表明新策略与旧策略差异太大,这很可能会导致后期过度优化和崩溃训练。

  • ppo/policy/clipfrac和ppo/policy/approxkl:如果ratio太高,就会ratio被剪裁,导致高clipfrac和高approxkl。

  • objective/kl:应该保持正向,这样政策与参考政策不会相差太远。

  • objective/kl_coef:目标系数AdaptiveKLController。通常在数值不稳定之前增加。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值