LLM | 完全面向算法的 VeRL 代码阅读笔记



1 代码结构简介

关键代码在 ray_trainer.py 的 fit 函数里(VeRL 包了好几层)。

with marked_timer 是关键部分。

verl 支持哪些算法?ppo grpo dapo reinforce++,好像都支持。

于是推断,PPO GRPO 等算法,它们应该有一个共用的流程,但还有一些自己的实现,可能包装在某个关键函数内。

现在看了 ppo 和 grpo,还没看 reinforce++。

RayPPOTrainer fit() 函数的基本流程

照抄一下 with marked_timer 的几步。

advantage 的计算过程

advantage:adv_estimator 参数,在 ray trainer 里的 compute_advantage 函数 work。参考博客:https://zhuanlan.zhihu.com/p/677607581

核心实现在 core_algos 里面。

与 ref policy 的 KL 散度 loss 的计算

KL:GRPO 使用 KL loss。这个 loss 好像加在 actor 里面。ray trainer 的 self.actor_rollout_wg 这个东西是 actor。其实是在 verl/workers/actor/dp_actor.py 里面,if self.config.use_kl_loss: ,不过这个最后还是会引到 core_algo 里面

VeRL 的 evaluation 代码

还没看【】

目前对我来说比较 minor 的点

关于 reward:

reward,在 experimental/reward_loop/reward_loop.py 的 worker 的 compute score 里,会调用一个 reward manager,然后好像就都靠这个 reward manager 了

关于 actor():

ray trainer 的 self.actor_rollout_wg 这个东西是 actor。

所以 wg 的意思是 work group。actor PPO 和 GRPO 使用的都是 vanilla,只要有 advantage,actor 的 loss 计算方式,这两个算法都是一样的。

2 VeRL 官方提供的示例训练脚本

可以把 csdn 博客搬过来,简单解释一下每一篇的内容。

3 跑官方示例脚本的记录

还在跑,还没看 eval【】



posted @ 2026-02-17 23:08  MoonOut  阅读(55)  评论(0)    收藏  举报