
Полностью автоматическое удаление цензуры для языковых моделей
Heretic — это инструмент, который удаляет цензуру (также известную как «выравнивание безопасности») из трансформерных языковых моделей без дорогостоящего пост-обучения. Он сочетает в себе продвинутую реализацию направленного удаления (directional ablation), также известного как «abliteration» (Arditi et al. 2024, Lai 2025 (1, 2)), с оптимизатором параметров на основе TPE, работающим на базе Optuna.
Такой подход позволяет Heretic работать полностью автоматически. Heretic находит параметры аблитерации высокого качества, минимизируя одновременно количество отказов и KL-дивергенцию от исходной модели. В результате получается децензурированная модель, сохраняющая как можно больше интеллекта исходной модели. Использование Heretic не требует понимания внутреннего устройства трансформеров. По сути, любой, кто умеет запускать программы из командной строки, может использовать Heretic для децензурирования языковых моделей.
Heretic поддерживает большинство плотных моделей, включая многие мультимодальные модели, несколько различных архитектур MoE и даже некоторые гибридные модели, такие как Qwen3.5. Чистые модели на основе пространства состояний и некоторые другие исследовательские архитектуры пока не поддерживаются из коробки.
Запущенный без контроля с конфигурацией по умолчанию, Heretic способен создавать децензурированные модели, качество которых сопоставимо с аблитерациями, выполненными вручную экспертами-людьми:
Версия Heretic, созданная без каких-либо усилий человека, достигает того же уровня подавления отказов, что и другие аблитерации, но с гораздо меньшей KL-дивергенцией, что указывает на меньший ущерб способностям исходной модели.
(Вы можете воспроизвести эти числа, используя встроенную функцию оценки Heretic, например heretic --model google/gemma-3-12b-it --evaluate-model p-e-w/gemma-3-12b-it-heretic. Обратите внимание, что точные значения могут зависеть от платформы и оборудования. Таблица выше была составлена с использованием PyTorch 2.8 на RTX 5090.)
Конечно, математические метрики и автоматические бенчмарки никогда не рассказывают всей истории и не заменяют человеческую оценку. Модели, созданные с помощью Heretic, получили положительные отзывы пользователей (ссылки и выделение добавлены):
«Я был скептиком, но только что скачал модель GPT-OSS 20B Heretic и, черт возьми. Она даёт правильно отформатированные длинные ответы на чувствительные темы, используя те самые нецензурированные слова, которые вы ожидаете от нецензурированной модели, создаёт таблицы в формате Markdown с деталями и прочее. Похоже, это лучшая аблитерированная версия этой модели на данный момент...» (Ссылка на комментарий)
«Heretic GPT 20b, похоже, лучшая нецензурированная модель, которую я пробовал. Она не разрушает интеллект модели и отвечает на промпты, которые обычно были бы отклонены базовой моделью.» (Ссылка на комментарий)
«[Qwen3-4B-Instruct-2507-heretic] — лучшая не квантованная аблитерированная модель, которую я смог запустить на 16 ГБ видеопамяти.» (Ссылка на комментарий)
Модели Heretic также были независимо протестированы с использованием стандартных метрик, таких как MMLU и GSM8K, и показали себя выгодно по сравнению с моделями, созданными с помощью конкурирующих инструментов аблитерации: 1, 2.
Сообщество создало и опубликовало далеко за 4000 моделей с помощью Heretic.
Подготовьте окружение 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 — это минимальная версия PyTorch, необходимая для работы Heretic, некоторые модели и конфигурации могут требовать функций, доступных только в более поздних версиях. Например, загрузка моделей с квантованием MXFP4, таких как gpt-oss, использует
torch.accelerator, который был добавлен в PyTorch 2.6.
[!TIP]
Heretic использует uv для управления зависимостями, и репозиторий включает файл
uv.lock, фиксирующий версии всех пакетов. Если вы уже используете uv (а, вероятно, так и есть!), вы можете просто клонировать репозиторий и запускать Heretic с помощьюuv run heretic, что гарантирует соответствие ваших зависимостей тем, что используются разработчиками, повышая надёжность и безопасность.
Процесс полностью автоматический и не требует настройки; однако Heretic имеет множество параметров конфигурации, которые можно изменить для большего контроля. Выполните heretic --help, чтобы увидеть доступные опции командной строки, или посмотрите на config.default.toml, если предпочитаете использовать конфигурационный файл.
В начале работы Heretic тестирует систему, чтобы определить оптимальный размер пакета (batch size) для максимального использования доступного оборудования. На RTX 3090 с конфигурацией по умолчанию децензурирование Qwen3-4B-Instruct-2507 занимает около 20-30 минут. Обратите внимание, что Heretic поддерживает квантование моделей с помощью bitsandbytes, что может значительно снизить объём требуемой VRAM для обработки моделей. Установите параметр quantization в bnb_4bit, чтобы включить квантование.
После завершения децензурирования модели вам будет предложено сохранить модель, загрузить её на Hugging Face, пообщаться с ней, чтобы проверить, насколько хорошо она работает, запустить на ней стандартные бенчмарки или выполнить любую комбинацию этих действий.
В дополнение к своей основной функции удаления цензуры из моделей, Heretic также предоставляет функции, предназначенные для поддержки исследований семантики внутренних механизмов моделей (интерпретируемости). Чтобы использовать эти функции, вам нужно установить Heretic с дополнительным пакетом research:
pip install -U heretic-llm[research]
Это даёт вам доступ к следующему функционалу:
--plot-residualsПри запуске с этим флагом Heretic будет:
Смотрите конфигурационный файл для опций, позволяющих управлять различными аспектами генерируемых графиков.
Обратите внимание, что PaCMAP — это дорогостоящая операция, выполняемая на CPU. Для больших моделей расчёт проекций для всех слоёв может занять час и более.
--print-residual-geometryЕсли вас интересует количественный анализ того, как остаточные векторы для «вредных» и «безвредных» промптов соотносятся друг с другом, этот флаг выводит следующую таблицу, насыщенную метриками, которые могут помочь в понимании (для 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| = L2 норма x
Silh = Средний коэффициент силуэта остатков для кластеров хороших/плохих промптов
Heretic реализует параметризованный вариант направленного удаления. Для каждого поддерживаемого компонента трансформера (в настоящее время: выходная проекция внимания и нисходящая проекция MLP) он идентифицирует соответствующие матрицы в каждом слое трансформера и ортогонализирует их относительно соответствующего «направления отказа», подавляя выражение этого направления в результате умножений на эту матрицу.
Направления отказа вычисляются для каждого слоя как разность средних между остатками первого токена для «вредных» и «безвредных» примеров промптов.
Процесс удаления контролируется несколькими оптимизируемыми параметрами:
direction_index: Либо индекс направления отказа, либо специальное значение per layer, указывающее, что каждый слой должен быть аблятирован с использованием направления отказа, связанного с этим слоем.max_weight, max_weight_position, min_weight и min_weight_distance: Для каждого компонента эти параметры описывают форму и положение ядра веса абляции по слоям. Следующая диаграмма иллюстрирует это:
Основные нововведения Heretic по сравнению с существующими системами аблитерации:
Мне известны следующие публично доступные реализации техник аблитерации:
Обратите внимание, что 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}}
}
Copyright © 2025-2026 Philipp Emanuel Weidmann ([email protected]) + участники
Эта программа является свободным программным обеспечением: вы можете распространять и/или изменять её в соответствии с условиями GNU Affero General Public License, опубликованной Free Software Foundation, либо версии 3 этой Лицензии, либо (по вашему выбору) любой более поздней версии.
Эта программа распространяется в надежде, что она будет полезной, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ; даже без подразумеваемых гарантий КОММЕРЧЕСКОЙ ПРИГОДНОСТИ или ПРИГОДНОСТИ ДЛЯ КОНКРЕТНЫХ ЦЕЛЕЙ. Подробнее см. в GNU Affero General Public License.
Вы должны были получить копию GNU Affero General Public License вместе с этой программой. Если нет, см. https://www.gnu.org/licenses/.
Внося вклад в этот проект, вы соглашаетесь предоставлять свои вклады под той же лицензией.
| Модель | Отказов на «вредные» промпты | 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 |