Python · 项目报告

Liquid4All/antidoom

该仓库暂未提供 GitHub 项目描述。

已完成 打开 GitHub
L
290星标
24Fork
0Issue
Apache-2.0许可证

分析结果

项目分析

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