Antidoom:终结推理模型的 Doom Loop 噩梦 · 干货攻略

  • 链接:https://x.com/maximelabonne/status/2074495376204210388
  • 分类:x-tips
  • 来源:X @maximelabonne
  • 作者:Jay
  • 更新:2026-08-05
  • 仓库:Liquid4All/antidoom

这是什么

Antidoom 是 Liquid AI 于 2026 年 7 月 7 日开源的推理模型修复工具,专门解决大模型在推理过程中反复输出同一段文字(Doom Loop)的灾难性失败模式。

在 Doom Loop 中,模型输出一段文字(比如 "Wait, let me reconsider..."),然后不断重复这段文字直到上下文窗口耗尽。小型推理模型在长思维链和困难数学/编程问题上尤其容易出现这个问题。传统解法是加 repetition_penalty,但这治标不治本,会同时损害模型正常输出的质量。

Antidoom 的核心思路是精确定位循环开始的第一个 token,仅重训练这一个 token 的分布,让模型在该位置学会选择其他合理的替代词,而不是反复落入同一个陷阱。

相关技术继承自 Antislop(arxiv:2510.15061)的单 token preference training 思路,并自研了 Final Token Preference Optimization(FTPO) 算法。


为什么值得关注

@maximelabonne 于 2026 年 7 月 7 日转发了 Liquid AI 的发布推文,原帖数据极其亮眼:

  • LFM2.5-2.6B(早期 checkpoint):doom loop 率从 10.2% 降至 1.4%,评测分数全面提升
  • Qwen3.5-4B:doom loop 率从 22.9% 降至 1%(greedy 采样条件下),评测分数显著提升

更关键的是:这次训练没有教模型任何新技能,只是移除了阻碍模型正常输出的失败模式——相当于清除了压在分数上的一块石头,模型原本就能答对的题终于能答出来了。

Doom Loop 三大成因已被 Liquid AI 团队完整拆解:

机制 描述
Overtrained tokens + 不确定性 合成数据训练导致 WaitSoAlternativelythe 等 token 在推理时过度优先;模型在不确定时倾向重复这些"安全词"
上下文自我强化 一旦某段文字出现在上下文中,后续输出该段落的概率会逐步趋向 1,形成正反馈
Greedy 采样 低温度采样下,最可能 token 必然被选中,若该 token 恰好在循环中则无路可逃;甚至 temp=0.67 时也会出现显著循环

Top loop 起始 token 分布(LFM2.5-2.6B 早期 checkpoint,2277 个 loop 样本统计):

Token 占比
the 11.39%
So 4.51%
Alternatively 3.22%
Wait 2.56%
But 2.46%

核验过程

官方来源(已读): 1. GitHub READMELiquid4All/antidoom:完整 pipeline 用法、配置字段说明、硬件要求(NVIDIA/CUDA vs AMD/ROCm)、超参数调优建议 2. Liquid AI 官方博客www.liquid.ai/blog/antidoom:完整技术细节、三大机制分析、FTPO 算法描述、LFM2.5-2.6B 和 Qwen3.5-4B 完整评测数据、训练硬件成本估算 3. HuggingFace 数据集LiquidAI/antidoom-mix-v1.0:训练用的 prompt 混合集

交叉验证(已读): 4. MarkTechPost(2026/07/07)和 explainx.ai 均独立确认同一组数字:LFM2.5-2.6B 10.2%→1.4%;Qwen3.5-4B 22.9%→1% 5. X @liquidai 官方推文同样确认上述数字,并额外注明 2-4B 模型在 8×H100 上生成约 2 小时,单卡 H100 训练约 1-2 小时

所有关键数字均来自官方来源并被独立媒体交叉验证。


上手步骤

环境准备

git clone https://github.com/Liquid4All/antidoom
cd antidoom
uv sync

NVIDIA/CUDA 环境使用默认配置(configs/default.yaml);AMD/ROCm(Instinct MI 系列)需用 configs/default_amd.yaml(不能用默认 uv.lock)。

配置模型

编辑 configs/default.yaml,修改 model_name 为目标 checkpoint:

model_name: LiquidAI/LFM2.5-1.2B-Base   # 换成你想修复的模型

默认使用 LiquidAI/antidoom-mix-v1.0 prompt 集,生成 FTPO pairs 并训练 LoRA adapter,最后合并回原模型。

运行全流程

uv run antidoom -c configs/default.yaml -r runs/antidoom1 \
 --temp 0.01 \
 --model-name LiquidAI/LFM2.5-1.2B-Base

生成结果写到 runs/antidoom1/(含生成 completions、FTPO pairs),训练后的 adapter 和合并模型也输出到同一目录。

关键超参数建议

参数 默认 建议范围 说明
max_train_examples ≤ 实际 pairs 数的 70% 建议 12k pairs from 15-20k 生成量
learning_rate 1e-5 ~ 2e-5 2e-5 开始,早停可避免过训练
early_stopping_chosen_win 0.4 chosen_win > 0.5 即可能过训练
lora_r 128256 比常规 LoRA 更高以提升学习效率
lora_alpha lora_rlora_r/2
target_modules 所有 attention + MLP projections + lm_head Antidoom 训练偏好全模块
rejected_regularisation_strength 0.3 防止 Wait/So/the 等被过度压制
chosen_regularisation_strength 0.5 防止单一代替 token 过度优先而产生新循环
min_chosen_tokens 1 通常 1 即可

检测逻辑(参考实现)

Loop 检测规则:连续重复 ≥4 次,总长度 ≥60 字符

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  # 第一个重复段的第一个 token 位置
            start += 1
    return None

多轮 Antidoom

第一轮训练后,原来被压制的 token 释放了概率,可能暴露新的 loop 触发点。多轮 Antidoom 可进一步降低 doom loop 率。


坑与适用边界

适用场景 ✅

  • 有自定义推理训练流程的团队(尤其是合成 reasoning 数据丰富的场景)
  • 小型推理模型(1-4B)接入了 thinking trace 但 doom loop 率高
  • 想在不引入通用性能下降的前提下修复重复退化问题

局限性 ⚠️

  • 不是通用采样替代品:对非 loop 类的重复问题(如轻微重复)效果有限
  • 对大模型效果未经充分验证:目前公开数据集中在 1-4B 规模,7B+ 模型未见报道
  • 过训练风险高:chosen_win 超过 0.5 就可能产生新的 loop 行为;建议 early stopping 从 0.4 起步
  • 生成阶段耗时与 loop 率成正比:loop 率越高,收集 20k pairs 所需时间越长
  • 硬件要求:需要支持 vLLM 的 GPU 环境(NVIDIA 默认,AMD 需单独配置)

与 repetition_penalty 的关系

Antidoom 论文明确指出:repetition_penalty权宜之计,会同时压制正常 token 的概率;而 Antidoom 是精准手术,只改 loop 触发 token 处的分布,其他 token 完全不受影响。


一句话结论

Antidoom 通过精确定位推理模型 Doom Loop 的触发 token,以 FTPO + LoRA 仅重训练该 token 的替代分布,在 LFM2.5-2.6B 上将 loop 率从 10.2% 降至 1.4%、Qwen3.5-4B 从 22.9% 降至 1%,全程不开地图、不教新技能,纯粹移除模型已有的输出障碍——任何跑推理模型并被 loop 困扰的团队都值得一试。