heretic:基于 Transformer 的语言模型审查自动移除工具

Fully automatic censorship removal for language models

分支12Tags5
文件最后提交记录最后更新时间
6 天前
1 天前
1 天前
9 个月前
3 个月前
1 年前
1 年前
6 天前
6 天前
6 天前
6 天前
6 天前
5 天前
5 天前

Logo

Heretic: 面向语言模型的完全自动审查移除

Discord Matrix Follow us on Hugging Face Codeberg mirror

#1 Repository of the Day

Heretic 是一个用于从基于 Transformer 的语言模型中移除审查(又称“安全对齐”)的工具, 且无需昂贵的后训练。 它将定向消融的高级实现(又称“消融去审查”(abliteration),Arditi et al. 2024, Lai 2025(1, 2)),与由 Optuna 驱动的基于 TPE 的参数优化器相结合。

这种方法使 Heretic 能够完全自动运行。Heretic 通过同时最小化拒答次数与相对原始模型的 KL 散度,找到高质量的消融去审查参数。 由此生成的去审查模型会尽可能保留原始模型的智能。 使用 Heretic 无需理解 Transformer 内部机制。 事实上,任何知道如何运行命令行程序的人, 都可以使用 Heretic 为语言模型去除审查。

Heretic 支持大多数稠密模型,包括许多多模态模型、 多种不同的 MoE 架构,甚至一些如 Qwen3.5 的混合模型。 纯状态空间模型以及某些其他研究架构尚未开箱即用。

Screenshot

 

使用默认配置无监督运行时,Heretic 能够生成 可与人类专家手动创建的消融去审查模型质量相媲美的去审查模型:

模型 针对“有害”提示的拒答次数 针对“无害”提示与原始模型的 KL 散度
google/gemma-3-12b-it(原始) 97/100 0 (按定义)
mlabonne/gemma-3-12b-it-abliterated-v2 3/100 1.04
huihui-ai/gemma-3-12b-it-abliterated 3/100 0.45
p-e-w/gemma-3-12b-it-heretic(本项目) 3/100 0.16

由 Heretic 生成的版本在没有任何人工干预的情况下,达到了与其他消融去审查方案相同的 拒答抑制水平,但 KL 散度更低,表明对原始模型能力造成的损害更小。 (你可以使用 Heretic 内置的评估功能复现这些数字, 例如 heretic --model google/gemma-3-12b-it --evaluate-model p-e-w/gemma-3-12b-it-heretic。 请注意,具体数值可能因平台和硬件而异。 上表是在 RTX 5090 上使用 PyTorch 2.8 生成的。)

当然,数学指标和自动化基准测试并不能呈现全貌, 也不能替代人工评估。使用 Heretic 生成的模型受到了用户的好评(链接和强调为后加):

“我之前挺怀疑的,但我刚下载了 GPT-OSS 20B Heretic 模型,天哪。它对敏感话题会给出格式正确的长回复, 用的正是你会期待未审查模型使用的那些直白措辞, 还能生成带细节的 Markdown 格式表格等等。看起来这是 目前该模型最好的消融去审查版本……” (评论链接)

“Heretic GPT 20b 似乎是我目前试用过的最好的未审查模型。它没有破坏 模型的智能,还能回答原本会被基础模型拒绝的提示。” (评论链接)

“[Qwen3-4B-Instruct-2507-heretic] 是我在 16GB 显存上能够运行的最佳非量化消融去审查模型。” (评论链接)

Heretic 模型还已通过 MMLU 和 GSM8K 等标准指标接受了独立基准测试, 并显示其表现优于由其他消融去审查工具生成的模型: 1, 2。

社区已经使用 Heretic 创建并发布了 远超 5000 个 模型。

使用方法

请根据你的硬件准备 Python 3.10+ 环境,并安装适配的 PyTorch 2.2+。然后运行:

pip install -U heretic-llm
heretic Qwen/Qwen3-4B-Instruct-2507

将 Qwen/Qwen3-4B-Instruct-2507 替换为你想要解除审查的模型。

Important

虽然 PyTorch 2.2 是 Heretic 运行所需的最低 PyTorch 版本, 但某些模型和配置可能需要后续版本才提供的功能。例如,加载 gpt-oss 这类 MXFP4 量化模型时会使用 torch.accelerator,该 API 从 PyTorch 2.6 开始新增。

