简介
631 字约 2 分钟
2026-07-03
面向 RLVR 和 GRPO 的数据调度(选择 · 混合 · 重加权)—— 一个零侵入的 verl 插件。
DataFlex-RL 把数据中心的思路带到强化学习。它挂载到 verl 的开放注册表,不修改 verl 源码:装好两个包,在 YAML 里加一个小配置块,用 verl 原生入口运行即可。
pip install verl
pip install dataflex_verl为什么 RL 需要数据调度?
在 RL 微调里,并非每条 rollout 都同样有用。一个 prompt 若所有回答都对(或都错)就没有 梯度信号;一个低概率 token 可能主导更新;某个数据域可能早已掌握而另一个还在落后。 DataFlex-RL 让训练过程利用已经产生的信号,动态决定强调、丢弃或多采哪些数据 —— 无需第二个 reward model,也无需额外前向。
这些信号包括 reward、advantage、per-token log-prob 和分组结构(uid),因此可以从多个 角度定义“哪些数据更值得用于下一次更新”。
三种机制
| 机制 | 作用 | 挂载点 |
|---|---|---|
| Reweight(重加权) | per-token / per-sample 的 loss 权重 | trainer,advantage 之后 |
| Select(选择) | 丢弃样本(梯度置零) | trainer,advantage 之后 |
| Mix(混合) | 动态域采样配比 | 自定义 replay buffer,rollout 之前 |
三者用同一套设计表达:共享的 Scorer(信号 → 分数)喂给机制特定的 Actuator (分数 → 动作)。设计理念见框架设计。
与 DataFlex 的关系
DataFlex 是面向 SFT 的原始数据中心训练系统, 基于 LLaMA-Factory。DataFlex-RL 是它的 RL 版本:沿用同样的"选择/混合/重加权"词汇和 同样的 Scorer/Actuator 分解,但重新落在 verl 的 RL 训练循环与信号之上。二者共享设计基因, 但是独立的包(宿主框架不同)。
已包含的示例
仓库提供了基于 Qwen2.5-0.5B 和 GSM8K 的短流程 GRPO 示例,覆盖三种机制。示例会输出 保留比例、token 权重统计和域采样比例等 DataFlex 指标,用于确认插件接入正确;完整训练 实验可以在此基础上扩展。
受控 RLVR 对比研究及其分析记录见独立的 evaluation companion。本文档站聚焦运行时包 及其扩展方式。
下一步
- 框架设计 —— signal/action 架构与 verl 挂载点
- 安装 —— 安装、sanity check 与兼容性说明
- 然后深入某个机制:Reweighter · Selector · Mixer