Prime Intellect 提出 ECHO:在 RL 中训练智能体预测工具输出
True Agents Model the World
Prime Intellect 发布研究文章,提出 ECHO 方法,即在 RL 训练中同时对工具响应 token 做 SFT,把 SFT 重述为恒定正优势的 RL,从而不增加额外计算成本。
真正的智能体为世界建模
预训练创造了模拟器,即能够高精度地建模其环境的 LLM。RL 只改进模型自身的生成。
但真正的智能体应同时做到这两点:我们既不想要一个纯粹的模拟器,也不希望 LLM 只行动,而对它将如何影响环境视而不见。相反,我们希望它学会根据自身行动来预测其环境,从而能够更智能地规划并应对意外的世界动态。预训练和中训练期间的合成数据也能实现类似目标,但只有在 RL 期间进行世界建模才是真正在策略上的。
近期工作(ECHO 和 PaW)通过对助手 token 进行 RL 并对工具响应 token 进行 SFT,获得了这些好处。通过将 SFT 重新表述为具有恒定正优势的 RL,这可以在不增加额外成本的情况下实现。在本文中,我们展示了我们自己在 RL 期间进行世界建模工作的早期结果。

设置
我们从一组想要检验的假设开始了我们的工作。
- 在 RL 期间进行世界建模将使学习更快、更高效
- 这在预训练和中训练期间很少遇到的领域尤其如此
- World modeling works best under two conditions:
- 工具输出无需记忆即可预测。这是因为它既展示又驱动泛化
- 工具响应是复杂的。这样就有东西可学,并且更不容易坍缩为只产生平凡输出
- SFT on purely knowledge based tool outputs, like a search through documentation, makes the model internalize the knowledge more deeply than directly training on the documentation
- Cartridges 论文表明,为了内化一条知识,将其重新表述为 Q&A 数据集并在其上训练,比直接在文档上训练更好
- 我们假设,在真实 rollout 期间基于文档搜索的输出进行训练具有类似效果:Cartridges 在不同问题的上下文中呈现相同信息,而基于文档的世界建模在不同任务和调用特定代码的上下文中呈现相同信息
为了检验这些,我们分别在两个不同的环境中进行了训练。
forth-lang
forth-lang 是一个面向资源匮乏的编程语言 forth 的环境。我们选择它,是因为它可预测但复杂,而且模型对它不太了解。示例见此链接。
我们希望以某种方式设置环境,迫使模型真正调用代码并预测其在不同输入下的行为。
为此,我们不让模型访问测试用例,尽管它们被用来确定奖励。我们通过在一个专用沙箱中运行每个 rollout,并且只在 rollout 完成后才上传测试来确保这一点。这迫使模型不仅要覆盖测试中使用的输入,还要泛化到所有可能的输入,并且不是通过运行测试,而是通过实际运行代码来评估自己的代码。
以下工具可用:
submit_code:提交代码。编译器输出会未经编辑直接返回给模型,包括任何错误。当 rollout 结束时,最后提交的代码被用作模型的最终答案run_code:运行最后提交的代码,如果有模型提供的输入则使用它们。返回代码的原始输出,包括错误消息。这样,模型可以按自己的意愿测试代码lookup_doc: Search in the official forth documentation, baked into the custom Docker image on each sandbox. How the search works:- 如果搜索查询中只有一个词,该工具会尝试查找以搜索词命名的条目并返回它
- 如果未找到结果,或查询包含多个词,则使用 bm25s 进行 BM25 搜索;所有相似度 <1.0 的结果都会从候选池中过滤掉,并返回前 3 个结果
- 如果不存在这样的结果,则返回一个能产生结果的建议相似查询
submit_code 和 run_code 代表高度可预测但复杂的环境动态。lookup_doc 则简单得多,这让我们怀疑在其输出上进行训练会削弱模型。另一方面,每份文档都与当前任务直接相关,因此也可能有所帮助。为了确定这一点,我们进行了消融实验,比较仅在前两个工具上训练(我们称之为 ECHO (code))与在所有三个工具上训练(我们称之为 ECHO (all))。
deepdive
我们实验的第二个环境是 deepdive:一个用于训练深度研究的网络搜索问答环境。它提供以下工具:
search_web:使用 Serper 搜索网络。接收一个查询列表,并行运行搜索,并按相同顺序返回结果。在过去的运行中,这是迄今为止使用最多的工具scan_page:加载 URL 的内容并返回其元数据(错误、大小等)。可选地接收正则表达式作为搜索词。任何包含结果的內容行都会显示行号open_lines:加载 URL 的内容并显示它。可选地,可以传入行范围以将结果过滤为仅包含某个搜索结果周围的行,从而节省上下文。与scan_page共享缓存finish:以最终答案作为finish的参数结束 rollout
我们选择这个环境是因为它的环境动态很简单:输入查询,返回网络结果。另一方面,网络结果本身非常难以预测,而且由于预测它们主要需要记忆,我们预计它无法迁移到需要不同知识的新任务。
我们需要提到的一个混淆因素是,在实践中,一次 deepdive 训练运行中使用的查询和搜索结果数量是有限的,因此即使在搜索结果上训练不能很好地泛化,它也可能对后续任务直接有用。我们用一个 deepdive 测试集来控制这一点。
在线评估
我们在整个运行过程中对以下环境进行在线评估:
forth-lang测试集deepdive测试集wordle:用作具有简单工具的逻辑多轮环境。需要预测工具调用的结果,因为不可能反复猜测general-agent:一个工具密集型环境,在逻辑-检索轴上介于 wordle 和 deepdive 之间,在 我们最近的博客中介绍
这种评估环境的多样性将让我们了解训练环境中的世界建模是否以及如何泛化到其他环境。
算法
在工具输出上进行 SFT 不会产生显著的额外成本:在正常的 RL 中,我们屏蔽掉除模型自身生成的 token 之外的所有 token 的损失。这相当于给模型 token 提供非零优势,而给所有其他 token 提供零优势。我们直接使用 alpha,即用户提供的决定 SFT 强度的参数,并将其设置为 SFT token 上的优势。它始终为正,且对所有 token 始终相同。这使我们能够使用与 RL 相同的前向和后向传播来计算 SFT 损失。
我们跳过 RL 特有的步骤:
- 我们不在训练器和推理之间使用 KL 损失
- 我们不使用重要性比率
- 我们不按 icepop 风格对 token 进行掩码
它们对 SFT 不是必需的,只对 RL 必需。
就像在 RL 训练中一样,我们按训练批次中 token 的总数进行归一化,以使更新具有批次不变性。然而,我们对 RL 和 SFT token 分别独立进行此操作,这样一方就不会仅仅因为提供了更多 token 而淹没另一方。
实验与结果
在我们的实验中,当 rollout 超过 32,768 个 token 时我们会进行截断。每轮生成的最大 token 数为 8192。除非另有说明,我们在 Muon 上以 1e-6 的恒定学习率进行全参数微调。我们的总批次大小和组大小因实验而异。
我们将首先展示在 forth-lang 上的实验,因为那是我们的主要结果,然后接着展示 deepdive。
对于 forth-lang,我们运行了多组实验。由于我们在积极开发环境的同时运行这些实验,不同的实验组使用了不同版本的 forth-lang。我们将相应地标记它们。实验将按从新到旧的顺序呈现,因为最新的结果最有意义——它们运行在最新版本的环境上,并且是在吸取了之前运行的经验教训后进行的。较旧的实验作为支持性证据。
提醒一下,我们有时使用所有工具进行训练:ECHO (all),有时在 forth-lang 中仅使用两个代码工具:ECHO (code)。
消融 alpha
早期,我们使用 Qwen3-4B-Instruct-2507 对 forth-lang 和 deepdive 进行了快速消融,在 {0.01, 0.05, 0.1, 0.5, 1.0} 上扫描 alpha,训练 100 步且不进行评估。我们注意到两者的训练奖励差异很小,尽管 0.05 和 1.0 似乎以微弱优势最佳。我们预计这是随机噪声,但仍将这些值记在心里。
forth-lang GLM-4.5-Air
我们使用 GLM-4.5-Air 进行了实验,这是一个总参数量 1060 亿、激活参数量 120 亿的模型。它们以总批次大小 128、组大小 16(每批 8 个提示)运行。这些实验使用 signSGD 作为优化器。
基于上述消融,我们最初保守地选择了 alpha=0.05。然而,我们很快发现 ECHO (code) 在约 50 步后显示出崩溃的迹象,并且越来越糟:

