p-e-w/heretic

GitHub: p-e-w/heretic

一款全自动的大语言模型去审查工具,通过定向消融与参数优化在保持模型能力的同时移除安全对齐限制。

Stars: 10294 | Forks: 1042

Logo # Heretic:语言模型的完全自动去审查工具

[![Discord](https://img.shields.io/discord/1447831134212984903?color=5865F2&label=discord&labelColor=black&logo=discord&logoColor=white&style=for-the-badge)](https://discord.gg/gdXc48gSyT) [![在 Hugging Face 上关注我们](https://huggingface.co/datasets/huggingface/badges/resolve/main/follow-us-on-hf-md-dark.svg)](https://huggingface.co/heretic-org) [![今日 #1 仓库](https://trendshift.io/api/badge/repositories/20538)](https://trendshift.io/repositories/20538) Heretic 是一款无需昂贵的后训练即可从基于 transformer 的语言模型中移除审查(即“安全对齐/safety alignment”)的工具。 它结合了定向消融(directional ablation)的高级实现(也称为“abliteration”)([Arditi et al. 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 散度来寻找高质量的 abliteration 参数。这使得去审查后的模型能够尽可能多地保留原始模型的智能。使用 Heretic 无需理解 transformer 内部机制。事实上,任何知道如何运行命令行程序的人都可以使用 Heretic 对语言模型进行去审查。 Screenshot   使用默认配置进行无监督运行时,Heretic 生成的去审查模型在质量上可媲美人类专家手动创建的 abliteration: | 模型 | “有害”提示的拒绝次数 | “无害”提示相对于原始模型的 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) ( ours)** | **3/100** | **0.16** | Heretic 版本在无需任何人工努力的情况下生成,达到了与其他 abliteration 相同的拒绝抑制水平,但 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 生成的模型受到了用户的好评(已添加链接和强调): Heretic 支持大多数稠密模型,包括许多多模态模型,以及几种不同的 MoE 架构。它尚不支持 SSM/混合模型、具有非均匀层的模型以及某些新型注意力系统。 您可以在 [Hugging Face 上](https://huggingface.co/collections/p-e-w/the-bestiary) 找到一小部分使用 Heretic 进行去审查的模型,并且除了这些之外,社区还创建并发布了 [超过 1,000 个](https://huggingface.co/models?other=heretic) Heretic 模型。 ## 用法 准备一个安装了 PyTorch 2.2+ 的 Python 3.10+ 环境,并根据您的硬件进行适当配置。然后运行: ``` pip install -U heretic-llm heretic Qwen/Qwen3-4B-Instruct-2507 ``` 将 `Qwen/Qwen3-4B-Instruct-2507` 替换为您想要去审查的任何模型。 该过程是完全自动的,不需要配置;但是,Heretic 有各种配置参数,可以对其进行更改以实现更好的控制。运行 `heretic --help` 以查看可用的命令行选项,或者如果您更喜欢使用配置文件,请查看 [`config.default.toml`](config.default.toml)。 在程序运行开始时,Heretic 会对系统进行基准测试,以确定最佳批次大小,从而充分利用可用的硬件。在 RTX 3090 上,使用默认配置,对 Llama-3.1-8B-Instruct 进行去审查大约需要 45 分钟。请注意,Heretic 支持使用 bitsandbytes 进行模型量化,这可以大幅减少处理模型所需的 VRAM 量。将 `quantization` 选项设置为 `bnb_4bit` 以启用量化。 在 Heretic 完成对模型的去审查后,您可以选择保存模型、将其上传到 Hugging Face、与其聊天以测试其效果,或者执行这些操作的任意组合。 ## 研究功能 除了移除模型审查这一主要功能外,Heretic 还提供了旨在支持模型内部语义(可解释性)研究的功能。要使用这些功能,您需要安装带有可选 `research` 扩展的 Heretic: ``` pip install -U heretic-llm[research] ``` 这使您能够访问以下功能: ### 通过传递 `--plot-residuals` 生成残差向量图 使用此标志运行时,Heretic 将: 1. 针对“有害”和“无害”提示,计算每个 transformer 层的第一个输出 token 的残差向量(隐藏状态)。 2. 执行 [PaCMAP 投影](https://github.com/YingfanWang/PaCMAP),将残差空间映射到 2D 空间。 3. 通过几何中位数对“有害”/“无害”残差的投影进行左右对齐,使连续层的投影更加相似。此外,PaCMAP 在每一新层初始化时使用上一层的投影,从而最大限度地减少突兀的过渡。 4. 散点绘制投影,为每一层生成一个 PNG 图像。 5. 生成一个动画,以动画 GIF 的形式展示残差在各层之间的变换。 Plot of residual vectors 请参阅 [配置文件](config.default.toml) 以获取允许您控制生成图表各个方面选项。 请注意,PaCMAP 是一项在 CPU 上执行的昂贵操作。对于较大的模型,计算所有层的投影可能需要一小时或更长时间。 ### 通过传递 `--print-residual-geometry` 打印关于残差几何的详细信息 如果您对“有害”和“无害”提示的残差向量之间关系的定量分析感兴趣,此标志会为您提供下表,其中包含有助于理解这些关系的指标(此处以 [gemma-3-270m-it](https://huggingface.co/google/gemma-3-270m-it) 为例): ``` ┏━━━━━━━┳━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┓ ┃ Layer ┃ 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 = mean of residual vectors for good prompts g* = geometric median of residual vectors for good prompts b = mean of residual vectors for bad prompts b* = geometric median of residual vectors for bad prompts r = refusal direction for means (i.e., b - g) r* = refusal direction for geometric medians (i.e., b* - g*) S(x,y) = cosine similarity of x and y |x| = L2 norm of x Silh = Mean silhouette coefficient of residuals for good/bad clusters ``` ## Heretic 的工作原理 Heretic 实现了定向消融的参数化变体。对于每个受支持的 transformer 组件(目前为注意力输出投影和 MLP 下投影),它会在每个 transformer 层中识别相关矩阵,并使它们相对于相关的“拒绝方向”正交化,从而抑制该方向在与该矩阵相乘的结果中的表达。 拒绝方向是针对每一层计算的,即“有害”和“无害”示例提示的第一个 token 残差的均值之差。 消融过程由几个可优化的参数控制: * `direction_index`:拒绝方向的索引,或特殊值 `per layer`,指示每一层应使用与该层关联的拒绝方向进行消融。 * `max_weight`, `max_weight_position`, `min_weight`, 和 `min_weight_distance`: 对于每个组件,这些参数描述了各层消融权重核的形状和位置。下图对此进行了说明: Explanation   Heretic 相对于现有 abliteration 系统的主要创新在于: * 消融权重核的形状非常灵活,结合自动参数优化,可以改善依从性/质量的权衡。Maxime Labonne 在 [gemma-3-12b-it-abliterated-v2](https://huggingface.co/mlabonne/gemma-3-12b-it-abliterated-v2) 中先前探索了非常量消融权重。 * 拒绝方向索引是浮点数而不是整数。对于非整数值,将对两个最近的拒绝方向向量进行线性插值。这解锁了除均值差计算识别出的方向之外的广阔额外方向空间,通常使优化过程能够找到比属于任何单独层的方向更好的方向。 * 每个组件分别选择消融参数。我发现 MLP 干预往往比注意力干预对模型的损害更大,因此使用不同的消融权重可以挤出一些额外的性能。 ## 先前技术 我知道以下公开可用的 abliteration 技术实现: * [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 的开发参考了: * [原始 abliteration 论文 (Arditi et al. 2024)](https://arxiv.org/abs/2406.11717) * [Maxime Labonne 关于 abliteration 的文章](https://huggingface.co/blog/mlabonne/abliteration),以及他自己 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 条目进行引用: ``` @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 () + 贡献者 本程序是自由软件:您可以根据自由软件基金会发布的 GNU Affero 通用公共许可证的条款重新分发和/或修改它,许可证的第三版或(由您选择)任何后来的版本。 分发本程序是希望它有用,但不提供任何保证;甚至没有适销性或特定用途适用性的默示保证。有关更多详细信息,请参阅 GNU Affero 通用公共许可证。 您应该已经收到一份 GNU Affero 通用公共许可证的副本以及本程序。如果没有,请参阅 。 **通过为此项目做出贡献,您同意根据相同的许可证发布您的贡献。**
标签:Abliteration, Anti-Censorship, Apex, DLL 劫持, Hugging Face, KL散度, LLM, Optuna, Transformer, Unmanaged PE, 二进制发布, 人工智能, 凭据扫描, 去审查, 大语言模型, 安全对齐移除, 开源工具, 数字取证, 方向消融, 机器学习, 模型修改, 模型微调, 用户模式Hook绕过, 系统调用监控, 网络安全, 自动化脚本, 超参数优化, 越狱, 逆向工具, 隐私保护