修复 SignalActor 并发问题,并重新设计基于条件锁的状态管理
作者: CLFutureX创建于 2025年12月23日更新于 2026年7月9日
描述
问题背景
当前的 SignalActor 使用 asyncio.Event 来实现生成轨迹和更新权重之间的互斥控制。在 OpenRLHF 分布式训练场景中,存在以下核心问题:
- 互斥逻辑失败:两个独立的
Event对象无法保证操作的互斥性。生成轨迹和更新权重可能同时执行,导致模型权重被污染,以及异常的样本生成。 - 并发调用风险:未锁定的状态修改可能会被并发请求篡改,使
set_*方法的执行结果不可控。
内容来源: OpenRLHF/OpenRLHF