PaddlePaddle / PARL

A high-performance distributed training framework for Reinforcement Learning
https://parl.readthedocs.io/
Apache License 2.0
3.22k stars 816 forks source link

CQL 无法复现,且会出现Nan #975

Closed VectorSL closed 1 year ago

VectorSL commented 1 year ago

hi ,我尝试复现CQL的performance, 但是无法得到较好的结果,尝试了hopper和halfcheetah都是如此。 cd PARL/examples/CQL && python train.py --test_every_steps 1000 --with_automatic_entropy_tuning 而且会存在跑飞的现象。 Warning: NaN or Inf found in input tensor. Warning: NaN or Inf found in input tensor. Warning: NaN or Inf found in input tensor.

这是我使用的部分包版本: paddlepaddle-gpu==2.3.2 parl==2.0.5 gym==0.20.0 d4rl==1.1 mujoco==2.2.2 numpy==1.21.5

求教如何才能复现结果,感谢。

TomorrowIsAnOtherDay commented 1 year ago

收到:)感谢反馈,我们按照你的环境测试下。

VectorSL commented 1 year ago

paddle-v100-v2 paddle-v100

我尝试换了台设备,系统都是ubuntu18.04, 当前的截图日志为 V100,cuda 驱动11.6,使用的cuda lib是11.3.
再次跑cql网络,发现刚开始正常,但后面精度会断档。

wangzelong0663 commented 1 year ago

paddle-v100-v2 paddle-v100

我尝试换了台设备,系统都是ubuntu18.04, 当前的截图日志为 V100,cuda 驱动11.6,使用的cuda lib是11.3. 再次跑cql网络,发现刚开始正常,但后面精度会断档。

你好,这边实验了四个环境,每个环境三个随机种子,halfcheetah-medium-expert-v0 确实会出现先上升后断档下降,但后续继续训练还是会上升的情况。其他的三个环境结果比较正常。结果如下: image 测试环境如下: Python 3.8.13 D4RL 1.1
gym 0.20.0 mujoco 2.2.2 mujoco-py 2.1.2.14 numpy 1.23.4 opencv-python 4.6.0.66 paddlepaddle-gpu 2.3.2 parl 2.0.5

目前关于你的问题:

  1. NAN的问题,应该是paddle版本等问题, 这边后续会增加梯度裁剪/减少学习率等来尽量避免这个问题。
  2. 训练不稳定的问题,这边定位大概是paddle的版本不一样,导致之前的超参可能不是很鲁棒,这边会进一步调试和更新CQL代码。

你可以先增加--test_every_steps 的数值,和在下面代码处减少写入tensorboard的loss的频率以便减少训练时间,可以先跑下验证其他环境的效果。https://github.com/PaddlePaddle/PARL/blob/250af81ae1f837c9934e1a6a2f5079ebbbfa8789/examples/CQL/train.py#L83

这边预计下周会更新代码。

VectorSL commented 1 year ago

感谢解答。 尝试了其他的环境,跑完1e6步能获得类似精度曲线了。