-
Notifications
You must be signed in to change notification settings - Fork 207
Open
Description
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
- 参与者:chenxing, jin
- 协调者:chenyang
- dev-log 和 test-log 在一块儿
目前进度
- 已经完成了开发,提出了 PR;
- chenyang review dev-log,然后发布正式文档;
TODO
- 正式文档还需要浅浅修复下; @jhinpan @yitianlian
- review PR; @zhaochenyang20
- 现在在重构一些 Tom 老师和 Kaiyu 老师提出的问题: 要重新讨论一下 EngineBase 设计以及 Testing Scripts 的增加: @jhinpan @yitianlian
Partial Rollout
这个还在讨论阶段,在我看来是个学术和工程都很有意义的话题。我的计划是这样的:
- 原文解析 + 基本的功能讨论:@zhaochenyang20
- 约顾老师和湘君老师一起讨论这个 topic,这种破坏了 on-policy 性质的 rollout 在学术上一定会让每个人 excited; @zhaochenyang20
一些理解
- Rollout 的不平衡问题:多任务 RL 内生性的不平衡性;同类任务考虑到难度,也会有区别;
- 纯 dp 的情况下,rollout 是完全分割的,比如 100k prompt dp 8,每个是 100k / 8,prompt queue 目前不共享,简单的 routing 策略可以缓和;
目前的实现
- 设置一个长度范围,如果一个 propmt 的结果在在当前范围内得到了 eos,就返回,并且在当前轮训练;
- 进行超量 rollout,不等待每个 prompt 都完成推理:譬如这一轮只需要 128 个完整的 sample,但我拿了 512 个 sample 来推,有的 sample 相对较短就能结束,有的会 decode 相当长才能结束。但是,我启动 512 个 sample 开始 rollout,等到有 128 个完成了 decode 后,我直接直接拿去训。此时,还有 384 个没有完成 rollout。此时,推理引擎可以停下,把这些 sample 和已经推理了的部分 cache 下来,下一轮继续使用,或者在 policy 被训练的同时,拿着旧的 policy 继续 rollout 结束。
- 前者可能导致一个 sample 最终的 rollout tracjectory 由 policy 的多个 stage 推理而来,比如 0~64k 是 t-2 步,64~96k 是 t-1 步,最后只有 96~end 是真正由当前步骤的 policy rollout 而来的。
- 无论如何做,这都会带来不严格 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
MCore
DrownFish19yyihuang, uygnef, zhaochenyang20, JustinTong0323, jhinpan and 4 more
Metadata
Metadata
Assignees
Labels
No labels