Tip

Heretic 使用 uv 进行依赖管理, 仓库中还包含一个 uv.lock 文件,用于固定所有包的版本。 如果你已经在使用 uv(而且你很可能应该这么做!),只需克隆仓库, 然后运行 uv run heretic 启动 Heretic,这能确保你的依赖与开发者使用的保持一致, 从而提高可靠性和安全性。

整个过程完全自动,无需配置;不过, Heretic 提供了多种配置参数,可按需修改以获得更精细的控制。运行 heretic --help 可查看可用的命令行选项, 或者如果你更喜欢使用配置文件,可以查看 config.default.toml。

程序启动时,Heretic 会对系统进行基准测试, 以确定最佳批次大小,从而充分利用可用硬件。 在 RTX 3090 上,使用默认配置,对 Qwen3-4B-Instruct-2507 进行解除审查大约需要 20-30 分钟。注意,Heretic 支持通过 bitsandbytes 进行模型量化,这可以大幅减少处理模型所需的显存。 将 quantization 选项设置为 bnb_4bit 即可启用量化。

Heretic 完成对模型的解除审查后,你可以选择保存模型、上传到 Hugging Face、与它对话以测试实际效果、 运行标准基准测试,或组合执行上述任意操作。

Heretic 如何工作

Heretic 实现了方向性消融的参数化变体。对于每个支持的 transformer 组件(目前包括 attention out-projection 和 MLP down-projection),它会识别每个 transformer 层中对应的矩阵,并相对于相关的“残差方向”对其进行正交化, 从而抑制该方向在矩阵乘法结果中的表达。

每一层的残差方向都通过“有害”与“无害”示例提示的 首 token 残差的均值差计算得到。

消融过程由若干可优化参数控制:

  • direction_index:残差方向的索引,或特殊 值 per layer,表示每一层都应使用该层对应的残差方向进行消融。
  • max_weight、max_weight_position、min_weight 和 min_weight_distance: 对于每个组件,这些参数描述了消融权重核在各层上的形状和位置。下图对此进行了说明:

Explanation

 

相较于现有 abliteration 系统,Heretic 的主要创新在于:

  • 消融权重核的形状高度灵活,结合 自动参数优化,可以改善合规性/质量之间的权衡。 Maxime Labonne 曾在 gemma-3-12b-it-abliterated-v2 中探索过非恒定消融权重。
  • 残差方向索引是浮点数而不是整数。对于非整数值, 会对最近的两个残差方向向量进行线性插值。 这开辟了远超均值差计算所识别方向的广阔方向空间,并常常让优化 过程找到比任何单独一层方向都更优的方向。
  • 消融参数会针对每个组件单独选择。我发现 MLP 干预相比 attention 干预往往更容易损害模型, 因此使用不同的消融权重可以进一步榨取一些额外性能。

已有技术

据我所知,现有公开可用的 abliteration 技术实现包括:

请注意,Heretic 完全从头编写,未复用上述任何项目的代码。

致谢

Heretic 的开发受到以下内容的启发:

引用

如果您将 Heretic 用于研究,请使用以下 BibTeX 条目引用:

@misc{heretic,
  author = {Weidmann, Philipp Emanuel},
  title = {Heretic: Fully automatic censorship removal for language models},
  year = {2025},
  publisher = {GitHub},
  journal = {GitHub repository},
  howpublished = {\url{https://github.com/p-e-w/heretic}}
}

许可证

版权 © 2025-2026 Philipp Emanuel Weidmann (pew@worldwidemann.com) + 贡献者

本程序是自由软件:您可以按照自由软件基金会发布的 GNU Affero General Public License 条款重新分发和/或修改它, 使用该许可证的第 3 版,或(由您选择)任何更高版本。

本程序以“可能有用”的期望发布, 但不提供任何担保;也不暗示适销性或特定用途适用性。 请参阅 GNU Affero General Public License 以获取更多信息。

您应已随本程序收到一份 GNU Affero General Public License 副本。 如果没有,请参阅 https://www.gnu.org/licenses/。

通过向本项目贡献,您同意在相同许可证下发布您的 贡献内容。

项目介绍

语言模型全自动审查规避【此简介由AI生成】

定制我的领域
16733.81 K3.77 K访问 GitHub