跳到正文
北京时间
原文
MarkTechPost(RSS)· Asif Razzaq·· 2026-07-08精选AI 评分70

Liquid AI 开源 Antidoom:基于最终 Token 偏好优化的推理模型死循环修复方法

Liquid AI Open-Sources Antidoom: A Final Token Preference Optimization (FTPO) Method that Reduces Doom Loops in Reasoning Models

AI 导读

Liquid AI 开源了 Antidoom,一种基于 Final Token Preference Optimization (FTPO) 的针对性修复方法,用于减少推理模型中的 doom loop(死循环)问题。该方法定位循环开始的第一个 token,训练模型选择连贯替代项,而不改变整体输出分布。在 LFM2.5-2.6B 上,硬数学和编程任务中的循环率从 10.2% 降至 1.4%;Qwen3.5-4B 上从 22.9% 降至 1%。整套流程可在数小时内完成,全部代码和数据集(LiquidAI/antidoom-mix-v1.0)已开源。

推荐理由

Antidoom 用一次训练就修复了小型推理模型常见的 doom loop,LFM2.5 和 Qwen3.5 的循环率从两位数掉到 1%,代码和数据全开源,自己训模型时可以直接加这一环。

正文 · AI 翻译

Liquid AI 发布了 Antidoom,这是一种开源方法,针对推理模型中的一种常见失效模式。这种失效模式就是 doom loop。在 doom loop 中,模型会输出一段文本片段,然后一遍又一遍地重复该片段。输出会一直持续到上下文窗口被耗尽。小型推理模型更容易出现这种情况,尤其是在长思考轨迹和难题上。

在 LFM2.5-2.6B 的一个早期 checkpoint 上,困难数学和编程提示词上有 10.2% 的补全产生了重复循环。经过 Antidoom 训练后,该比例降至 1.4%。各项评测分数全面提升,完全归因于循环的减少。

TL;DR

  • Antidoom 通过仅重新训练第一个循环起始 token 来减少 doom loop。
  • FTPO 将概率分散到多个连贯的备选方案上,而非只给出一个替代。
  • LFM2.5-2.6B 的循环率从 10.2% 降至 1.4%;Qwen3.5-4B 从 22.9% 降至 1%。
  • 整个流程只需几个小时即可运行,且全套技术栈均为开源。

什么是 Antidoom?

Antidoom 是一种有针对性的修复,而非广泛的采样改动。它会找出开启循环的那个确切 token,然后训练模型在这单个位置上更偏好连贯的替代选项。其余部分的分布基本保持不变。

该方法改编自 Antislop。它在代表单个补全 token 的 chosen/rejected 对上训练。训练算法是 Final Token Preference Optimization (FTPO),与 DPO 类似。

这种训练并没有教给模型任何关于数学或代码的新知识。它只是清除了那些阻碍模型输出其本已能够给出的答案的循环。

末日循环剖析

Liquid AI 团队将末日循环归因于三种机制共同作用:

机制 1:过度训练的 token 加上不确定性。有些 token 总体上更容易被选中。现实中众所周知的例子包括“delve”和“testament”。Liquid AI 团队指出,这可以追溯到训练集中的合成数据。在推理轨迹中,高先验的续写往往包含诸如“Wait”或“Alternatively”之类的话语标记。这些 token 本身并不坏。它们可以标记一次有用的策略转变、一个验证步骤或一个分支。但当模型不确定或卡住时,它们反而变成了有吸引力的兜底续写。

对于一个早期的 LFM2.5-2.6B checkpoint,最常见的循环起始 token 如下。

Token循环起始占比
the11.39%
So4.51%
Alternatively3.22%
Wait2.56%
But2.46%

机制 2:先前的上下文强化了循环。每一次重复都会将该片段中的每个 token 推向更高的概率,Duan 等人在关于循环推理的研究中对此进行了探讨。他们将其与一种“V 形”注意力模式联系起来。他们发现,语义重复先于文本重复出现。

机制 3:贪婪采样。推理模型通常以低温度运行,以获得稳定、可复现的推理轨迹。在温度为 0 时,始终选择概率最高的 token。此时一个被局部强化的循环便没有出口。Liquid AI 报告称,即使在 temp=0.67 时也会出现明显的循环。更低的温度会加剧这一问题。

Antidoom 如何定位失败

Antidoom 在一组旨在诱发循环的提示词混合上以低温度生成补全。该混合以 LiquidAI/antidoom-mix-v1.0 数据集的形式发布。当一个片段重复至少四次、且长度至少 60 个字符时,即判定为循环。

该方法随后针对 第一次重复的首个 token。在该位置,它取基础模型的 top-k 对数概率备选项。它过滤掉过短或非字母数字的噪声。它保留最多 20 个合理的替代项作为 chosen token。

每一训练行是一个由提示词前缀、一个 rejected token 以及一个或多个 chosen token 组成的元组。chosen 和 rejected 分布会在训练前进行正则化。否则,像 Wait、So 和 the 这样的少数罪魁祸首会占据主导,过度抑制会损害推理能力。

检测规则本身用代码表述很简单。下面的代码片段仅作说明。

