外观
踩坑GitHub openvla/openvla1 个月前
LIBERO评测复用环境致fixture漂移,需在episode循环内重设seed
本文由 AI 根据公开内容整理,可能有误,请以原文为准:LIBERO eval: reusing one env across episodes changes results, because fixture placement is not restored(GitHub openvla/openvla #342)
状态:有绕过办法
问题
在run_libero_eval.py中复用环境进行多episode评测时,env.seed()仅执行一次导致RNG流推进,env.reset()采样的fixture位置无法被set_init_state()恢复。这造成libero_10 task 2中stove位置偏移约3mm,渲染图像像素差异显著,导致40%的评测结果翻转,破坏配对测试有效性。
环境
OpenVLA LIBERO评测脚本experiments/robot/libero/run_libero_eval.py,libero_10任务集,MuJoCo仿真环境,openvla-7b-finetuned-libero-10模型checkpoint。
解决办法
- 在episode循环内部、env.reset()之前调用env.seed(0)而非cfg.seed,确保fixture采样与新建环境协议一致(libero_utils.py默认硬编码seed为0)。
- 添加运行时断言验证fixture位置一致性:首个episode记录env.sim.model.body_pos副本,后续episode使用np.array_equal比对当前body_pos与参考值,不等则抛出异常。
- 避免仅依赖代码顺序lint测试,必须通过上述运行时数值校验防止静默回归。
- 将修复后的body_pos写入运行产物以便事后核查配对有效性。
讨论原作者:@VihaanAgarwal 等,版权归原作者所有。
来源
本页事实对应的公开页面,以原文为准。