首页 > 解决方案 > 带有 RuntimeWarning 的 RLlib PPO 奖励扁平线:空切片的平均值

问题描述

我已经为此苦苦挣扎了几天,所以真的需要我能得到的所有帮助!在我使用 TensorFlow 支持的 RLlib 的 PPO 算法进行训练期间,所有训练都进行得很好(奖励正在增加)。系统可获得的最高奖励为 +20车辆静止不动且不做任何事情可以获得0奖励

奖励增加注释奖励增加

突出显示的区域并没有真正学习,因为这发生在看起来像的警告之后

Warning: NaN or Inf found in input tensor

打印了几次,然后是另一个多次打印的警告:

(pid=853) /usr/local/lib/python3.6/dist-packages/ray/rllib/execution/train_ops.py:264: RuntimeWarning: Mean of empty slice

这大约是我的训练集开始超时并且集长度直线上升的时候。

剧集超时

剧集长度直接拍摄

请注意(在顶部)由于超时(而不是完成或达到目标)而结束的平均剧集数如何突然飙升至接近 1M 的训练步骤。剧集的长度(底部)或剧集中的步数也同时上升。

我不确定这是否是由于某种内存问题,因为某些运行也有 RAM 警告以及上面所说的仅剩 10% 的 RAM 内存,这可能会导致错误。我尝试在 ray.init() 上设置某些值但无济于事

我在具有 16 GB RAM、12 个 CPU 内核和 1 个 GPU 以及相关 RLlib(Ray 1.4.0)配置的 Ubuntu 18.04.5 LTS 上运行它:

policy_conf['batch_mode'] = 'complete_episodes'
policy_conf['simple_optimizer'] = False
policy_conf['num_workers'] = 1
policy_conf['num_envs_per_worker'] = 1
policy_conf['rollout_fragment_length'] = 256
policy_conf['num_gpus'] = 1
policy_conf['num_gpus_per_worker'] = 0
policy_conf['num_cpus_for_driver'] = 4
policy_conf['num_cpus_per_worker'] = 4
policy_conf['train_batch_size'] = 1024
policy_conf['sgd_minibatch_size'] = 128
policy_conf['shuffle_sequences'] = True
policy_conf['num_sgd_iter'] = 30
policy_conf['gamma'] = 0.99
policy_conf['lr'] = 1e-4
policy_conf['evaluation_num_workers'] = 1
policy_conf['evaluation_interval'] = 25
policy_conf['evaluation_num_episodes'] = 10

更新(2021 年 3 月 7 日)

我做了更多的挖掘,似乎生成的连续动作突然变成了nan值。此外,在此之前的某些操作也会超出指定的操作空间范围。示例:动作空间应该在 -7.5 和 +3 之间,但生成的动作可能具有值 50。我仍然不确定为什么会发生这种情况,或者这两个问题是否相关。

有人可以指出我正确的方向吗?我将不胜感激。

更新(2021 年 5 月 7 日)

我已将其移至另一个问题,因为我已将问题的性质缩小到在这里获得nan 连续动作

标签: numpytensorflowreinforcement-learningrayrllib

解决方案


推荐阅读