Antidoom 是一个用于减少大语言模型“重复循环 / doom loops”的专项训练工具。它会对模型生成结果进行采样,自动检测重复片段开始的位置,将触发循环的第一个 token 标记为 rejected,再从同一位置选择更合理的替代 token,生成 FTPO(Final Token Preference Optimization)偏好数据,并训练 LoRA adapter,最终可合并回基础模型。该项目主要面向已经具备本地模型训练、vLLM、PyTorch、LoRA 微调经验的开发者和研究人员。
适用领域
大语言模型微调 / 偏好优化 / LoRA / PEFT / 模型对齐 / 推理模型稳定性优化 / 重复生成检测 / LLM 训练数据生成 / vLLM 推理采样
配置难度
高。该项目不是普通应用库,而是面向 LLM 训练/微调流程的研究型工具。使用者需要熟悉 Python、uv、Hugging Face、vLLM、PyTorch、LoRA、GPU 环境配置和模型评估。NVIDIA 环境相对直接,AMD/ROCm 环境更复杂。真正获得稳定收益还需要进行样本量、学习率、early stopping、LoRA rank、正则化强度等实验调参。
商业价值
对于训练 reasoning model、代码模型、数学推理模型或使用大量合成 reasoning 数据的团队,Antidoom 有较高实用价值。它可以降低模型在生产场景中出现重复输出、无意义循环、低温推理卡死等问题,从而改善用户体验和模型可靠性。由于采用 LoRA adapter 方式,接入成本低于重新全量训练模型。其商业价值主要体现在提升模型稳定性、降低线上生成失败率、减少人工排查重复输出问题的成本。不过它的适用范围较窄,只有当业务模型确实存在明显 repetition loop 问题时,投入产出比才会更高。
01
技术亮点
- 定位非常明确:专门解决 LLM 在推理或低温采样中陷入重复循环的问题
- 不是简单清洗输出,而是直接在循环开始 token 处构造偏好训练信号
- 使用 FTPO 做单 token 级偏好优化,训练成本相对全答案监督更聚焦
- 支持一站式 generate + train + merge 流程
- 可以复用 Hugging Face 数据集,也支持本地 JSONL prompt 输入
- 对 rejected 和 chosen token 都提供频率正则化,降低样本不均衡导致的副作用
- 支持 LoRA adapter 训练与合并,便于集成到现有模型发布流程
- 文档对关键超参数给出了实用经验值,例如学习率、样本量、early stopping、LoRA rank 等
- Apache-2.0 许可证,商业使用友好
02
目标用户
- 训练或微调开源大模型的算法工程师
- 遇到模型反复输出 Wait、So、But、Alternatively 等循环推理文本的开发者
- 做 reasoning model、数学推理模型、合成数据训练模型的研究人员
- 需要降低低温采样下重复生成问题的模型团队
- 熟悉 Hugging Face、PyTorch、vLLM、LoRA 的高级用户
03
配置要求
- 需要支持 PyTorch 和 vLLM 的 GPU 环境;默认路径是 NVIDIA/CUDA
- AMD/ROCm 需要单独环境,且配置中需要 attention_backend: TRITON_ATTN 和 optim: adamw_torch
- 需要配置 model_name,指向基础模型或 Hugging Face 模型 ID
- 需要配置 generation.hf_dataset 或 generation.input_jsonl,默认数据集为 LiquidAI/antidoom-mix-v1.0
- 需要设置 generation.prompt_field,指定 prompt 所在字段;字段内容可以是纯文本、OpenAI chat 格式或 ShareGPT 格式
- 建议准备至少 15k prompts,并目标生成约 15k-20k 条偏好样本
- train.max_train_examples 建议低于实际生成样本数,例如不超过生成 FTPO rows 的 70%
- learning_rate 建议从 0.00001 到 0.00002 开始尝试
- early_stopping_chosen_win 可从 0.4 开始调节,避免过训练
- LoRA rank 推荐 128 或 256;lora_alpha 通常设为 lora_r 或 lora_r 的一半
- target_modules 推荐覆盖 q_proj、k_proj、v_proj、o_proj、gate_proj、up_proj、down_proj、lm_head
- 需要较大显存,具体需求取决于基础模型大小、vLLM 推理批量、LoRA rank 和训练配置
04
适用场景
- 为已有基础模型或指令模型生成反重复偏好数据
- 检测模型 completion 中重复片段的起点,并构造 token 级 rejected/chosen 偏好样本
- 训练一个专门抑制重复循环的 LoRA adapter
- 将 LoRA adapter 合并成新的模型 checkpoint
- 针对低温采样场景减少推理过程中陷入重复句式或重复 reasoning step 的概率
- 分析哪些 token 经常成为循环开始 token,并通过正则化避免过度压制单一词
05
部署与配置
- 克隆仓库:git clone https://github.com/Liquid4All/antidoom
- 进入目录:cd antidoom
- 安装 uv:如果本地没有 uv,需要先安装 Astral uv 包管理器
- NVIDIA/CUDA 环境下执行:uv sync
- 编辑 configs/default.yaml,将 model_name 改为需要处理的 Hugging Face 模型 ID 或本地 checkpoint
- 运行完整生成与训练流程:uv run antidoom -c configs/default.yaml -r runs/antidoom1 --temp 0.01 --model-name LiquidAI/LFM2.5-1.2B-Base
- 如只生成数据,可运行:uv run antidoom -c configs/default.yaml -r runs/antidoom1 generate --model-name <model>
- 如从已有 FTPO pair 文件训练,可运行:uv run antidoom -c configs/default.yaml -r runs/antidoom1 train --dataset-jsonl runs/antidoom1/iter_0_ftpo_pairs.jsonl --model-name <model>
- 如只合并 adapter,可运行:uv run antidoom -c configs/default.yaml -r runs/antidoom1 merge --model-name <model>
- AMD/ROCm 用户不要使用默认 uv.lock,需要按项目说明单独创建 ROCm 环境,并使用 configs/default_amd.yaml
06
风险与注意事项
- 工具解决的是非常窄的 failure mode,不能替代通用对齐、SFT 或 RLHF
- 如果模型本身不明显存在 doom loop,收益可能有限
- 过训练可能导致模型能力下降,甚至产生更多循环,需要仔细调学习率和 early stopping
- 生成偏好数据依赖模型本身暴露循环问题,如果 prompt 数量或温度设置不合适,可能难以收集足够样本
- token 级偏好训练可能误伤某些常用推理词,需要依赖正则化与人工评估
- 需要 GPU、vLLM、PyTorch 环境,部署门槛高于普通 Python 工具
- AMD/ROCm 支持不是默认路径,需要单独环境配置
- 默认流程可能消耗较多推理与训练资源,尤其是大模型和 15k+ 样本规模
- 项目 star 数中等,生态和长期维护稳定性仍需观察
- 需要用户理解 tokenizer、chat template、LoRA、偏好训练等概念,否则调参和排错难度较高
2026-07-14
第24名
新收录 · github_search
2026-07-13
第28名
新收录 · github_search