Dev-log sppo 相比 Verl 自己实现的 ppo,主要区别是不使用 critic ,以及要修改 loss (传入 rewards)。 plan: 由于ray的monkey patch逻辑可能和单机版不太一样,第一版先侵入式修改了 ppo 的 actor 来验证算法正确性,看 valscore 涨的情况,如果loss实现正确,再考虑 monkey patch 或者自己实现 worker, actor (如果无法实现 monkey patch )。
sppo 相比 Verl 自己实现的 ppo,主要区别是不使用 critic ,以及要修改 loss (传入 rewards)。
plan:
由于ray的monkey patch逻辑可能和单机版不太一样,第一版先侵入式修改了 ppo 的 actor 来验证算法正确性,看 val_score 涨的情况,如果loss实现正确,再考虑 monkey patch 或者自己实现 worker, actor (如果无法实现 monkey patch )。
当前 step:
main_sppo
RaySPPOTrainer
实现了算法正确性验证(val_score 0.78 -> 0.92),接下来打算使代码架构更为合理。
main_sppo -> override trainer fit() -> fsdp_workers.ActorRolloutRefWorker override init_model() -> DataParallelPPOActor override update_policy - -> update_policy -> megatron_workers.ActorRolloutRefWorker needs support ?
实现过程中困惑的点:
有两个路径:
最终选择了第 2 步,因为不太了解 PPO 的实现路径上,哪些逻辑对于 verl 是必要的(对 RL 算法 和 Verl 不够熟悉导致的)