# A loop = a unit repeating >=4 times, spanning >=60 characters.
# Returns the index of the first token of the first repeat (the target), else None.
def find_loop(text, min_repeats=4, min_chars=60):
    n = len(text)
    for span in range(1, n // min_repeats + 1):
        start = 0
        while start + span * min_repeats <= n:
            unit = text[start:start + span]
            repeats = 1
            pos = start + span
            while text[pos:pos + span] == unit:
                repeats += 1
                pos += span
            if repeats >= min_repeats and span * repeats >= min_chars:
                return start + span          # first token of the first repeat
            start += 1
    return None

每个检测到的循环随后成为一条训练行。其结构是一个简单的元组。

# One FTPO training row, per the post's [prefix, rejected, chosen] format.
row = {
    "prompt": prefix_up_to_the_loop,   # text before the first repeat
    "rejected": " Wait",               # the single token that started the loop
    "chosen": [" So", " Since", " The", " Therefore"],  # up to 20 alternatives
}

最终 token 偏好优化(FTPO)

FTPO 是一种类似于 DPO 的偏好优化算法。一个训练样本包含一个提示词、一个被选中的续写和一个被拒绝的续写。它的设计目标是只改动少量 token,同时尽可能不对模型造成其他扰动。

FTPO 与 DPO 有四点不同:

  1. 末位 token 训练:它只训练序列中处于生成中途的末尾 token。
  2. 每个样本包含多个被选中的 token:它将概率分散到一组备选 token 上,因此一个被过度训练的 token 不会简单地被另一个 token 取代。
  3. logit 空间中的类 KL 损失:它省略了 softmax,直接在 logits 上计算与参考模型的散度,从而避免对无关 token 施加压力。
  4. 两部分正则化:被选中和被拒绝的 logits 可以更自由地移动,而其余词表则保持严格约束。

在 Antidoom 实现中,模型使用 LoRA 训练一个 epoch。128-256 的高 LoRA 秩给出了最佳结果。训练覆盖所有注意力层和 MLP 投影层,外加 lm_head。学习率大约在 4e-6 到 2e-5 之间。

训练使用 chosen_win 上的早停,即所选 token 优于被拒 token 的样本占比。在 chosen_win=0.35 处停止将 doom-loop 率从 20-30% 降至 1-2%。训练更久往往会损害模型。

对于早期的 LFM2.5-2.6B checkpoint,训练集生成在 8x MI325 GPU 上耗时约一小时。随后训练在单块 MI325 GPU 上耗时约一到两小时。收集到 20k 对后生成停止。

Antidoom 与常见修复方案的对比

方法改变的内容成本概况报告的缺点
repetition_penalty重新加权输出分布推理时,成本低权宜之计;可能降低性能
强化学习通过奖励调整策略需要校准的奖励,在线 rollout 成本高设置与计算开销
DPO(最终 token)每个样本一个选中 token离线训练粗粒度 beta;更新单个 token
Antidoom(FTPO)首个循环 token → 多个选中 token约 1 小时生成(8x MI325)+ 1-2 小时训练(1x MI325)可能暴露出新的循环;可能需要额外轮次

结果

训练后,早期 LFM2.5-2.6B checkpoint 上的 doom-looping 率从 10.2% 降至 1.4%。各项评测分数全面提升,这完全归因于循环现象的减少。

Liquid AI 团队还在 Qwen3.5-4B 上运行了该流程,该模型已知在推理过程中会出现循环。在贪心采样下,其 doom-looping 率从 22.9% 降至 1%。评测分数显著提升。

随着温度升高,评测分数与 doom-loop 率呈反向变化。训练之后,两个模型在 temp=1.0 附近都出现了性能下降。这在意料之中,因为更高温度的采样可能偏向那些不太受青睐的 token。一旦消除了循环,在被测模型中,接近贪心的采样给出了最强的分数。

Liquid AI 团队就常见做法指出了一个相关要点。认为更高温度有助于推理的信念,可能与 doom-loop 效应相混淆。在他们的测试中,一旦循环消失,接近贪心的采样表现最佳。

多轮处理会有帮助。第一轮剔除导致循环的 token,并重新加权偏向替代选项。这可能会暴露出新的失败点,随后第二轮便针对这些失败点进行处理。

交互式讲解

用例与示例

  • 端侧推理模型:像 LFM2.5 系列这样低于 1GB 的推理模型,在面对困难提示词时可能会在证明过程中途卡住。Antidoom 能挽回这些循环所损失的准确率。
  • 小型编程智能体:一个 4B 的编程模型可能会在一条困难的调试追踪上陷入循环,并耗尽它的上下文窗口。消除循环后,它就能达到它早已知道的修复方案。
  • 智能体流水线成本控制:循环会持续消耗 token,直到上下文耗尽。削减这些循环可以减少浪费的 token,并降低长时间智能体运行中的延迟。
  • 后训练修复。发布微调推理检查点的团队可以在几小时内运行 Antidoom 作为一次清理流程。

优势与挑战

优势:

  • 精准定向:它只编辑第一个循环 token,基本保持其余分布不变。
  • 快速:整个流水线在几小时内即可运行完成。
  • 可量化:LFM2.5-2.6B 从 10.2% 降至 1.4%;Qwen3.5-4B 从 22.9% 降至 1%。
  • 开源:生成、检测以及 FTPO 训练器均已发布。
  • 是恢复,而非教学:它恢复的是模型本就能生成的答案。

挑战:

  • 它可能暴露出新的失效点,因此有时需要多轮处理。
  • 过度训练会损害模型,因此需要在 chosen_win 上执行早停。
  • 报告的结果涵盖 LFM 检查点和 Qwen3.5-4B,两者都是小型推理模型。
  • 训练后,性能在 temp=1.0 附近可能会下降。
  • 每个模型都需要自己生成的循环数据集。

来源:MarkTechPost(RSS) · marktechpost.com