Skip to content

veRL-SGLang Roadmap #74

@zhaochenyang20

Description

@zhaochenyang20

veRL SGLang Tracking Roadmap

我们开发方向非常多,相互之间可能有依赖,但是一定得有清晰的 docs 来 keep track,而且这些活的 delivery 都很急,每个项目不超过 5 个人开发,互相协作。

要记录什么

一定要杜绝耳口相传的弊病,不然我们就成大厂了。

  • test-log 文档用来让人快速复现你已经有的结果,要求详细,假设有新的 member 加入开发,他能够参考你的 test-log 快速复现出你的开发进度么? 因此,test-log 要事无巨细,这个 verl-sglang-install 是个很好的例子。
  • dev-log 文档用来记录开发心路,自己开发的同时梳理下思路,自己怀疑有问题的地方也记下来,方便复盘与讨论。我高中的时候学到的一个道理,如果一个问题你自己都不能写清楚或者给人讲清楚,那你肯定是够不清楚的。 因为,为了我们 team 的长期发展,一定要养成记录 dev-log 的习惯,方便大家复盘相互学习。这里 server-based-dev-log 是个很好的例子。
  • TODO:@ 到某个具体的人,清晰列清楚这个人在下次讨论之前所需要做的事情,越清晰越好,避免因为沟通不清晰带来误解。
  • 写的时候,中英文打空格,英文单词(比如 name 这个单词)和中文之间有空格。

VLM RLHF

移动到这里: #111

Multi-turn rollout

我先移动走到这儿了 #113

Server-Based RL

目前进度

  • 已经完成了开发,提出了 PR;
  • chenyang review dev-log,然后发布正式文档;

TODO

Partial Rollout

这个还在讨论阶段,在我看来是个学术和工程都很有意义的话题。我的计划是这样的:

  • 原文解析 + 基本的功能讨论:@zhaochenyang20
  • 约顾老师和湘君老师一起讨论这个 topic,这种破坏了 on-policy 性质的 rollout 在学术上一定会让每个人 excited; @zhaochenyang20

一些理解

  • Rollout 的不平衡问题:多任务 RL 内生性的不平衡性;同类任务考虑到难度,也会有区别;
  • 纯 dp 的情况下,rollout 是完全分割的,比如 100k prompt dp 8,每个是 100k / 8,prompt queue 目前不共享,简单的 routing 策略可以缓和;

目前的实现

  1. 设置一个长度范围,如果一个 propmt 的结果在在当前范围内得到了 eos,就返回,并且在当前轮训练;
  2. 进行超量 rollout,不等待每个 prompt 都完成推理:譬如这一轮只需要 128 个完整的 sample,但我拿了 512 个 sample 来推,有的 sample 相对较短就能结束,有的会 decode 相当长才能结束。但是,我启动 512 个 sample 开始 rollout,等到有 128 个完成了 decode 后,我直接直接拿去训。此时,还有 384 个没有完成 rollout。此时,推理引擎可以停下,把这些 sample 和已经推理了的部分 cache 下来,下一轮继续使用,或者在 policy 被训练的同时,拿着旧的 policy 继续 rollout 结束。
  3. 前者可能导致一个 sample 最终的 rollout tracjectory 由 policy 的多个 stage 推理而来,比如 0~64k 是 t-2 步,64~96k 是 t-1 步,最后只有 96~end 是真正由当前步骤的 policy rollout 而来的。
  4. 无论如何做,这都会带来不严格 on policy。如果完全 on policy,超长的 rollout 耗时非常恐怖;但是反过来,学术上尚未证明。

这里有一个相关工作,但是也没开源。

Resharding

  • 参与者:yongan, junrong
  • 协调者:chenyang

TODO

  • update_weights_from_tensor函数需要提供Iterable实现形式 ,PR
  • 完成 SGLang 在 veRL 上的多机推理,测试 FSDP-SGLang 的 resharding 阶段及推理的准确性(目前单机完成测试
  • (急)需要支持weights和kv cache分阶段wakeup的功能
  • 目前mcore的支持环境为2.6版本,为了尽快推进sglang测的对齐,希望提供一个torch2.6版本下的安装方法。 直接上2.6会报错,已经反馈。
  • Resharding 构建相关 CI,保护对应的文件。链接
  • 基于 mcore0.11 和 SGLang 进行 resharding,需要在支持多机推理后,scale 到 dpsk v3 上。链接

Documentation

#74 (comment)

MCore

#119

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions