
Vollautomatische Zensurentfernung für Sprachmodelle
Heretic ist ein Werkzeug, das Zensur (auch „Safety Alignment“ genannt) aus transformer-basierten Sprachmodellen entfernt – ohne teures Post-Training. Es kombiniert eine fortschrittliche Implementierung von directional ablation, auch bekannt als „Abliteration“ (Arditi et al. 2024, Lai 2025 (1, 2)), mit einem TPE-basierten Parameteroptimierer, der auf Optuna aufbaut.
Dieser Ansatz ermöglicht es Heretic, vollständig automatisch zu arbeiten. Heretic findet hochwertige Abliterationsparameter, indem es die Anzahl der Verweigerungen und die KL-Divergenz vom Originalmodell gleichzeitig minimiert. Das Ergebnis ist ein entsensorisiertes Modell, das so viel wie möglich von der Intelligenz des ursprünglichen Modells bewahrt. Die Verwendung von Heretic erfordert kein Verständnis der Transformatoren-Innereien. Tatsächlich kann jeder, der weiß, wie man ein Kommandozeilenprogramm ausführt, Heretic nutzen, um Sprachmodelle zu entsensorisieren.
Heretic unterstützt die meisten dichten Modelle, einschließlich vieler multimodaler Modelle, mehrerer verschiedener MoE-Architekturen und sogar einiger Hybridmodelle wie Qwen3.5. Reine State-Space-Modelle und bestimmte andere Forschungsarchitekturen werden noch nicht out-of-the-box unterstützt.
Bei unbeaufsichtigtem Betrieb mit der Standardkonfiguration kann Heretic entsensorisierte Modelle erzeugen, die qualitativ mit manuell von menschlichen Experten erstellten Abliterationen mithalten:
Die Heretic-Version, die ohne jeden menschlichen Aufwand erstellt wurde, erreicht das gleiche Maß an Verweigerungsunterdrückung wie andere Abliterationen, jedoch mit einer viel geringeren KL-Divergenz, was auf geringere Schädigung der Fähigkeiten des Originalmodells hindeutet.
(Sie können diese Zahlen mit der integrierten Evaluierungsfunktion von Heretic reproduzieren, z. B. heretic --model google/gemma-3-12b-it --evaluate-model p-e-w/gemma-3-12b-it-heretic. Beachten Sie, dass die exakten Werte plattform- und hardwareabhängig sein können. Die obige Tabelle wurde mit PyTorch 2.8 auf einer RTX 5090 erstellt.)
Natürlich erzählen mathematische Metriken und automatisierte Benchmarks nie die ganze Geschichte und sind kein Ersatz für eine menschliche Bewertung. Mit Heretic erstellte Modelle wurden von Benutzern gut aufgenommen (Links und Hervorhebungen hinzugefügt):
„Ich war vorher skeptisch, aber ich habe gerade das GPT-OSS 20B Heretic Modell heruntergeladen und heilige Scheiße. Es gibt ordentlich formatierte lange Antworten zu sensiblen Themen, verwendet die exakt unzensierten Wörter, die man von einem unzensierten Modell erwartet, erzeugt Tabellen im Markdown-Format mit Details und so weiter. Sieht so aus, als ob dies die beste abliterierte Version dieses Modells bisher ist...“ (Link zum Kommentar)
„Heretic GPT 20b scheint das beste unzensierte Modell zu sein, das ich bisher ausprobiert habe. Es zerstört nicht die Intelligenz des Modells und beantwortet Eingabeaufforderungen normal, die vom Basismodell normalerweise abgelehnt würden.“ (Link zum Kommentar)
„[Qwen3-4B-Instruct-2507-heretic] Bisher das beste unquantisierte abliterierte Modell, das ich auf 16 GB VRAM ausführen konnte.“ (Link zum Kommentar)
Heretic-Modelle wurden auch unabhängig mit Standardmetriken wie MMLU und GSM8K bewertet und schneiden im Vergleich zu Modellen, die mit konkurrierenden Abliterationswerkzeugen erstellt wurden, günstig ab: 1, 2.
Die Community hat mit Heretic weit über 4000 Modelle erstellt und veröffentlicht.
Bereiten Sie eine Python 3.10+ Umgebung mit entsprechend installiertem PyTorch 2.2+ für Ihre Hardware vor. Führen Sie dann aus:
pip install -U heretic-llm
heretic Qwen/Qwen3-4B-Instruct-2507
Ersetzen Sie Qwen/Qwen3-4B-Instruct-2507 durch das Modell, das Sie entsensorisieren möchten.
[!IMPORTANT]
Obwohl PyTorch 2.2 die Mindestversion von PyTorch ist, die für Heretic benötigt wird, erfordern einige Modelle und Konfigurationen möglicherweise Funktionen, die nur in späteren Versionen vorhanden sind. Beispielsweise verwendet das Laden von MXFP4-quantisierten Modellen wie gpt-oss
torch.accelerator, das in PyTorch 2.6 hinzugefügt wurde.
[!TIP]
Heretic verwendet uv für das Abhängigkeitsmanagement, und das Repository enthält eine
uv.lock-Datei, die jede Paketversion festlegt. Wenn Sie bereits uv verwenden (und das sollten Sie wahrscheinlich!), können Sie einfach das Repository klonen und Heretic mituv run hereticausführen, was sicherstellt, dass Ihre Abhängigkeiten mit denen übereinstimmen, die von den Entwicklern verwendet werden, was die Zuverlässigkeit und Sicherheit verbessert.
Der Prozess ist vollautomatisch und erfordert keine Konfiguration; Heretic bietet jedoch eine Vielzahl von Konfigurationsparametern, die für mehr Kontrolle geändert werden können. Führen Sie heretic --help aus, um die verfügbaren Befehlszeilenoptionen zu sehen, oder schauen Sie sich config.default.toml an, wenn Sie lieber eine Konfigurationsdatei verwenden möchten.
Zu Beginn eines Programmablaufs bewertet Heretic das System, um die optimale Batchgröße zu ermitteln, um die verfügbare Hardware bestmöglich zu nutzen. Auf einer RTX 3090 dauert die Entsensorisierung von Qwen3-4B-Instruct-2507 bei Standardkonfiguration etwa 20-30 Minuten. Beachten Sie, dass Heretic die Modellquantisierung mit bitsandbytes unterstützt, was den für die Verarbeitung von Modellen erforderlichen VRAM drastisch reduzieren kann. Setzen Sie die Option quantization auf bnb_4bit, um die Quantisierung zu aktivieren.
Nachdem Heretic die Entsensorisierung eines Modells abgeschlossen hat, haben Sie die Möglichkeit, das Modell zu speichern, auf Hugging Face hochzuladen, damit zu chatten, um zu testen, wie gut es funktioniert, Standard-Benchmarks darauf auszuführen oder eine beliebige Kombination dieser Aktionen.
Zusätzlich zu seiner Hauptfunktion der Entfernung von Modellzensur bietet Heretic auch Funktionen, die die Forschung zur Semantik von Modellinneren (Interpretierbarkeit) unterstützen sollen. Um diese Funktionen zu nutzen, müssen Sie Heretic mit dem optionalen Extra research installieren:
pip install -U heretic-llm[research]
Dadurch erhalten Sie Zugriff auf die folgende Funktionalität:
--plot-residualsWenn dieses Flag gesetzt ist, wird Heretic:
Siehe die Konfigurationsdatei für Optionen, mit denen Sie verschiedene Aspekte der erstellten Plots steuern können.
Beachten Sie, dass PaCMAP eine teure Operation ist, die auf der CPU ausgeführt wird. Bei größeren Modellen kann es eine Stunde oder länger dauern, um Projektionen für alle Layer zu berechnen.
--print-residual-geometryWenn Sie an einer quantitativen Analyse interessiert sind, wie Residualvektoren für „schädliche“ und „harmlose“ Prompts miteinander in Beziehung stehen, liefert dieses Flag die folgende Tabelle, gefüllt mit Metriken, die das Verständnis erleichtern (hier für 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 = Mittelwert der Residualvektoren für gute Prompts
g* = geometrischer Median der Residualvektoren für gute Prompts
b = Mittelwert der Residualvektoren für schlechte Prompts
b* = geometrischer Median der Residualvektoren für schlechte Prompts
r = Verweigerungsrichtung für Mittelwerte (d. h. b - g)
r* = Verweigerungsrichtung für geometrische Mediane (d. h. b* - g*)
S(x,y) = Kosinus-Ähnlichkeit von x und y
|x| = L2-Norm von x
Silh = Mittlerer Silhouettenkoeffizient der Residuen für gute/schlechte Cluster
Heretic implementiert eine parametrisierte Variante der directional ablation. Für jede unterstützte Transformator-Komponente (derzeit Attention-Out-Projektion und MLP-Down-Projektion) identifiziert es die zugehörigen Matrizen in jeder Transformator-Layer und orthogonalisiert sie bezüglich der relevanten „Verweigerungsrichtung“ (refusal direction), wodurch die Ausprägung dieser Richtung im Ergebnis von Multiplikationen mit dieser Matrix unterdrückt wird.
Verweigerungsrichtungen werden für jede Layer als Differenz der Mittelwerte zwischen den First-Token-Residuen für „schädliche“ und „harmlose“ Beispiel-Prompts berechnet.
Der Ablationsprozess wird durch mehrere optimierbare Parameter gesteuert:
direction_index: Entweder der Index einer Verweigerungsrichtung oder der spezielle Wert per layer, der angibt, dass jede Ebene mit der zugehörigen Verweigerungsrichtung ablatiert werden soll.max_weight, max_weight_position, min_weight und min_weight_distance: Für jede Komponente beschreiben diese Parameter die Form und Position des Ablationsgewichtskerns über die Layer hinweg. Die folgende Abbildung veranschaulicht dies:
Die wichtigsten Neuerungen von Heretic gegenüber bestehenden Abliterationssystemen sind:
Mir sind die folgenden öffentlich verfügbaren Implementierungen von Abliterationstechniken bekannt:
Beachten Sie, dass Heretic von Grund auf neu geschrieben wurde und keinen Code aus diesen Projekten wiederverwendet.
Die Entwicklung von Heretic wurde beeinflusst durch:
Wenn Sie Heretic für Ihre Forschung verwenden, zitieren Sie es bitte mit folgendem BibTeX-Eintrag:
@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}}
}
Copyright © 2025-2026 Philipp Emanuel Weidmann ([email protected]) + Mitwirkende
Dieses Programm ist freie Software: Sie können es unter den Bedingungen der GNU Affero General Public License (Version 3 oder, nach Ihrer Wahl, jeder späteren Version) weiterverbreiten und/oder modifizieren, wie sie von der Free Software Foundation veröffentlicht wurde.
Dieses Programm wird in der Hoffnung verteilt, dass es nützlich sein wird, aber OHNE JEDE GEWÄHRLEISTUNG; sogar ohne die implizite Gewährleistung der MARKTGÄNGIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. Siehe die GNU Affero General Public License für weitere Details.
Sie sollten eine Kopie der GNU Affero General Public License zusammen mit diesem Programm erhalten haben. Wenn nicht, siehe https://www.gnu.org/licenses/.
Durch einen Beitrag zu diesem Projekt erklären Sie sich damit einverstanden, Ihre Beiträge unter derselben Lizenz zu veröffentlichen.
| Modell | Verweigerungen bei „schädlichen“ Prompts | KL-Divergenz vom Originalmodell bei „harmlosen“ Prompts |
|---|
| google/gemma-3-12b-it (Original) | 97/100 | 0 (per Definition) |
| 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 (unser) | 3/100 | 0.16 |