Direct-OPD:小模型 RL 策略转移,大模型无需重跑 · 干货攻略
- 链接: https://x.com/_akhaliq/status/2077170802932219915
- 分类: x-tips
- 来源: X @_akhaliq
- 作者: Jay
- 更新: 2026-07-20
- 仓库: BytedTsinghua-SIA/Direct-OPD
这是什么
Direct On-Policy Distillation(Direct-OPD)是清华大学与字节跳动Seed团队提出的一种弱到强泛化方法,核心思路是:
在小模型上跑强化学习(RL),然后只把小模型 RL 产生的"策略方向"迁移给大模型,而不是让大模型直接模仿小模型的最终输出。
官方仓库:BytedTsinghua-SIA/Direct-OPD(GitHub)+ Hugging Face 模型集合
论文:arXiv:2607.05394(cs.LG) 作者:Shiyuan Feng, Huan-ang Gao, Haohan Chi*, Hanlin Wu, Zhilong Zhang, Zheng Jiang, Bingxiang He, Wei-Ying Ma, Ya-Qin Zhang, Hao Zhou(清华AIR × 字节Seed)
为什么值得关注
解决的核心问题
RLVR(Reinforcement Learning with Verifiable Rewards)是提升语言模型推理能力的有效方法,但它的代价极高:每次在新模型上跑 RL,都需要该模型自己生成大量 rollouts(探索轨迹)。随着模型变大,post-training 本身成了瓶颈。
传统"弱到强"方案是直接蒸馏 RL 后的弱教师模型,但这样做有两个致命问题:
| 问题 | 后果 |
|---|---|
| 弱教师最终策略混合了有用的 RL 增益和弱模型本身的局限性 | 大学生在模仿老师解题时,连老师的知识上限一起学来了,反而被拖后腿 |
| 弱教师是固定终点,大模型只能向这个"弱上限"靠拢 | 原本已经比老师强的大模型,性能反而下降 |
Direct-OPD 的核心 insight
不要模仿弱老师的最终状态,而是提取弱老师在 RL 中学到的"方向"——即策略转移(policy shift)。
关键公式:
ΔT(y|x) = log πT(y|x) - log πT_ref(y|x)
即:post-RL 教师策略与pre-RL 参考策略的对数比率。
这个差值本质上就是外部 RL 写进弱教师模型的隐式奖励信号。Direct-OPD 把这个信号迁移到强学生模型自己的 on-policy 状态上,让学生用自己生成的 rollouts 来接受这个方向信号。
关键效果数字(均来自官方 GitHub README / arXiv abstract / LinkedIn 帖子,多源交叉验证一致)
- AIME 2024 基准:Qwen3-1.7B 从 48.3% → 58.3%(提升 10 个百分点)
- 训练资源:仅 8 张 A100 GPU,4 小时
- 计算节省:post-training 计算量减少约 50%
- 顺序组合性:多个 RL 策略转移可以依次叠加到同一个学生模型上
核验过程
官方来源
- arXiv abstract 页(https://arxiv.org/abs/2607.05394):确认方法名称 Direct-OPD、核心公式、AIME 2024 从 48.3% 到 58.3%、4 小时 8 A100、50% 计算节省、顺序组合性
- GitHub README(https://github.com/BytedTsinghua-SIA/Direct-OPD):确认仓库存在、核心公式、训练代码基于 patched
verl代码库、conda 环境安装命令、启动脚本scripts/train_justrl_qwen.sh、HuggingFace 模型集合链接 - 项目主页(https://bytedtsinghua-sia.github.io/Direct-OPD/):确认作者 affiliation、弱到强泛化方法论细节、token 级隐式奖励分解公式
交叉验证
- LinkedIn Daily Papers 帖子(2026-07):独立确认 AIME 2024 48.3 → 58.3、8 A100 4 小时、代码和模型 checkpoint 均在 HuggingFace
- HuggingFace Papers 页面(https://huggingface.co/papers/2607.05394):与 arXiv 摘要数字一致
- Tavily 搜索结果:多个来源(chatpaper.ai、HuggingFace、Daily Paper Cast)均交叉确认 48.3% → 58.3% 的数字
原帖 vs 官方冲突处理
- 原帖主张:仓库为"无";实际:GitHub 仓库存在(
BytedTsinghua-SIA/Direct-OPD),HuggingFace 有模型 checkpoint。本攻略以官方为准。 - 原帖所有其他说法(论文标题、方法名称、AIME 结果数字)与官方来源一致。
上手步骤
环境安装
# 1. 创建 conda 环境
conda create -n direct-opd python=3.12
conda activate direct-opd
# 2. 安装依赖(vLLM + SGLANG + Megatron-Core)
cd verl
USE_MEGATRON=0 bash scripts/install_vllm_sglang_mcore.sh
pip install math-verify pyarrow transformers
cd ..
# 3. 准备模型权重和训练 parquet 数据
# 详细路径配置见:docs/setup.md
# 4. 启动训练(JustRL-to-Qwen 实验)
bash scripts/train_justrl_qwen.sh
核心方法流程(伪代码视角)
Direct-OPD 的pipeline本质是三步:
# Step 1: 在小模型上跑标准 RL,得到 post-RL checkpoint
π_T, π_T_ref = weak_model_after_rl, weak_model_before_rl
# Step 2: 计算策略转移(policy shift)作为隐式奖励
ΔT(y|x) = log(π_T(y|x)) - log(π_T_ref(y|x))
# Step 3: 大模型用自己采样的 on-policy rollouts,接受 ΔT 方向信号训练
for each student rollout:
for each token in rollout:
R_student = ΔT(token|prefix) # 用弱老师的 log-ratio 评分
update_student(R_student)
关键训练脚本结构
datasets/eval/ # 验证 parquet 文件
scripts/train_justrl_qwen.sh # 主启动脚本
verl/ # patched verl 源码树
docs/setup.md # 环境、路径、启动配置
坑与适用边界
适用场景
- ✅ 已有小模型 RL checkpoint,想快速提升大模型推理能力——无需在大模型上重跑 RL
- ✅ 推理任务(数学、代码):AIME 2024 等 verifiable reward 任务效果显著
- ✅ 计算资源有限:8 A100 + 4 小时即可完成一次策略转移
- ✅ 需要顺序叠加多个 RL 方向:多个不同 RL 过程产生的策略转移可依次应用
不适用 / 局限
- ❌ 无 RL checkpoint:Direct-OPD 依赖已有的弱模型 RL 结果,没有 RL checkpoint 则无法使用
- ❌ 连续任务或无清晰 verifiable reward 的任务:方法要求 reward 可验证(数学答案、代码执行结果等)
- ⚠️ 小模型和大模型任务分布差异:若两者任务分布差距过大,迁移方向可能不适用
- ⚠️ 暂缺完整文档:docs/setup.md 存在,但 README 较简,全量复现需要读 verl 源码
- ⚠️ 学术预印本:非顶会已接收论文,方法长期稳定性有待更多社区验证
潜在工程挑战
- verl 依赖复杂度:训练代码基于 patched verl,需要正确安装 vLLM/SGLANG/Megatron-Core 环境
- 模型权重获取:需自行准备 Qwen3 系列或其他学生/教师模型权重
- checkpoint 对齐:pre-RL 和 post-RL checkpoint 必须来自同一基础模型,路径配置需严格对应
一句话结论
Direct-OPD 把"在小模型上跑 RL 学到的方向"变成了可迁移的隐式奖励信号,让大模型无需重跑昂贵的 RL rollouts 就能享受 RL 带来的推理提升——AIME 2024 上 Qwen3-1.7B 仅用 4 小时 8 卡即可提升 10 个百分点,是 RL scaling 高效化的重要新范式,但依赖已有 RL checkpoint 且暂无详尽生产文档,工程落地需一定适配成本。