有趣的是,ECHO (code) 仅在 forth-lang 评估上表现不佳,在其他任何评估上都没有:

尽管如此,这是一个负面结果。
由于纯 RL(alpha=0.0)比 ECHO (code) 强得多,我们接下来尝试将 alpha 降低 10 倍至 0.005,并看到了更强的结果。请注意,我们为 RL 拥有的数据点比 ECHO (code) 少,因为前者每次 rollout 使用更多轮次,因此慢得多,而我们让两者运行相同的时间。
结果最初非常积极。两种设置之间的奖励看起来相似:

与此同时,ECHO (code) 的 submit_code 错误率更低,使用的轮次略少,并且被截断的频率更低:

值得注意的是,forth-lang 的评估在大多数时候明显优于 RL,但在大约 500 步之后,forth-lang 的评估开始突然下降:

我们看到这种行为有两种可能的解释:
- 随机崩溃
- 模型开始对训练集过拟合
后者并非不可能:使用 419 个提示,每步 8 个提示共 500 步,意味着在同一数据上训练了近 10 个 epoch。对于纯 RL 来说,这不是大问题,但当引入信号密度高得多的损失时,这可能就不再成立了。
无论如何,在崩溃之前,ECHO (code) 在 forth-lang 评估中似乎一直优于纯 RL,且在其他环境中没有受损,持续了整整 10 个 epoch。而且即使存在潜在的过拟合,也仅限于 forth-lang!所有这些都是在比纯 RL 略低但持续更少的轮数下实现的。此外,尚不清楚 RL 是否能保持更长时间的稳定,尽管我们假设它可以(我们在最后看到的评估性能下降并不异常,没有理由得出早期崩溃的结论)。
一个有趣的数据点是,ECHO (code) 学会了极好地预测 submit_code 和 run_code 的输出:

