YAML Metadata Warning:empty or missing yaml metadata in repo card

Check out the documentation for more information.

RLVE 蒸馏实验脚本包

Qwen3-1.7B 学生, RLVE 单轮 (9000 训练 prompt / 180 测试题) 上对比三种蒸馏方式。

三种方法的区别

方法 学生做什么 teacher 做什么 loss 加在哪
OPD 自己 rollout 到 MAX_RESP_LENGTH 截断 对学生生成的每个 token 打分(in-cluster reward-model worker, 不是 server) 学生自己写的整段
在线 ROSE 只写前 CUT_FIXED 个 token 当前缀 接管续写 TEACHER_MAX_TOKENS 个 token(独立 vLLM server, HTTP) 只在 teacher 续写的部分
迭代 ROSE 冻结, 先采完整轮 9000 条前缀 同上, 但整轮离线采完 同上, 之后跑普通 SFT; 下一轮学生换成本轮产物

⚠️ teacher 归属(踩过坑, 务必核对)

rose-bundle-new/bootstrap.shTEACHER_REPO 默认值是 Qwen/Qwen3-4B-Thinking-2507, 不是 32B。没显式 export 就会静默用 4B。按实际运行日志(teacher*.out 里的 teacher: /home/haojinw2/models/XXX 行, 以及 OPD 训练日志开头的 teacher : 行)核对结果:

时期 teacher 涉及的线
Aug 7-9 Qwen3-4B-Thinking-2507 checkpoints_opd_lr1e5*, checkpoints_k4096*, iter_runs/rose_iter_noeos, iter_runs/rose_iter_k4096
Aug 10 起 Qwen3-32B checkpoints_opd_1p7b_from32b*, checkpoints_rose_1p7b_from32b*, iter_runs/rose_iter_k4096t4096, iter_runs/rose_iter_k4096t1024_32b

另: models/opd_rlve_step70 是 2026-08-07 从 HuggingFace 下载的第三方 checkpoint (见 dl_opd.out), 不是本地训练产物, teacher 不可考, 不要当作自训 OPD 对照。 自训的那条是 checkpoints_opd_1p7b_from32b_v2, 已上传 SeanWang0027/opd-rlve-qwen3-1.7b-from-32b

目录

opd/           OPD 训练脚本。★run_opd_1p7b_from32b_v2.sh = 1.7B<-32B resp4096, 主对照
rose_online/   在线 ROSE。★run_rose_1p7b_32b.sh = K4096+t1024; _k4096t4096.sh = K4096+t4096
               bootstrap.sh 是 teacher server / trainer 的统一入口
rose_iter/     迭代 ROSE。run_iter.sh 是主循环, collect_round.py 采数据,
               continuation_dataset.py 做 prefix mask(loss 只算 teacher 续写部分)
launchers/     两条 32B teacher 迭代线的完整启动脚本(含 teacher server 拉起与显存探针)
sft/           纯 SFT 基线
eval/          rlve_eval.py 主评测; retrunc_eval.py 把 32k rollouts 精确截断到小 budget
               重判(纯 CPU, 不占 GPU); merge_eval.py 合并分片; verify_hf_weights.py 校验
probe/         显存 / GPU 利用率探针
recipe/        在线 ROSE 的 verl recipe 核心(agent loop 与 reward)
results/       16k 口径结果快照

关键超参

三条线学习率统一 LR=1e-5。OPD/在线ROSE 70 步, n=2 rollout; 迭代 ROSE 每轮 1 epoch (70 步), batch 128, n=1。

评测口径

一律用 16k: CTX=18432 MAX_NEW=16384 N=8 TEMP=0.7 TOP_P=0.9 TOP_K=-1。 若手上已有 32k rollouts, 用 eval/retrunc_eval.py 16384 <SRC_TAG> <DST_TAG> 截断重判即可 —— 这是精确重测不是近似(vLLM 的 max_tokens 不影响前面 token 的采样分布), 实测与原生 16k 采样差约 0.011, 在噪声内。

vLLM 上下文坑

teacher server 的 --max-model-len 必须 >= prompt + 前缀 + TEACHER_MAX_TOKENS。 K=4096 且 teacher 预算 4096 时, 默认的 8192 会让请求报 400, 需 TEACHER_MAX_MODEL_LEN=12288 TEACHER_MAX_SEQS=64


2026-08-15 变更

1. 在线 ROSE 补上 LR schedule 开关 (rose_online/run_rose_online.sh)

在此之前这个脚本只向 verl 传 optim.lr,lr_scheduler_typelr_warmup_steps_ratio 一次都没传过,吃的是 verl 默认(constant + 无 warmup)。 训练日志实测 actor/lr 从 step0 到 step69 恒为 1e-05。这是遗漏而非设计—— 离线迭代版 rose_iter/run_iter.sh 一直带 cosine + 10% warmup,所以历次 "在线 vs 离线" 对比里优化器调度是个未受控变量。

新增三个环境变量,默认值保持旧行为不变:

WARMUP=0.0          # lr_warmup_steps_ratio
SCHEDULER=constant  # constant | cosine
MIN_LR_RATIO=0.0    # cosine 的地板

调度粒度:fsdp_workers.py:893update_actor 末尾每个 training step 走一格, num_training_stepsray_trainer.py:433trainer.total_training_steps 注入。 ppo_mini_batch_size == train_batch_size 时一步一更新一格,70 步 = 70 格, 余弦在最后一步走完。若把 mini_batch 调小,一个 tick 内会有多次 optimizer step 而 lr 不变,语义会变。

2. 新增 rose_online/run_rose_1p7b_4bt_k4096_cosine.sh

K=4096 + teacher 1024 + Qwen3-4B-Thinking-2507,唯一变量是 cosine 衰减。 对照:同配置恒定 lr 的 step20 是 16k pass@8 0.1833。

3. 在线 ROSE 加 inference-time verifier 筛选 (recipe/rose_agent_loop.py)

prompt ─[student K1]─[teacher K2]─[student 写到有答案]─→ verifier
         \___________ 训练 ______/  \____ 只用于判定, 丢弃 ____/

verify_mode=keep_correct 时,学生最终答错的行 response_mask 全置 0(不产生梯度)。 第三段不参与训练,所以 MAX_RESP_LENGTH 不变,但 rollout 引擎的 MAX_MODEL_LEN 必须装下 prompt+K1+K2+续写——这两个长度在本次改动中解耦了。 新指标:rose/verify_attempted rose/verify_correct rose/verify_kept

4. 新增 eval/interleave_eval.py —— 交错推理评测

上面那套机制的离线版,用来在开训之前先测清楚值不值得。三阶段拼接走 token ids 不经文本 round-trip。实测结果(student=未训练 Qwen3-1.7B,16k 口径 n=8):

配置 teacher pass@8 keep率
基线(无 teacher) 0.1111
1024 + 1024 32B 0.2667 7.22%
1024 + 4096 32B 0.4111 13.82%
2048 + 4096 32B 0.3889 12.57%
4096 + 4096 32B 0.3111 9.65%

注意这是推理时 teacher 在场的联合推理,不是蒸馏后的单模型能力。 teacher 自然收尾率在所有档位都只有 1.5% 左右,提升与"teacher 有没有写完"无关, 只与"注入了多少 teacher 内容"有关。

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support