模型 / 数据集
p-e-w/heretic avatar
p-e-w/heretic

Heretic:用定向消融和 Optuna 自动移除语言模型审查

Fully automatic censorship removal for language models

31,477 个 Star3,523 个 ForkPythonAGPL-3.0

秒懂

它是什么?
Heretic 是一个 Python 命令行工具,它把 abliteration(定向消融)技术自动化,无需后训练即可移除 transformer 语言模型的安全对齐。它用 Optuna 搜索参数,目标是让模型在有害提示下不再拒绝,同时尽量保持原有能力。
适合谁用?
Heretic 适合两类人:一是想快速获得无审查模型、又不愿手工调参的本地 LLM 用户,二是研究安全对齐移除机制的研究者。不适合对模型行为有严格合规要求的企业,也不适合需要支持纯状态空间模型(如 Mamba)的用户。
能商用吗?
可以,但条件严格。AGPL-3.0 是网络 copyleft 许可证:如果别人通过网络使用你修改过的版本(例如作为托管服务),你必须以同一许可证向他们提供源代码。
还在维护吗?
在维护。仓库最近一次提交在 10 天前。
用什么语言写的?
主要是 Python(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。

开源项目深度解析

它解决什么问题,给谁用

主流 instruct 模型在训练时被注入了安全对齐,这会让模型拒绝回答某些敏感或争议性话题。这种拒绝往往过度,连无害的医学、历史或虚构创作问题也会被挡掉。过去要移除这种对齐,需要人工分析模型内部激活,找出代表拒绝方向的向量,再手工调整消融强度。这个过程依赖对 transformer 内部结构的理解,普通用户很难复现。Heretic 的目标就是把这套流程完全自动化。它面向两类人:一类是本地运行 LLM、希望模型在敏感话题上给出完整回答的爱好者,另一类是研究对齐机制、想快速构造对照模型的研究者。README 明确说,使用 Heretic 不需要理解 transformer 内部,只要会运行命令行程序即可。

核心机制:定向消融加 Optuna 搜索

Heretic 的实现基于两个公开方法:Arditi 等人 2024 年提出的 abliteration,以及 Lai 2025 年改进的投影消融和范数保持双投影消融。原理是找到模型内部代表拒绝行为的线性方向,然后在该方向上削弱或移除激活,使模型不再触发拒答。Heretic 的独特之处在于它把参数搜索交给了 Optuna,一个基于 TPE 的超参优化库。它同时最小化两个目标:有害提示的拒绝次数,以及与原始模型的 KL 散度。拒绝次数低意味着审查移除彻底,KL 散度低意味着模型原有能力损失小。两个目标互相制约,Optuna 在中间找平衡点。整个过程无需人工干预,README 中给出的例子是,默认配置下 Heretic 生成的 gemma-3-12b-it 版本,在 100 个有害提示中只拒绝 3 次,与人工制作的 abliterated 版本持平,但 KL 散度只有 0.16,远低于后者的 0.45 或 1.04。这些数字来自项目自己的表格,用 PyTorch 2.8 在 RTX 5090 上测得,不同硬件可能有差异。

支持的模型范围与硬件要求

Heretic 不是万能工具。README 说明它支持大多数密集模型,包括多模态模型,也支持多种 MoE 架构,以及像 Qwen3.5 这样的混合模型。但纯状态空间模型(如 Mamba)和某些研究性架构目前无法开箱即用。这意味着如果你用的模型不在支持列表内,需要自己改代码或换工具。硬件方面,PyTorch 2.2 是最低版本,但某些模型需要更新的功能。比如加载 MXFP4 量化的 gpt-oss 模型依赖 PyTorch 2.6 引入的 `torch.accelerator`。这在实际使用中是个隐性门槛:你装好环境后跑一个老模型可能没问题,但换到新模型时可能突然报错,需要升级 PyTorch。另外,消融过程本身需要加载整个模型并跑多次前向传播,显存和算力需求不低,16GB 显存只能跑较小的模型,如 README 中提到的 Qwen3-4B。

安装与运行:两条路径

安装很简单,前提是准备好 Python 3.10 以上和适配硬件的 PyTorch。官方推荐用 pip 安装:`pip install -U heretic-llm`,然后直接指定 Hugging Face 模型 ID 运行:`heretic Qwen/Qwen3-4B-Instruct-2507`。这是最省事的方式,适合只想用工具的人。另一种方式是用 uv 克隆仓库后运行 `uv run heretic`。README 特别推荐这条路,因为仓库里有 `uv.lock` 文件,锁定了每个依赖包的版本,能保证与开发者的环境一致,减少因依赖漂移导致的奇怪问题。这个建议实际反映了一个工程现实:LLM 工具链依赖复杂,PyTorch 版本、transformers 版本、CUDA 版本互相牵连,锁文件能省去很多调试时间。运行后,Heretic 会自动下载模型、执行优化、输出消融后的模型。默认配置下不需要任何额外参数,但如果你想控制搜索空间或评估方式,可以运行 `heretic --help` 查看所有选项,或者编辑 `config.default.toml` 文件。

内置评估与可复现性

Heretic 自带评估功能,这是它区别于其他一次性脚本的重要设计。README 给出了命令示例:`heretic --model google/gemma-3-12b-it --evaluate-model p-e-w/gemma-3-12b-it-heretic`。这条命令会运行两个指标:针对有害提示的拒绝率,以及针对无害提示的 KL 散度。拒绝率衡量审查移除效果,KL 散度衡量对原模型能力的破坏程度。这个评估不是摆设,它让用户可以验证自己生成的模型是否达到预期。但 README 也提醒,具体数值会因平台和硬件而异,表里的数字是在特定环境(PyTorch 2.8 加 RTX 5090)下得到的。这意味着你不能拿别人的评估结果当作自己机器上的保证。可复现性在这里有两面:一方面,自动搜索和固定评估流程让结果可以横向比较;另一方面,硬件依赖让跨平台复现变得困难。如果你要发布自己的消融模型,最好在 README 里注明测试环境。

局限与失败模式

最明显的局限是架构支持范围。纯状态空间模型和不常见的架构不支持,这意味着 Heretic 不能覆盖所有新模型。第二个局限是评估指标的片面性。README 自己承认,数学指标和自动基准不能替代人工评估。拒绝率低不代表模型在所有敏感话题上都表现良好,KL 散度低也不保证模型没有隐性能力损伤。第三个问题是安全对齐移除的伦理和法律风险。移除审查后,模型可能生成有害内容,使用者需要自己承担后果。Heretic 的许可证是 AGPL-3.0,这是一个强 copyleft 许可证。如果你把 Heretic 集成到自己的服务中并对外提供网络访问,AGPL 要求你公开修改后的源代码。这个约束对商业闭源项目可能是阻碍。另外,Heretic 输出的是修改后的模型权重,你分发这些权重时,要确认原模型的许可证是否允许修改和再分发。例如,某些模型许可证禁止创建衍生作品。

替代方案与对比

Heretic 的主要替代方案是手工 abliteration 和基于它的半自动工具。手工 abliteration 的典型代表是 mlabonne 在 Hugging Face 上发布的 abliterated 模型,以及 huihui-ai 的系列模型。这些模型由人工分析激活方向,手动选择消融层和强度。优点是可以针对特定模型微调,缺点是需要专家知识,且结果不可复现。Heretic 在 README 中直接与这些手工版本对比,用 gemma-3-12b-it 做例子:三个版本都达到 3/100 的拒绝率,但 Heretic 的 KL 散度更低。这说明自动搜索能找到比人工调参更优的参数组合。另一个差异是工作流:手工 abliteration 通常是一次性脚本,没有内置评估;Heretic 把优化和评估集成在一起,形成一个闭环。如果你只是想快速得到一个可用的无审查模型,可以直接下载别人用 Heretic 生成的现成模型,Hugging Face 上已有超过 5000 个社区发布的 Heretic 模型,这个数量来自 README 的统计。但如果你的模型很新或很特殊,手工方法可能更灵活。

编辑结论

Heretic 适合两类人:一是想快速获得无审查模型、又不愿手工调参的本地 LLM 用户,二是研究安全对齐移除机制的研究者。不适合对模型行为有严格合规要求的企业,也不适合需要支持纯状态空间模型(如 Mamba)的用户。采用前先做三件事:确认目标模型是密集或 MoE 架构,检查 PyTorch 版本至少 2.2(若用 gpt-oss 等 MXFP4 模型需 2.6+),并用内置评估命令如 `heretic --model <原模型> --evaluate-model <候选模型>` 验证 KL 散度是否可接受。不要跳过人工测试,因为自动指标无法覆盖所有边界情况。最终判断:Heretic 把过去需要专家手工操作的 abliteration 变成了一个可复现的自动化流程,但它输出的模型仍是原模型的修改版,使用前要评估法律与伦理风险。

官方来源

  1. License: AGPL-3.0
  2. p-e-w/heretic on GitHub
  3. Project website
  4. README
  5. Releases
社区笔记

社区笔记