这既是过拟合的另一个迹象,也表明小剂量的 ECHO 按预期工作。
在行为上,ECHO (code) 有强烈的影响:

两种模式主要调用代码工具,数量大致相等。然而,lookup_doc 在两者之间显示出强烈差异:两者都学会在开始时更频繁地使用它,然后再次减少使用(尽管 RL 在接近尾声时再次出现小幅上升)。但 lookup_doc 使用的高峰来得更晚,且 ECHO (code) 比 RL 更高,其使用下降也更慢。我们稍后会对此进行更多推测。
Token 使用量也差异很大(注意两者 x 轴上的差异范围):

ECHO (code) 倾向于产生更少的模型 token,但获得更长的响应。几乎所有模型 token 都是工具 token;但由于它使用相同数量的代码工具,并更多调用 lookup_doc,这显然不是总体上减少工具调用的结果。相反,所进行的工具调用使用更短的输入并产生更长的输出。
我们从这些实验中得出三个结论:
- GLM-4.5-Air 对
alpha的值高度敏感 - ECHO 效果很好,在提高领域性能的同时提高了效率,且不降低其他领域的性能
- 过拟合可能是 ECHO 比纯 RL 更令人担忧的问题,尽管这还不确定
forth-lang:Qwen3-4B-Instruct-2507
我们在环境积极开发期间,以及在 GLM-4.5-Air 实验之前,使用 Qwen3-4B-Instruct-2507 进行了多次消融实验。它们都使用 Muon 运行。
500 步
我们决定测试两个 alpha 值:{0.05, 1.0}。这提供了在完整运行中通过在线评估对超参数的广泛覆盖。我们使用了 500 步,总批量大小 256,组大小 16。
注意:对于在所有工具输出上训练的
alpha=1.0运行,缺少一些数据点,但整体趋势仍然清晰可见。
奖励
所有运行之间的奖励非常相似:

