外观
踩坑GitHub unitreerobotics/unitree_rl_mjlab6 个月前
Unitree Go2 Rough地形PPO训练崩溃报错normal expects std >=。
本文由 AI 根据公开内容整理,可能有误,请以原文为准:Multi-GPU training crashes on Rough terrain task (NaN in PPO)(GitHub unitreerobotics/unitree_rl_mjlab #9)
状态:已解决
问题
使用10张RTX A4000训练Mjlab-Velocity-Rough-Unitree-Go2任务时,前几次迭代即触发RuntimeError: normal expects all elements of std >= 0.0。
环境
Unitree Go2, Ubuntu, Python 3.11, PyTorch CUDA, 10× NVIDIA RTX A4000, 56 CPU cores, num-envs=8192, torchrunx多卡训练
解决办法
- 将代码仓库更新至最新版本,该版本已修复MuJoCo配置及上述数值稳定性问题
- 若无法立即更新,手动修改mjlab/terrains/config.py第64行,将num_waves=4改为num_waves=4.0以解决tyro类型错误
- 在actor_critic.py和actor_critic_recurrent.py中对self.std添加clamp(min=1e-6)约束,防止优化器将其推至负值或NaN
- 在ppo.py第297行对ratio计算增加torch.clamp(torch.exp(...), max=10.0)限制,避免log_prob差值过大导致exp溢出传播NaN
讨论原作者:@diaskabdualiev 等,版权归原作者所有。
来源
本页事实对应的公开页面,以原文为准。