SimpleTIR:让大模型“边写代码边思考”不再崩溃

B站影视 电影资讯 2025-09-11 19:45 2

摘要:“在某个样本中,模型第1 轮思路清晰,第 2 轮开始胡言乱语,第 3 轮直接输出一堆乱码。训练到后期,模型性能像过山车一样垂直下坠。”

SimpleTIR正是为了解决多轮工具调用中的训练崩溃问题。

如果你曾用多轮 RL 训练大模型做工具调用,多半见过这样的尴尬场面:

“在某个样本中,模型第 1 轮思路清晰,第 2 轮开始胡言乱语,第 3 轮直接输出一堆乱码。训练到后期,模型性能像过山车一样垂直下坠。”

SimpleTIR(https://arxiv.org/abs/2509.02479v1)正是为了解决多轮工具调用中的训练崩溃问题。下面带你拆解一下它的关键思路。

01

为什么多轮会“崩”?

作者用一句话点破:“分布偏移 + 低概率 token 的链式雪崩”

偏移:外部工具(Python 解释器、搜索引擎)返回的结果,跟模型预训练时的语料分布差距可能较大。

雪崩:这些 OOD(Out-of-distribution)token 被当成下一轮输入,模型越采越偏,最终在第 3~4 轮吐出乱码或直接停止生成(输出eos token)。

梯度爆炸:低概率 token 让重要性采样比值暴涨,梯度范数瞬间拉满,训练直接炸裂。

现场观测到的 token log-prob 曲线就像这样:

(Turn 1 还自信满满,Turn 4 直接一泻千里)

02

SimpleTIR 的“定海神针”——void turn 过滤

作者没有硬怼梯度裁剪,也没有加 KL 正则,而是祭出一个极简 heuristics:

只要某一回合既没生成可执行代码块,也没给出最终答案,就判定为“无效轮(void turn)”,整条轨迹直接丢进垃圾桶,不拿来更新策略。

这一招轨迹过滤同时掐断了两条崩溃链路:

梯度爆炸:无效轮往往伴随极低概率 token,扔掉它们等于从源头拔掉高幅值梯度。

信用分配错位:无效轮之后的失败不应惩罚前面正确的推理步骤,过滤后模型不再“一朝被蛇咬,十年怕井绳”。

03

训练现场直击:一条稳如老狗的曲线

在 Qwen2.5-7B 上,从零开始跑纯强化学习(Zero RL),不借助任何冷启动和监督微调:

粉色曲线:SimpleTIR(启用无效轮过滤)

紫色曲线:Naïve Multi-turn(直接多轮 RL)

可以清晰看到,SimpleTIR 的曲线一路向右上方匀速爬升,梯度范数几乎零尖峰;简单的多轮训练则在第 300 步左右开始崩溃。

04

多轮策略的可视化:三种“人类级”思考范式

更妙的是,SimpleTIR 的训练催生了多样化的推理行为,作者用 Claude-3.7-Sonnet 做了统计:

渐进推理(Progressive Reasoning):写若干脚本逐一解决各个子命题,再完成最终解答。

交叉验证(Cross Validation):同一问题写两份代码互检,防止一错到底。

错误回环(Error Correction Loop):运行报错→定位 bug→重写代码→再跑。

这些策略并非人为预设,而是模型在无监督奖励下自发涌现,算是 Zero RL 的“副作用惊喜”。

05 写在最后:一个更“工程友好”的多轮 RL 范式

SimpleTIR 的核心贡献不在于刷爆了多少分,而在于它给出了一条可复制、工程友好的多轮工具调用训练技巧

Zero RL:直接基于 base 模型,无需昂贵的人类标注进行冷启动。

即插即用:无效轮检测逻辑仅 10 行代码,可无缝加入任意 RL 框架。

可扩展:对于不同模型参数量(7B→32B)均能保持训练稳定。

SimpleTIR 的核心实现已经开源,可通过下方链接直接查看源代码与实现细节。

代码链接:https://github.com/ltzheng/SimpleTIR/tree/main

在 LLM 多轮工具调用里,只要模型产生“void turn”,既不生成可执行代码,也不给出最终答案,就把这整条轨迹当作直接丢掉,便能实现稳定多轮训练——这大概就是 SimpleTIR 带来的最大启示。

//

未经「AI科技评论」授权,严禁以任何方式在网页、论坛、社区进行转载! 公众号转载请先在「AI科技评论」后台留言取得授权,转载时需标注来源并插入本公众号名片。

来源:AI科技评论一点号

相关推荐