至少在这个步数下,奖励的任何差异都很小,无法与随机噪声区分开来。工具选择或 alpha 的值似乎都没有影响。
评估
评估给出了更显著的信号:

几点观察:
forth-lang-test:世界建模在训练领域中清晰且一致地有助于泛化。这强烈表明,为了学习一个特定的、此前了解甚少的领域,世界建模是有帮助的。尤其值得注意的是,在这些运行中,forth-lang训练集由难度等级 0-5 组成,而测试集为等级 6,显示出很强的泛化能力deepdive:令人惊讶的是,与我们的假设相反,进行世界建模的运行比纯 RL 更好地泛化到了deepdive。正如我们稍后将看到的,这纯粹取决于每种训练模态在多大程度上教会模型使用lookup_doc,但这仍然很值得注意general-agent:与纯 RL 相比,在forth-lang上进行世界建模会降低对general-agent的泛化能力。这与我们的假设一致:它是一个检索式环境,但需要比deepdive更复杂的工具使用,因此学会滥用lookup_doc及类似工具是行不通的wordle:这个逻辑环境从 forth-lang 上的世界建模中获益良多- 总体而言,对于小型 Qwen 模型,ECHO 似乎比大型 GLM 模型更强烈地干扰域外评估,这对该方法的可扩展性来说是个好迹象
工具使用
如前所述,一些评估结果可以用不同运行所学到的工具使用模式来解释。

立刻引人注目的是,世界建模再次导致 lookup_doc 工具的使用增加,就像 GLM-4.5-Air 那样。这解释了在 deepdive 上的超常表现,该任务大多可以通过滥用 search_web 工具来解决,但这令人惊讶,因为更擅长预测 lookup_doc 的输出本应降低该工具的效用。
我们不确定是什么导致了这一点,但有一个假设。它假定预测代码,乃至文档本身,有助于模型内化该语言的工作方式。这似乎从训练与评估分数之间的差距中显而易见,世界建模似乎主要有助于泛化。
该假设是,这有助于模型更多地利用文档:由于模型在已经了解该语言的地方能更准确地预测其内容,它在尚未了解的 forth 部分中的意外度相比之下显著更为突出,从而为模型提供了用于 ICL 和自我纠正的强烈信号。这增加了 lookup_doc 的效用,而这使得 RL 信号随时间推移增加其使用。
这一理论的另一面是,一段时间后,模型应该已经了解文档中所有对其有用的部分,这随后会显著降低 lookup_doc 的有用性,并导致其使用减少。确实,我们可以在 alpha=1.0 处的 ECHO(代码)中看到这种情况发生。
注意:这一理论的另一个有趣方面是,理解上的大部分收益似乎来自预测编译和运行程序的输出,而主动学习文档只略微增加了这一点,这与我们的假设一致,即无需记忆的可预测性和复杂性都是世界建模的重要前提。这一点由 ECHO(代码) 表现出与 ECHO(全部) 非常相似的行为所证明。
为了收集更多支持或反对的证据,我们接下来将转向运行 1000 步的实验。
1000 步
这组针对同一模型的实验运行了 1000 步,但批量大小减半,为 128。组大小减少到 8,这意味着我们每步使用的提示数量仍与上述实验相同。我们始终使用零优势过滤,这意味着我们使用的每个批次都含有一些对强化学习有用的优势信号,这在如此小的组大小下非常重要。
在这些实验中,alpha 固定为 0.5。我们改为改变最大轮数的约束:一次设为 200,这也是我们在其他实验中使用的默认值,另一次设为 10。
目的是探究 ECHO 在受限设置中是否比在不受限设置中更有帮助。这受到早期消融实验的启发,这些实验显示 ECHO 运行通常使用更少的轮数就能达到与纯强化学习相同或更好的结果。
奖励
我们再次从奖励开始:

显而易见的是,限制轮数提高了 Qwen3-4B-Instruct-2507 的模型性能。
我们还可以看到,在轮数足够的情况下,ECHO (all) 在大约 600 步后崩溃,尽管前 500 步看起来非常强劲。最后,在 200 步设置中,ECHO (code) 最强,但在 10 轮设置中,在整个 1000 步中,三种设置之间没有真正差异。
评估
评估再次更有趣:

forth-lang:在forth-lang本身中,限制为 10 轮的模型完全无法泛化到更难的测试问题,尽管它们有更高的训练奖励。在可用 200 轮的情况下,世界建模再次有助于提高在forth-lang上的泛化能力,除了运行崩溃的地方。重要的是,我们在 1000 步内没有看到 ECHO (code) 过拟合的迹象,在每步 16 个提示的情况下,这意味着超过 38 个 epochdeepdive:与纯强化学习相比,世界建模损害了性能。这可以再次通过lookup_doc工具的使用量来解释,如下所示。然而,在 10 步设置中,两个 ECHO 运行最终都赶上了纯强化学习general-agent:在受限设置中,在forth-lang上的世界建模比纯强化学习在general-agent上的泛化能力显著更好;在 200 步设置中,它们的泛化更差。有趣的是,虽然 ECHO (all) 在 200 轮时在 forth-lang 上的性能崩溃,但在general-agent(和wordle)中保持良好,这种模式在 GLM-4.5-Air 中也曾出现wordle:在forth-lang上的世界建模持续提高在wordle上的性能
工具使用
工具使用显示出有趣的模式:

- 许多行为只有在超过 500 步后才稳定下来:例如,200 轮设置中纯强化学习的所有工具使用模式,或者 ECHO (all) 的工具使用崩溃
- 纯强化学习总体上使用更多工具,至少在 200 轮设置中如此;在 10 轮设置中,三者进行的工具调用次数相同,只是工具之间的比例不同
- 在 200 轮设置中,
submit_code和lookup_doc的频率呈负相关,可能是因为文档帮助模型避免提交会抛出错误的提交 - 和之前一样,世界建模会导致
lookup_doc使用量出现初始峰值,但在这个版本的forth-lang和这个alpha中,查询量骤降至极低的情况在训练早期就发生了;峰值出现在仅仅 50 多步之后。我们认为这支持了这样一种理论:世界建模帮助模型更好地利用文档,直到它们充分内化了环境动态,此时它们就不再需要文档了。这一点得到了 RL 所开发的lookup_doc使用率远高于此的佐证。
deepdive
deepdive 上的实验与 forth-lang 上的 500 步 Qwen3-4B-Instruct-2507 实验并行进行。它们也使用了总批量大小为 256(16 个提示 x 每个提示 16 次 rollout),运行了 500 步,并在 alpha=0.05 和 alpha=1.0 下运行。同样,一些样本丢失了,但趋势依然清晰。
在 deepdive 中,我们始终在所有工具上进行训练。
奖励

- RL 比世界建模学习得更快,并达到更高的奖励峰值,但在约 250 步后开始回退
- ECHO 导致奖励更持续地提升,这似乎在前 500 步中尚未达到平台期,这有助于它在之后赶上 RL
评估

