TCOD: Exploring Temporal Curriculum in On-Policy Distillation for Multi-turn Autonomous Agents
Paper: arXiv:2604.24005 Code: kokolerk/TCOD Code reference:
main@af392f50(2026-05-01)
1. Motivation (研究动机)
当前 OPD 在 multi-turn agent 上的核心缺口
On-Policy Distillation (OPD) 在数学题、问答等 single-turn 场景里很自然:student 用自己的分布采样,teacher 在这些 on-policy 样本上提供 token-level 或 sequence-level 的 dense KL 监督,避免 RL 稀疏奖励带来的低样本效率。但 multi-turn autonomous agent 的状态不是单个 prompt,而是历史 。早期一步错误会改变后续 observation 和 admissible actions,于是 teacher 给出的监督不再只是“纠正一个 token”,而是在 student 已经偏离 teacher 支持域的轨迹上做强行对齐。
论文把这个失败模式命名为 Trajectory-Level KL Instability:在 ALFWorld pilot study 中,Qwen3-0.6B/1.7B student 从 Qwen3-30B-A3B-Instruct teacher 做 vanilla OPD 时,trajectory-level KL 在训练中上升,成功率接近坍塌到 0;对较大的 Qwen2.5-3B/7B student,即使 KL 最终下降,初始 KL 也可达到约 ,远高于收敛后的 。这说明问题不是单纯“teacher 不够强”或“student 不够大”,而是长 horizon 里的 early-turn error compounding 让 distillation 信号在深层轨迹上变得不稳定。
Figure 1 解读:左侧强调 vanilla OPD 在完整多轮轨迹上直接对齐 teacher;一旦 student 早期动作偏离,后续状态会被自己的错误历史污染。右侧对应 TCOD 的直觉:不要一开始就把完整长 horizon 暴露给 student,而是把可学习的轨迹深度作为 curriculum 变量逐步放大。
Figure 2a–2d 解读:前两幅显示 vanilla OPD 中 KL spike 与 success-rate collapse 同时出现;第三幅显示不同 teacher–student 组合的 initial KL 与 final KL 差距很大;第四幅按 turn index 展示 per-turn KL 随交互轮数增加而升高,支持“错误随轨迹深度放大”的解释。这里的重点不是某个 benchmark 数值,而是 KL 的时间结构:越靠后的位置越容易处在 student-induced OOD state。
论文要解决的问题
TCOD 要解决的是:如何保留 OPD 的 dense teacher signal,同时避免 student 在训练早期被完整多轮任务的 compounding error 拖垮。它不是重新设计 reward model,也不是用额外 verifier 评价难度,而是把“student 需要独立控制多少轮交互”作为 curriculum 难度。
为什么值得研究
如果这个问题解决,OPD 可以从 single-turn reasoning 扩展到长 horizon agent training:student 不必依赖纯 SFT 的 teacher-forced trajectory,也不必用高方差 sparse reward RL 从零探索完整任务;teacher 的 token-level 分布仍然可用,但只在当前 curriculum 阶段中 student 真正负责的那段轨迹上提供监督。
2. Idea (核心思想)
TCOD 的核心 insight 是:multi-turn OPD 的难度主要来自 trajectory depth,而不是样本本身的静态难度;因此 curriculum 不需要外部 difficulty scorer,只需要控制 student 在一条轨迹中负责的时间窗口。训练初期让 student 学短 horizon 或靠近成功终点的子任务,随着训练推进逐步扩展到完整轨迹。
与 vanilla OPD 相比,TCOD 不在第 0 步就要求 student 自己 roll out 全部 轮并对每一轮做 KL;它只在一个随训练步数增长的窗口上计算 OPD loss。与 SFT 相比,TCOD 仍然是 on-policy:student 在自己的行动窗口内生成动作,teacher 只提供分布监督或前缀导航,而不是把整条 gold trajectory 直接 teacher-forcing 给 student。
论文提出两个互补变体:TCOD-F2B 从 trajectory 前段开始,限制 student 最多执行 步;TCOD-B2F 从成功轨迹后段开始,teacher 先执行成功前缀,把环境推进到靠近终点的位置,再让 student 接管最后 步。二者都用线性 pacing 扩大 ,但 inductive bias 不同:F2B 更便宜、更接近测试起点;B2F 更强地避免早期错误堆积,但需要预收集 teacher 成功轨迹。
更具体地说,TCOD 把“是否让 student 负责这一步环境转移”与“是否对这一步计算 distillation loss”绑定起来。vanilla OPD 中,student 对整条轨迹所有状态负责,因此一旦早期偏离,后面每个 token 的 KL 都会在被污染的历史上继续累积;TCOD 则把可控窗口限制在当前 ,在窗口外要么直接停止 rollout(F2B),要么由 teacher/expert 前缀把环境推进到可靠状态(B2F)。这使 teacher 的 dense signal 主要落在 student 当前有能力学习的 state distribution 上。
这个思想与普通 curriculum learning 的差别也很关键:传统 curriculum 常需要外部模型、人工规则或 reward 统计来定义样本难度;TCOD 的难度变量是 agent 任务内部天然存在的时间维度。随着 从 1 增长到 ,训练目标从短 horizon imitation 平滑过渡到完整 on-policy distillation,因此最后仍然服务于 end-to-end autonomous execution,而不是停留在 teacher-forced imitation。
3. Method (方法)
3.1 Problem setup: multi-turn OPD objective
论文把 agent 历史写成: 完整 trajectory 为 。vanilla multi-turn OPD 的目标是: 这个式子的危险点在于期望分布由 产生:如果早期 错了,后续 已经不是 teacher 熟悉的成功分布,KL 既可能很大,也可能不再对应可学习的纠正信号。
3.2 Overall framework: TCOD-F2B / TCOD-B2F
Figure 3 解读:左侧是 vanilla OPD,student 从起点一路执行完整 trajectory,并在完整轨迹上被 teacher KL 监督;中间 TCOD-F2B 把 student 可执行 horizon 限制为 ,先学前 步,再逐渐放大;右侧 TCOD-B2F 让 teacher 先执行成功轨迹前缀,student 只接管最后 步,红色 teacher prefix stop-gradient,蓝色 student window 才产生训练信号。
直觉上,TCOD 把一个长 horizon 的不稳定目标拆成一串“可控深度”的子目标。早期 小,student 不会被后半段复杂状态拖入高 KL 区;后期 ,目标逐步恢复到完整 OPD,从而减少 train-test mismatch。B2F 的额外好处是 teacher prefix 把环境放到“成功路径附近”,student 学到的是如何从可行状态继续完成任务,而不是在早期错误状态中盲目探索。
3.3 TCOD-F2B: shallow-to-deep forward curriculum
F2B 的做法是限制训练时 student 最多 rollout 步:
线性 pacing 为:
在 released code 中,ALFWorld F2B workflow 通过 TCOD_f2b_alfworld_workflow._compute_distill_window() 实现同一思想:distill_window = 1 + current_step // checkpoint_steps,训练时 effective_steps = min(distill_window, max_env_steps)。因此 student 只执行并返回前 effective_steps 个 Experience;每个 turn 再调用 teacher 的 logprobs_async() 得到 teacher token logprobs。
论文公式与 released code 实现差异:论文写成通用 pacing,而 released YAML 使用 checkpoint_steps 控制增长;例如 TCOD_examples/alfworld/tcod_f2b.yaml 设 total_steps=250、checkpoint_steps=6、max_env_steps=30,WebShop 设 total_steps=150、checkpoint_steps=4、max_env_steps=15。代码没有显式名为 eta 的字段,而是用 checkpoint_steps 达到等价的离散窗口扩展。
def tcod_f2b_rollout(workflow, env, model, teacher_model, task):
current_step = parse_batch_id(task.batch_id)
distill_window = 1 + current_step // task.workflow_args["checkpoint_steps"]
effective_steps = min(distill_window, task.workflow_args["max_env_steps"])
history, memory, turn_responses = [], [], []
observation, info = env.reset()
for r in range(effective_steps):
prompt = build_agent_prompt(observation, history, info)
response = model.chat(memory + [{"role": "user", "content": prompt}], logprobs=0)
turn_responses.append(response)
action = parse_action(response.response_text)
history.append(format_history(observation, r + 1, action))
observation, reward, done, info = env.step(action)
if done:
break
for i, response in enumerate(turn_responses):
teacher_lp = teacher_model.logprobs(tokens=response.tokens, temperature=task.temperature)
response.teacher_logprobs = teacher_lp[response.prompt_length - 1:]
response.reward = float(done)
response.eid.step = i
return turn_responses3.4 TCOD-B2F: teacher-prefix then student takeover
B2F 先预收集成功 teacher trajectory 。设成功轨迹长度为 ,teacher 执行前 步,把环境推进到中间 checkpoint;student 从那里接管最后 步。目标为:
released code 在 TCOD_b2f_alfworld_workflow._linear_checkpoint_step() 中用 checkpoint_step = max(0, min(max_expert_actions - current_step // checkpoint_steps, max_expert_actions)) 计算还要由 teacher/expert prefix replay 的步数;随后 _create_alfworld_env_with_checkpoint(game_file_path, predefined_actions, effective_checkpoint_step) 执行预定义 teacher actions。如果 checkpoint_step>0,student 只从 checkpoint 后开始产生 Experience;teacher prefix 不产生 gradient。
论文公式与 released code 实现差异:论文表述为 teacher policy 运行前缀,但 ALFWorld released code 实际读取 raw_task["actions"] 里的预定义 expert/teacher actions 来 replay checkpoint;这等价于使用预收集成功轨迹,但并不是在线调用 teacher 逐步采样前缀。代码还把 teacher prefix 轮数写入 metrics:teacher_env_rounds=start_step、student_env_rounds=self._env_rounds-start_step。
def tcod_b2f_rollout(workflow, env_factory, model, teacher_model, task):
current_step = parse_batch_id(task.batch_id)
expert_actions = task.raw_task.get("actions", [])
max_expert = max(0, len(expert_actions) - 1)
checkpoint_step = max(0, min(max_expert - current_step // task.workflow_args["checkpoint_steps"], max_expert))
if checkpoint_step > 0:
env, observation, info, history, task_desc, start_step, done = env_factory.with_checkpoint(
task.task_desc, expert_actions, checkpoint_step
)
else:
env, observation, info, history, task_desc, start_step = env_factory.from_start(task.task_desc)
turn_responses = []
for r in range(start_step, task.workflow_args["max_env_steps"]):
prompt = build_agent_prompt(observation, history, info)
response = model.chat([{"role": "user", "content": prompt}], logprobs=0)
turn_responses.append(response)
action = parse_action(response.response_text)
history.append(format_history(observation, r + 1, action))
observation, reward, done, info = env.step(action)
if done:
break
for i, response in enumerate(turn_responses):
teacher_lp = teacher_model.logprobs(tokens=response.tokens, temperature=task.temperature)
response.teacher_logprobs = teacher_lp[response.prompt_length - 1:]
response.eid.step = start_step + i
return turn_responses3.5 Multi-turn OPD advantage and loss window
真正进入 trainer 的信号由 trinity/algorithm/advantage_fn/on_policy_distill_advantage.py 计算。核心 token-level 形式是:
并用 response_mask & teacher_valid_mask 只保留有效 response tokens。MultiTurnOpdAdvantage 把每个 turn 当作 batch 中一行,再用 unique_ids 按 trajectory 聚合 kl/trajectory_mean、kl/trajectory_std。这和论文的 trajectory-level KL 分析一致:模型不只看每个 response 的 KL,还关心同一条 multi-turn run 内 KL 的累计。
论文公式与 released code 实现差异:论文 loss 写成完整动作分布的 KL,released code 实际用 student sampling logprobs 与 teacher token logprobs 的差来构造 advantage:advantages = kl_coef * (teacher_log_probs - old_log_probs),同时把 returns 设成同一个 tensor。这是常见实现层面的 token-level OPD 近似,而不是显式枚举动作空间 KL。
def multi_turn_opd_advantage(batch, kl_coef=1.0):
old_log_probs = batch["old_log_probs"]
teacher_log_probs = batch["teacher_logprobs"]
response_mask = batch["response_mask"]
teacher_valid_mask = batch.get("teacher_logprobs_valid_mask", response_mask)
effective_mask = response_mask & teacher_valid_mask
advantages = kl_coef * (teacher_log_probs - old_log_probs) * effective_mask
batch["advantages"] = advantages
batch["returns"] = advantages.clone()
kl_per_turn = ((old_log_probs - teacher_log_probs) * effective_mask).sum(dim=-1)
trajectory_kl = group_sum_by_run_id(batch.get("unique_ids"), kl_per_turn)
metrics = {
"kl/mean": kl_per_turn.mean().item(),
"kl/trajectory_mean": mean(trajectory_kl.values()),
}
return batch, metrics3.6 Asynchronous training details
论文实现不是单进程同步训练。它把 rollout actors、learner、teacher 分开:主文写到 8×NVIDIA H20 (96GB),其中 4×H20 用于 actor rollout,2×H20 用于 learner,2×H20 用于 teacher。经验被写入 shared buffer,并用 staleness filter 丢弃过旧策略版本的样本;论文给出 ,released configs 也在 algorithm.sample_strategy_args.max_staleness: 2 中对应。
此外,论文把一条长度 的 trajectory 拆为递归 prefix sub-trajectories ,提升 multi-turn 样本利用率;prompt 中只保留结构化 history,避免上下文无限增长。released workflow 对 ALFWorld 的 prompt history 使用 HISTORY_LENGTH 控制最近历史,具体 prompt 模板位于 trinity/common/workflows/envs/TCOD/alfworld/utils.py。
3.7 Code-to-paper mapping
Code reference:
main@af392f50(2026-05-01) — pseudocode and mapping based on this commit
| Paper Concept | Source File | Key Class/Function |
|---|---|---|
| TCOD-F2B rollout window | trinity/common/workflows/envs/TCOD/alfworld/TCOD_f2b_workflow.py | TCOD_f2b_alfworld_workflow._compute_distill_window, _run_episode |
| TCOD-B2F teacher-prefix checkpoint | trinity/common/workflows/envs/TCOD/alfworld/TCOD_b2f_workflow.py | _linear_checkpoint_step, run_async, _run_episode_from_checkpoint |
| WebShop / ScienceWorld TCOD adapters | trinity/common/workflows/envs/TCOD/webshop/*, trinity/common/workflows/envs/TCOD/scienceworld/* | TCOD_f2b_*_workflow, TCOD_b2f_*_workflow |
| Multi-turn OPD advantage | trinity/algorithm/advantage_fn/on_policy_distill_advantage.py | _compute_opd_advantage, MultiTurnOpdAdvantage |
| ALFWorld launch configs | TCOD_examples/alfworld/tcod_f2b.yaml, TCOD_examples/alfworld/tcod_b2f.yaml | default_workflow_type, checkpoint_steps, max_env_steps, total_steps |
| WebShop / ScienceWorld launch configs | TCOD_examples/webshop/*.yaml, TCOD_examples/scienceworld/*.yaml | max_env_steps=15/30, total_steps=150/250, workflow selection |
| Prompt / environment utilities | trinity/common/workflows/envs/TCOD/alfworld/utils.py | parse_action, format_observation, _create_alfworld_env_with_checkpoint |
4. Experimental Setup (实验设置)
Benchmarks and splits
- ALFWorld:text-based embodied navigation/object manipulation,共六类 household tasks;评估 seen、unseen 两个 split,另外构造 Hard set:121 个 teacher 在 train split 上 pass@10 失败的任务,用来检验是否能超越 teacher capability boundary。最大环境步数 30。
- WebShop:模拟电商平台,多轮搜索、点击、选择商品;最大环境步数 15。
- ScienceWorld:text-based elementary science reasoning,覆盖 30 个 task types,最终按完成程度给 0–100 分;最大环境步数 30。
论文主表的 benchmark summary 没给出完整 train/valid/test 样本量;appendix 只明确 ALFWorld-hard 为 121 tasks,并说明 ALFWorld 使用 seen/unseen,WebShop/ScienceWorld 使用各自训练数据的 test split。
Baselines and model pairs
- Teacher upper bound:直接评估 teacher policy ;主表包括 Qwen2.5-7B-RL teacher,以及跨 benchmark 表中的 Qwen3-30B teacher。
- Zero-shot student:base student 不做任务微调,作为下界。
- SFT:用 teacher 成功轨迹做 NLL supervised fine-tuning 2 epochs;它暴露于 expert trajectory,但仍有 exposure bias。
- Vanilla OPD:student 自己完整 rollout,全轨迹对 teacher 做 token-level KL,不限制 horizon,是 TCOD 的直接对照。
Teacher–student pairs 包括 Qwen3-30B-A3B-Instruct → Qwen3-0.6B/1.7B/4B,以及 GRPO-trained Qwen2.5-7B → Qwen2.5-0.5B/1.5B/3B/7B;主结果重点报告 Qwen2.5-3B/7B 和 Qwen3-1.7B/4B。
Metrics
- Success Rate (SR, %):任务完成比例,越高越好。
- Action Rounds / Env Rounds:平均动作轮数,ALFWorld 中越低通常表示更高效完成。
- Trajectory-level KL / per-turn KL:student logprobs 与 teacher logprobs 的累计差异;用于诊断 multi-turn OPD 稳定性。
- Training time:Figure 6 比较 ALFWorld/ScienceWorld 上 OPD 与 TCOD 的总训练时间。
Training config and reproducibility anchors
论文 appendix 的通用 training hyperparameters 写为 learning rate 、batch size 32、max trajectory length 15/20/25、fixed pacing 、EMA decay 、training iterations 10,000;但 released code 的实际 launch YAML 与之不同,复现时应优先看 repo config:
- ALFWorld TCOD configs:
TCOD_examples/alfworld/tcod_f2b.yaml/tcod_b2f.yaml使用model_path=Qwen/Qwen2.5-1.5B-Instruct,lr=1e-6,buffer.total_steps=250,batch_size=16,train_batch_size=64,max_env_steps=30,F2Bcheckpoint_steps=6,B2Fcheckpoint_steps=5,gpu_per_node=8,tensor_parallel_size=2,ulysses_sequence_parallel_size=2。 - WebShop TCOD configs:
TCOD_examples/webshop/tcod_{f2b,b2f}.yaml使用model_path=Qwen/Qwen2.5-7B-Instruct,total_steps=150,max_env_steps=15,checkpoint_steps=4。 - ScienceWorld TCOD configs:
TCOD_examples/scienceworld/tcod_{f2b,b2f}.yaml使用model_path=Qwen/Qwen2.5-1.5B-Instruct,total_steps=250,max_env_steps=30,F2Bcheckpoint_steps=6,B2Fcheckpoint_steps=5。 - Distributed/runtime settings:released configs 均设置
sample_strategy=staleness_control、max_staleness=2、kl_coef=1.0、grad_clip=1.0、rollout temperature 1.0、evaluation temperature 0.4、max prompt tokens 10,240、max response tokens 512、BF16、GPU memory utilization 0.7。
论文公式与 released code 实现差异:论文正文 implementation 写 8×H20 (96GB),appendix computational resources 又写 8×A100 (80GB);released YAML 只编码 gpu_per_node=8、tensor/sequence parallel 等,不固定具体 GPU 型号。训练数值以 configs 为复现依据,论文表格数值以 paper 为结果依据。
5. Experimental Results (实验结果)
5.1 TCOD 缓解 KL escalation 并恢复 success rate
Figure 4a–4f 解读:图中比较 vanilla OPD、TCOD-B2F 和 TCOD-F2B 的训练动态。小模型场景里,TCOD 让 success rate 从接近坍塌恢复到可训练区间,并压住 KL escalation;较大 student 场景里,KL 更快下降,action rounds / advantages 也更稳定。该图说明 TCOD 主要改善的是训练过程稳定性,而不仅是最终表格分数。
ALFWorld OOD / Hard set 结果(SR%,Rounds 越低越好):
| Student | Method | Valid Seen SR/Rounds | Valid Unseen SR/Rounds | Hard SR/Rounds |
|---|---|---|---|---|
| Teacher Qwen2.5-7B-RL | Teacher | 85.71 / 10.61 | 76.87 / 13.06 | 6.61 / 27.31 |
| Qwen2.5-3B | Zero-shot | 7.86 / 28.73 | 2.24 / 29.63 | 0.83 / 29.88 |
| Qwen2.5-3B | SFT | 32.14 / 22.85 | 25.37 / 24.16 | 4.96 / 29.12 |
| Qwen2.5-3B | Vanilla OPD | 65.72 / 14.73 | 60.45 / 16.21 | 10.74 / 28.64 |
| Qwen2.5-3B | TCOD-B2F | 77.86 / 12.57 | 70.90 / 14.56 | 13.22 / 28.16 |
| Qwen2.5-3B | TCOD-F2B | 81.43 / 11.76 | 79.19 / 12.47 | 9.92 / 28.57 |
| Qwen2.5-7B | Vanilla OPD | 75.37 / 13.18 | 72.14 / 13.37 | 13.22 / 27.89 |
| Qwen2.5-7B | TCOD-B2F | 86.43 / 11.06 | 77.61 / 13.16 | 20.66 / 27.07 |
| Qwen2.5-7B | TCOD-F2B | 82.14 / 13.22 | 76.12 / 13.22 | 18.18 / 27.37 |
关键结论:Qwen2.5-3B 上,F2B 在 Valid Unseen 从 vanilla OPD 的 60.45 提升到 79.19(+18.74),Valid Seen 提升 +15.71;但 Hard set 上 B2F 更好(13.22 vs 9.92),说明靠近成功终点的 curriculum 对 teacher 失败边界附近的任务更有帮助。Qwen2.5-7B 上,B2F 在 Hard set 从 13.22 提升到 20.66(+7.44),并且超过 teacher 的 6.61,支持“student 可通过 TCOD 在 teacher pass@10 失败任务上泛化”的主张。
5.2 Cross-benchmark / eta sensitivity
跨 WebShop、ALFWorld、ScienceWorld 的 Qwen3 结果(Success Rate %):
| Student | Method | WebShop | ALFWorld | ScienceWorld | Avg |
|---|---|---|---|---|---|
| Qwen3-30B Teacher | Teacher | 32.84 | 39.57 | 18.42 | 30.28 |
| Qwen3-1.7B | Vanilla OPD | 0.14 | 0.32 | 0.05 | 0.17 |
| Qwen3-1.7B | TCOD-B2F | 20.54 | 24.55 | 10.82 | 18.64 |
| Qwen3-1.7B | TCOD-B2F | 21.12 | 23.87 | 11.34 | 18.78 |
| Qwen3-1.7B | TCOD-B2F | 20.33 | 24.91 | 10.65 | 18.63 |
| Qwen3-1.7B | TCOD-F2B | 21.15 | 24.12 | 10.45 | 18.57 |
| Qwen3-1.7B | TCOD-F2B | 20.44 | 25.03 | 9.22 | 18.23 |
| Qwen3-1.7B | TCOD-F2B | 21.78 | 23.65 | 11.08 | 18.84 |
| Qwen3-4B | Vanilla OPD | 30.12 | 36.85 | 15.95 | 27.64 |
| Qwen3-4B | TCOD-B2F | 32.15 | 38.62 | 17.46 | 29.41 |
| Qwen3-4B | TCOD-F2B | 31.81 | 38.95 | 17.85 | 29.54 |
对 Qwen3-1.7B,vanilla OPD 基本崩溃,TCOD 平均成功率稳定在 18.2–18.8 区间,说明 curriculum 的存在比 的精调更重要。对 Qwen3-4B,vanilla OPD 已经可用,TCOD 仍有 +1.77 到 +1.90 Avg 的提升,主要来自更稳定的 KL 与 rollout horizon。
5.3 Further analysis: action rounds, advantages, response length, PG loss
Figure 5a–5d 解读:TCOD 的 action rounds 更平滑,advantages 分布更稳定,max response length 与 policy-gradient loss 没有出现 vanilla OPD 那种异常波动。换言之,TCOD 不是靠让模型输出更长 response 作弊,而是通过 curriculum 降低后期轨迹 KL 和梯度噪声。
Loss window ablation 进一步支持“只对 student-controlled steps 计算 loss”:student steps only 的 B2F/F2B success rate 为 68.3 / 71.2;如果对 all steps 都算 loss,则降到 62.1 / 65.7。这与方法设计一致:teacher prefix 的作用是定位状态,不应该把 teacher-controlled tokens 混入 student learning window。
5.4 B2F train-test mismatch 与训练时间

Figure 9 解读:B2F 的 appendix 曲线展示 KL、student action horizon 与 success rate 的联动;随着 teacher prefix 逐渐缩短,student 负责的 horizon 变长,但成功率仍能上升,说明从 checkpoint 训练并没有在最终阶段留下不可恢复的 train-test mismatch。

Figure 10 解读:B2F 在 train hard、valid unseen、valid seen 三个 split 上的 success rate 都随训练推进提升;这直接回应了 B2F 的风险:早期靠 teacher prefix 并不等于测试时不能从头执行,因为 curriculum 最终把 teacher prefix 缩到 0。
Figure 6 解读:TCOD-F2B/B2F 在 ALFWorld 和 ScienceWorld 上比 vanilla OPD 减少约 32% 总训练时间。F2B 通常更快,因为它直接限制最大交互步数 ;B2F 虽从中间状态开始,但 student 接管后仍可能多探索几步。
5.5 Limitations
作者明确指出三点限制:第一,B2F 依赖预收集 teacher 成功轨迹,会带来额外轨迹收集成本;没有 demonstrations 时,F2B 是更直接的 drop-in 方案。第二,固定 curriculum pace 虽在三类 benchmark 和多种模型尺寸上表现稳健,但不同环境/teacher–student pair 可能需要不同节奏;作者认为基于 KL EMA 的 adaptive horizon 调度是自然后续方向。第三,实验集中在 text-based multi-turn benchmarks,尚未验证到 multimodal agent 或 physical embodied environments。
5.6 Overall conclusion
TCOD 的实验证据支持一个清晰结论:multi-turn OPD 的主要训练病灶是 trajectory depth 引发的 KL instability,而不是 OPD 目标本身不可用。通过把可学习窗口从短到长扩展,TCOD 在小 student 上避免 collapse,在较大 student 上提高稳定性和效率,并在 ALFWorld Hard set 上展示了超过 teacher pass@10 失败边界的泛化能力。