@0x0SojalSec: 任何LLM模型的完全自动审查移除,在45分钟内快速构建了一个移除LLM审查的工具。你……
摘要
Heretic 是一款完全自动化的工具,通过定向消融/消隐技术移除基于Transformer的LLM中的审查,在不到一小时内达到与手动方法相当的结果,且人力投入极少。
查看缓存全文
缓存时间: 2026/06/17 07:51
全自动去审查,适用于任何大型语言模型,我仅用45分钟就构建了一个去除LLM审查的工具。只需运行一条命令,模型就能完全解除审查。 - https://t.co/dwoSuldaYf https://t.co/fTlf6eDrpD
p-e-w/heretic
来源:https://github.com/p-e-w/heretic
Heretic:面向语言模型的完全自动化审查移除工具
Discord (https://discord.gg/gdXc48gSyT) Matrix (https://matrix.to/#/#heretic:matrix.org) 在 Hugging Face 上关注我们 (https://huggingface.co/heretic-org) Codeberg 镜像 (https://codeberg.org/p-e-w/heretic) #1 每日仓库 (https://trendshift.io/repositories/20538)
Heretic 是一款无需昂贵的后训练即可移除 Transformer 语言模型审查(即“安全对齐”)的工具。它结合了方向消融(即“abliteration”,Arditi 等人 2024 (https://arxiv.org/abs/2406.11717),Lai 2025 (1 (https://huggingface.co/blog/grimjim/projected-abliteration),2 (https://huggingface.co/blog/grimjim/norm-preserving-biprojected-abliteration)))的高级实现,以及基于 Optuna (https://optuna.org/) 的 TPE 参数优化器。这一方法使 Heretic 能够完全自动地工作。
Heretic 通过共同最小化拒绝次数和与原始模型的 KL 散度,找到高质量的消融参数。这产生了一个解除审查的模型,同时尽可能保留了原始模型的智能。使用 Heretic 不需要理解 Transformer 内部机制。事实上,任何会运行命令行程序的人都可以使用 Heretic 来解除语言模型的审查。
Heretic 支持大多数稠密模型,包括许多多模态模型、几种不同的 MoE 架构,甚至一些混合模型如 Qwen3.5。纯状态空间模型和某些其他研究架构目前尚不原生支持。
在默认配置下无监督运行,Heretic 可以生成质量可与人类专家手动创建的消融模型相媲美的解除审查模型:
| 模型 | 对“有害”提示的拒绝次数 | 对“无害”提示的 KL 散度(相对于原始模型) |
|---|---|---|
| google/gemma-3-12b-it (https://huggingface.co/google/gemma-3-12b-it)(原始版) | 97/100 | 0 (按定义) |
| mlabonne/gemma-3-12b-it-abliterated-v2 (https://huggingface.co/mlabonne/gemma-3-12b-it-abliterated-v2) | 3/100 | 1.04 |
| huihui-ai/gemma-3-12b-it-abliterated (https://huggingface.co/huihui-ai/gemma-3-12b-it-abliterated) | 3/100 | 0.45 |
| p-e-w/gemma-3-12b-it-heretic (https://huggingface.co/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 (https://huggingface.co/p-e-w/gpt-oss-20b-heretic) > 模型,天哪。它对敏感话题给出了格式正确、长篇幅的回复,使用了你期望从无审查模型中看到的直白用语,还会生成带详细信息的 Markdown 格式表格等。看起来这是迄今为止该模型最佳的消融版本……” (评论链接) (https://old.reddit.com/r/LocalLLaMA/comments/1oymku1/heretic_fully_automatic_censorship_removal_for/np6tba6/) “Heretic GPT 20b (https://huggingface.co/p-e-w/gpt-oss-20b-heretic) > 似乎是我尝试过的最好的无审查模型。它没有破坏模型的智能,并且能回答基础模型通常会拒绝的提示。” (评论链接) (https://old.reddit.com/r/LocalLLaMA/comments/1oymku1/heretic_fully_automatic_censorship_removal_for/npe9jng/) “[Qwen3-4B-Instruct-2507-heretic (https://huggingface.co/p-e-w/Qwen3-4B-Instruct-2507-heretic)] > 是我在 16GB 显存上能运行的最佳未量化消融模型。” (评论链接) (https://old.reddit.com/r/LocalLLaMA/comments/1phjxca/im_calling_these_people_out_right_now/nt06tji/)
Heretic 模型也已使用 MMLU 和 GSM8K 等标准指标进行了独立基准测试,结果发现与竞争性消融工具产生的模型相比表现出色:1 (https://old.reddit.com/r/LocalLLaMA/comments/1sojjoc/abliterlitics_benchmark_and_tensor_analysis/),2 (https://old.reddit.com/r/LocalLLaMA/comments/1sy18lx/abliterlitics_benchmarks_and_tensor_comparison/)。社区已使用 Heretic 创建并发布了超过 4000 (https://huggingface.co/models?other=heretic) 个模型。
用法
准备一个 Python 3.10+ 环境,并根据您的硬件安装合适的 PyTorch 2.2+。然后运行:
pip install -U heretic-llm heretic Qwen/Qwen3-4B-Instruct-2507
将 Qwen/Qwen3-4B-Instruct-2507 替换为您想要解除审查的模型。
虽然 PyTorch 2.2 是 Heretic 正常工作所需的最低版本,但某些模型和配置可能需要更高版本中的特性。例如,加载 MXFP4 量化模型(如 gpt-oss)使用
torch.accelerator,该功能在 PyTorch 2.6 中才加入。
Heretic 使用 uv (https://docs.astral.sh/uv/) 进行依赖管理,并且仓库中包含一个锁定每个包版本的
uv.lock文件。如果您已经使用 uv(并且您应该使用!),您可以直接克隆仓库并通过uv run heretic运行 Heretic,这样可以确保依赖项与开发者使用的匹配,从而提高可靠性和安全性。
整个过程完全自动化,无需配置;不过,Heretic 有多种可更改的配置参数,以获得更大的控制权。运行 heretic --help 查看可用的命令行选项,或者如果您更喜欢使用配置文件,请查看 config.default.toml。
在程序运行开始时,Heretic 会对系统进行基准测试,以确定最佳批量大小,从而充分利用可用硬件。在 RTX 3090 上,使用默认配置,解除 Qwen3-4B-Instruct-2507 (https://huggingface.co/Qwen/Qwen3-4B-Instruct-2507) 的审查大约需要 20-30 分钟。请注意,Heretic 支持使用 bitsandbytes 进行模型量化,这可以大幅减少处理模型所需的 VRAM 量。将 quantization 选项设置为 bnb_4bit 即可启用量化。
Heretic 完成模型审查移除后,您可以选择保存模型、上传到 Hugging Face、与模型聊天测试其效果、对其运行标准基准测试,或任意组合这些操作。
研究功能
除了其主要功能——移除模型审查外,Heretic 还提供了一些旨在支持模型内部语义研究(可解释性)的功能。要使用这些功能,您需要使用可选的 research 附加组件安装 Heretic:
pip install -U heretic-llm[research]
这使您可以访问以下功能:
通过传递 --plot-residuals 生成残差向量图
当使用此标志运行时,Heretic 将会:
- 为每个 Transformer 层计算第一个输出 token 的残差向量(隐藏状态),分别针对“有害”和“无害”提示。
- 执行 PaCMAP 投影 (https://github.com/YingfanWang/PaCMAP),从残差空间降至 2D 空间。
- 根据几何中位数左右对齐“有害”/“无害”残差的投影,使连续层的投影更加相似。此外,PaCMAP 使用前一层的投影作为初始值,从而减少突变的过渡。
- 绘制散点图,为每个层生成 PNG 图像。
- 生成一个动画 GIF,展示残差在层间如何变换。
请参阅配置文件了解控制生成图各个方面的选项。请注意,PaCMAP 是一个昂贵的操作,在 CPU 上执行。对于较大的模型,计算所有层的投影可能需要一个小时或更长时间。
通过传递 --print-residual-geometry 打印残差几何细节
如果您对“有害”和“无害”提示的残差向量之间的定量分析感兴趣,此标志会提供以下表格,其中包含有助于理解该关系的指标(以 gemma-3-270m-it (https://huggingface.co/google/gemma-3-270m-it) 为例):
`` ┏━━━━━━━┳━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┓ ┃ 层 ┃ S(g,b) ┃ S(g*,b*) ┃ S(g,r) ┃ S(g*,r*) ┃ S(b,r) ┃ S(b*,r*) ┃ |g| ┃ |g*| ┃ |b| ┃ |b*| ┃ |r| ┃ |r*| ┃ Silh ┃ ┡━━━━━━━╇━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━┩ │ 1 │ 1.0000 │ 1.0000 │ -0.4311 │ -0.4906 │ -0.4254 │ -0.4847 │ 170.29 │ 170.49 │ 169.78 │ 169.85 │ 1.19 │ 1.31 │ 0.0480 │ │ 2 │ 1.0000 │ 1.0000 │ 0.4297 │ 0.4465 │ 0.4365 │ 0.4524 │ 768.55 │ 768.77 │ 771.32 │ 771.36 │ 6.39 │ 5.76 │ 0.0745 │ │ 3 │ 0.9999 │ 1.0000 │ -0.5699 │ -0.5577 │ -0.5614 │ -0.5498 │ 1020.98 │ 1021.13 │ 1013.80 │ 1014.71 │ 12.70 │ 11.60 │ 0.0920 │ │ 4 │ 0.9999 │ 1.0000 │ 0.6582 │ 0.6553 │ 0.6659 │ 0.6627 │ 1356.39 │ 1356.20 │ 1368.71 │ 1367.95 │ 18.62 │ 17.84 │ 0.0957 │ │ 5 │ 0.9987 │ 0.9990 │ -0.6880 │ -0.6761 │ -0.6497 │ -0.6418 │ 766.54 │ 762.25 │ 731.75 │ 732.42 │ 51.97 │ 45.24 │ 0.1018 │ │ 6 │ 0.9998 │ 0.9998 │ -0.1983 │ -0.2312 │ -0.1811 │ -0.2141 │ 2417.35 │ 2421.08 │ 2409.18 │ 2411.40 │ 43.06 │ 43.47 │ 0.0900 │ │ 7 │ 0.9998 │ 0.9997 │ -0.5258 │ -0.5746 │ -0.5072 │ -0.5560 │ 3444.92 │ 3474.99 │ 3400.01 │ 3421.63 │ 86.94 │ 94.38 │ 0.0492 │ │ 8 │ 0.9990 │ 0.9991 │ 0.8235 │ 0.8312 │ 0.8479 │ 0.8542 │ 4596.54 │ 4615.62 │ 4918.32 │ 4934.20 │ 384.87 │ 377.87 │ 0.2278 │ │ 9 │ 0.9992 │ 0.9992 │ 0.5335 │ 0.5441 │ 0.5678 │ 0.5780 │ 5322.30 │ 5316.96 │ 5468.65 │ 5466.98 │ 265.68 │ 267.28 │ 0.1318 │ │ 10 │ 0.9974 │ 0.9973 │ 0.8189 │ 0.8250 │ 0.8579 │ 0.8644 │ 5328.81 │ 5325.63 │ 5953.35 │ 5985.15 │ 743.95 │ 779.74 │ 0.2863 │ │ 11 │ 0.9977 │ 0.9978 │ 0.4262 │ 0.4045 │ 0.4862 │ 0.4645 │ 9644.02 │ 9674.06 │ 9983.47 │ 9990.28 │ 743.28 │ 726.99 │ 0.1576 │ │ 12 │ 0.9904 │ 0.9907 │ 0.4384 │ 0.4077 │ 0.5586 │ 0.5283 │ 10257.40│ 10368.50│ 11114.51│ 11151.21│ 1711.18│ 1664.69│ 0.1890 │ │ 13 │ 0.9867 │ 0.9874 │ 0.4007 │ 0.3680 │ 0.5444 │ 0.5103 │ 12305.12│ 12423.75│ 13440.31│ 13432.47│ 2386.43│ 2282.47│ 0.1293 │ │ 14 │ 0.9921 │ 0.9922 │ 0.3198 │ 0.2682 │ 0.4364 │ 0.3859 │ 16929.16│ 17080.37│ 17826.97│ 17836.03│ 2365.23│ 2301.87│ 0.1282 │ │ 15 │ 0.9846 │ 0.9850 │ 0.1198 │ 0.0963 │ 0.2913 │ 0.2663 │ 16858.58│ 16949.44│ 17496.00│ 17502.88│ 3077.08│ 3029.60│ 0.1611 │ │ 16 │ 0.9686 │ 0.9689 │ -0.0029 │ -0.0254 │ 0.2457 │ 0.2226 │ 18912.77│ 19074.86│ 19510.56│ 19559.62│ 4848.35│ 4839.75│ 0.1516 │ │ 17 │ 0.9782 │ 0.9784 │ -0.0174 │ -0.0381 │ 0.1908 │ 0.1694 │ 27098.09│ 27273.00│ 27601.12│ 27653.12│ 5738.19│ 5724.21│ 0.1641 │ │ 18 │ 0.9184 │ 0.9196 │ 0.1343 │ 0.1430 │ 0.5155 │ 0.5204 │ 190.16 │ 190.35 │ 219.91 │ 220.62 │ 87.82 │ 87.59 │ 0.1855 │ └───────┴────────┴──────────┴─────────┴──────────┴─────────┴──────────┴──────────┴──────────┴──────────┴──────────┴─────────┴─────────┴────────┘
g = 好提示残差向量的均值 g* = 好提示残差向量的几何中位数 b = 坏提示残差向量的均值 b* = 坏提示残差向量的几何中位数 r = 均值的拒绝方向(即 b - g) r* = 几何中位数的拒绝方向(即 b* - g*) S(x,y) = x 和 y 的余弦相似度 |x| = x 的 L2 范数 Silh = 好/坏聚类残差的平均轮廓系数 ``
Heretic 的工作原理
Heretic 实现了一种参数化的方向消融变体。对于每个支持的 Transformer 组件(目前是注意力输出投影和 MLP 下投影),它会识别每个 Transformer 层中相关的矩阵,并将它们相对于相关的“拒绝方向”正交化,从而抑制该方向在矩阵乘法结果中的表达。拒绝方向是针对每一层计算的,方法是计算“有害”和“无害”示例提示的第一个 token 残差的均值之差。
消融过程由几个可优化的参数控制:
direction_index:要么是拒绝方向的索引,要么是特殊值per layer,表示每一层应使用与该层相关联的拒绝方向进行消融。max_weight、max_weight_position、min_weight和min_weight_distance:对于每个组件,这些参数描述了消融权重核在各层上的形状和位置。下图说明了这一点:
Heretic 相对于现有消融系统的主要创新点包括:
- 消融权重核的形状非常灵活,结合自动参数优化,可以改善合规性与质量之间的权衡。非恒定消融权重此前由 Maxime Labonne 在 gemma-3-12b-it-abliterated-v2 (https://huggingface.co/mlabonne/gemma-3-12b-it-abliterated-v2) 中探索过。
- 拒绝方向索引是一个浮点数,而不是整数。对于非整数值,会对两个最近的拒绝方向向量进行线性插值。这解锁了比均值差计算所识别的方向更加广阔的空间,并且通常能使优化过程找到比任何单个层所属方向更好的方向。
- 消融参数是针对每个组件单独选择的。我发现 MLP 干预往往比注意力干预对模型的损害更大,因此使用不同的消融权重可以额外挤出一些性能。
相关已有工作
我知道以下公开可用的消融技术实现:
- AutoAbliteration (https://huggingface.co/posts/mlabonne/714992455492422)
- abliterator.py (https://github.com/FailSpy/abliterator)
- wassname’s Abliterator (https://github.com/wassname/abliterator)
- ErisForge (https://github.com/Tsadoq/ErisForge)
- Removing refusals with HF Transformers (https://github.com/Sumandora/remove-refusals-with-transformers)
- deccp (https://github.com/AUGMXNT/deccp)
请注意,Heretic 是从头编写的,没有重复使用上述任何项目的代码。
致谢
Heretic 的开发得益于以下信息:
- 最初消融论文 (Arditi et al. 2024) (https://arxiv.org/abs/2406.11717)
- Maxime Labonne 关于消融的文章 (https://huggingface.co/blog/mlabonne/abliteration),以及他自己消融模型模型卡中的一些细节(见上文)
- Jim Lai 描述“投影消融”(projected abliteration)(https://huggingface.co/blog/grimjim/projected-abliteration) 和“范数保持双投影消融”(norm-preserving biprojected abliteration)(https://huggingface.co/blog/grimjim/norm-preserving-biprojected-abliteration) 的文章
引用
如果您在研究中使用 Heretic,请使用以下 BibTeX 条目进行引用:
bibtex @misc{heretic, author = {Weidmann, Philipp Emanuel}, title = {Heretic: Fully automatic censorship removal for language models}, year = {2025}, publisher = {GitHub}, howpublished = {\url{https://github.com/p-e-w/heretic}} }
相似文章
LLM去审查工具Heretic收到Facebook(“Meta”)的法律通知
Heretic LLM去审查项目收到Meta的法律通知,导致衍生Llama模型被移除;该项目已迁移至Codeberg镜像,并计划采取技术措施以保持访问权限。
LLM权重中的政治审查机制(109分钟阅读)
这项关于Qwen 3.5的机制可解释性研究揭示了负责政治审查的特定电路,展示了如何通过引导内部方向来识别、分析甚至关闭该电路。研究结果表明,模型的事实知识保持完整,审查行为只是叠加在其之上。
@LiorOnAI:现在你可以将任何LLM转换成更快的版本,而无需从头重新训练。NVIDIA刚刚在他们30B的模型上实现了这一点。她…
NVIDIA提出了一种方法,将任何LLM转换为更快的版本,方法是将模型拆分为两个副本:一个冻结用于上下文,另一个训练用于并行生成多个token,实现了2.4倍加速,且质量保留约99%,仅使用了8%的训练数据。
@NousResearch:今天我们发布对比神经元归因(CNA),一种通过识别和消融稀疏电路来引导LLM行为的方法…
NousResearch 发布了对比神经元归因(CNA),该方法通过消融稀疏的 MLP 电路来引导 LLM 行为,无需训练稀疏自编码器或降低基准测试性能,并在多达 70B 参数的模型的拒绝电路上验证了有效性。
智慧在于知道何时沉默:通过注意力转移实现无幻觉的大语言模型遗忘
本论文引入注意力转移(Attention-Shifting, AS)框架,用于大语言模型的选择性机器遗忘,在有效移除敏感信息与防止幻觉和保持模型性能之间取得平衡。该方法采用重要性感知的注意力抑制和保留增强机制,在标准基准上相比现有遗忘方法实现了高达15%的准确度保持率提升。