总体而言,评估结果似乎与我们的理论相矛盾,即简单、纯粹的检索环境不适合世界建模:
- 在低
alpha下,世界建模显著提高了对deepdive测试集的泛化能力 - 并且对其他环境的泛化要么更好(
wordle),要么至少没有显著更差(general-agent、forth-lang)比纯 RL
然而,我们碰巧将 alpha=0.05 实验运行了将近 700 步,它在完成 600 步前不久显示出明显的过拟合迹象,大约一个完整 epoch(数据集中的 2.23k 样本,每步 16 个样本,意味着一个 epoch 大约需要 560 步)。
奖励开始比以前更快地上升:

但与此同时,deepdive(和 wordle)评估崩溃:

这向我们暗示了一种与我们最初理论不同的机制:
人格选择模型表明,大多数技能、知识和行为是在预训练期间学习的,仅在后训练期间表达和组合。这意味着,如果后训练对某些任务的性能产生负面影响,但通过提高其他任务的性能来弥补,那么在不降低后训练任务分数的情况下恢复一些丢失的预训练任务性能将提高整体智能。
在非常早期的实验中,我们确实发现以这种方式进行世界建模能显著降低 wikipedia 文本的困惑度(稍后详述)。
关键是,网络搜索结果远比我们假设的更可预测,同时也更复杂。事后看来这应该很明显,因为它非常接近预训练,而预训练显然是一项复杂但可预测的任务。
forth-lang 中的过拟合出现得晚或从未出现,但在 deepdive 中它在一个 epoch 后出现。这让我们得出了一个新的结论:输出可以被记忆的工具,如果其输出非平凡,则在单 epoch 训练中有用,但在多 epoch 设置中会导致严重过拟合,这在 RL 中很典型。泛化是更有效策略的工具可以训练多个 epoch。
工具使用
工具使用统计数据解释了使用 alpha=0.05 的 ECHO 运行的优异表现:

- 所有运行都导致模型更多地搜索网络,而
search_web是迄今为止使用最多的工具 - 但只有最成功的那次运行显著使用了
scan_page;它是唯一一个真正在网页内进行搜索的,而第二常用的工具(另外两个则完全不再使用它) - 这表明在奖励和评估结果方面存在一定的随机性;不过
alpha=1.0也能带来相当不错的结果,所以随机性不太可能是唯一的因素
Perplexity 分析
我们最初通过在deepdive、general-agent、wordle以及上述组合上进行训练来做小规模测试,并测量在wikipedia上的困惑度(配置"20231101.en",划分"train")。这仅基于 200 篇文档,每篇不超过 256 个 token,但趋势已经非常明显。
在下图中,训练环境写在左侧。SFT-only 表示对真实 rollout 的工具输出进行 ECHO 风格的 SFT,并将 RL 损失置零。multi-env 表示模型在general-agent和wordle上以相等比例进行训练。

非常清楚的是,在任何环境上进行世界建模都会激发出 LLM 中预训练的模拟器。同样清楚的是,deepdive在这方面的效果远远最强,考虑到它是一个纯网页搜索环境,而其他环境更偏向后训练风格,这应该并不令人意外。纯 SFT 带来的困惑度下降最大,但幅度并不大。在已经后训练过的 Qwen3-4B-Instruct-2507 之上进行 RL,几乎不会改变 wikipedia 的困惑度。
这些来自非常短的早期实验的其他结果尚无定论,唯一明确的是,没有 RL 损失的纯世界建模会明显降低任务性能。这可能是由于 4B 模型的容量不足,也许在不同环境下会表现更好,但我们建议永远不要把 RL 损失设为零。
我们学到了什么
让我们回顾一下最初的假设,并讨论我们从中了解到了什么。
-
RL 期间的世界建模将使学习更快、更高效。
结论:正确。在几乎没有额外成本、且总体上减少了 token 数量的情况下,它能带来更好的域内泛化,同时不会持续损害域外泛化。这一点在规模较大的 GLM-4.5-Air(110B 参数)中比在 Qwen3-4B-Instruct-2507(4B 参数)中更为明显,这对 ECHO 的可扩展性来说是个好迹象。
-
这在预训练和中期训练中较少遇到的领域上尤其如此。
结论:不明确。模型在
forth-lang上学习得很好,而它此前可能很少遇到这种环境。但它在deepdive上也学习得很好,而后者与其之前见过的数据非常相似。是的,一段时间后泛化崩溃了,但这是由于该环境高度依赖记忆的特性导致了过拟合,而不是因为缺乏环境新颖性。 -
世界建模在两种条件下效果最好:
- 工具输出无需记忆即可预测,因为这既能体现也能推动泛化
- 工具响应很复杂,因此训练预测工具响应会带来并非微不足道的差异
结论:最有可能正确。然而,工具之间存在额外的相互作用,使得这条规则更难应用于任何单一环境,而且比人们想象中更多的任务难以预测。不过,显然那些只能通过记忆来解决的任务,比算法类任务更快地遭受过拟合。
-
在纯粹基于知识的工具输出(例如通过文档进行搜索)上进行 SFT,会让模型比直接在文档上训练更深入地内化知识。
- Cartridges 论文表明,为了内化一条知识,将其重新表述为问答数据集并在其上训练,比直接在文档上训练更好。
- 我们假设,在真实 rollout 过程中对通过文档搜索得到的输出进行训练具有类似的效果:Cartridges 在不同问题的上下文中呈现相同的信息,而基于文档的世界建模在不同任务和调用特定代码的上下文中呈现相同的信息。
结论:不明确。
deepdive的域内泛化能力很强,这可能仅仅是因为重新激活了潜在的世界建模能力,也可能是因为数据是在智能体上下文中呈现的。至于
forth-lang,与仅在代码工具上训练相比,在lookup_doc上训练使模型更擅长预测lookup_doc,而在其他方面没有明显变差。它确实比 ECHO (code) 在训练早期更多地增加了该工具的使用,并且更彻底地使其崩溃,但原因尚不清楚。我们假设这种模式源于:当模型更擅长对工具的大多数调用做出预测时,对
lookup_doc的错误预测会获得高效用,因为它提供了强烈的纠正信号。我们还假设,随后lookup_doc使用量的崩溃是由于一段时间后缺乏此类错误预测,并且从那时起 RL 更偏好不使用lookup_doc的 rollout,因为它浪费 token 而不带来效用。然而,我们认为这一假设尚未得到充分支持,提出它只是为了便于未来工作。
我们实验的另一个结果是过拟合的重要性。在 deepdive 中,这大约发生在一个完整 epoch 之后;在 forth-lang 中,GLM 运行中发生在 10 个 epoch 之后,而在 Qwen 运行中甚至在 38 个 epoch 内都没有发生。这向我们表明,对于数据量大而算法结构少的工具输出,过拟合是 ECHO 的一个重要问题,但对于复杂但可预测的工具,这远不是问题。
可能更好的做法是:在前几百步使用 ECHO 训练,然后使用纯 RL。也有可能仅对损失值高于最低阈值的工具输出 token 进行训练,通过避免对已知工具调用进行重复训练来防止过拟合,或者其他技术会有所帮助。目前,我们建议谨慎地、逐案地应用 ECHO。
结语
ECHO 是一种有前景的技术,似乎可以规模化地发挥作用。我们相信它很快就会成为开放模型训练的重要组成部分,尤其是在数据丰富且过拟合风险不大的地方。它开启了许多研究方向。因此,我们很快将在 prime-rl 中以高度灵活且高性能的方式支持它。
@article{primeintellect2026trueagentsmodeltheworld,
author = {Sebastian Müller and Prime Intellect Team},
title = {True Agents Model the World},
journal = {Prime Intellect Blog},
year = {2026},
month = {June},
note = {https://www.primeintellect.ai/blog/true-agents-model-the-world}
}来源:Prime Intellect Blog · primeintellect.ai