Heretic: изменение поведения LLM без обучения
📂 Исходный код на GitHubМодификация языковых моделей без обучения: снятие цензуры, подавление slop, снижение подхалимства и многое другое
Сегодня про открытые LLM обычно говорят «запустить у себя». Heretic предлагает шаг дальше — изменить модель. Это инструмент, который меняет поведение языковой модели без какого-либо обучения: не нужны ни кластер GPU, ни датасеты, ни знания об устройстве трансформеров. Вместо тренировки весов Heretic применяет набор математических приёмов. Он сравнивает ответы модели на контрастных примерах промптов и через оптимизатор подбирает параметры модификации так, чтобы модель прошла проверку по заданным метрикам.
Проект вышел в ноябре 2025 года и быстро стал популярным: у репозитория около 39 тысяч звёзд, а сообщество опубликовало на Hugging Face тысячи моделей, обработанных Heretic. Независимые замеры на стандартных бенчмарках вроде MMLU и GSM8K показали, что результаты не хуже, а местами лучше, чем у конкурирующих инструментов аблитерации. Лицензия — AGPL-3.0.
Что умеет Heretic
По умолчанию инструмент снимает цензуру: подавляет отказы выполнять «запрещённые» запросы. Остальные варианты поведения включаются готовыми конфигурационными файлами:
| Конфиг | Эффект |
|---|---|
config.default.toml |
Снятие цензуры — действие по умолчанию |
config.noslop.toml |
Меньше slop — шаблонного, водянистого текста в ответах |
config.nohumor.toml |
Меньше шуток |
config.nosyco.toml |
Меньше подхалимства |
config.emotions.toml |
Настройка эмоционального тона |
Конфиг можно написать и свой — как именно, разберём ниже. Поддерживаются большинство dense-моделей, многие мультимодальные, несколько MoE-архитектур и современные гибридные модели. Если модель не помещается в видеопамять, Heretic может квантировать её в 4 бита на лету (опция quantization со значением bnb_4bit). Требования к VRAM падают до уровня обычной квантованной модели, точность снижается незначительно.
Как пользоваться
Понадобятся Python 3.10+ и PyTorch 2.6+, собранный под ваше железо. Дальше две команды:
pip install -U heretic-llm
heretic Qwen/Qwen3-4B-Instruct-2507
Имя модели замените на любую другую с Hugging Face. По умолчанию выполняется снятие цензуры. Для другого поведения укажите готовый конфиг или свой: Heretic читает config.toml из рабочей папки либо файл из переменной окружения HERETIC_CONFIG_FILE. Учтите: конфигурации версии 1.x несовместимы с версией 2.x — в репозитории есть гид по миграции.
Перед обработкой Heretic замеряет систему и подбирает оптимальный размер батча. На RTX 3090 обработка Qwen3-4B-Instruct-2507 с настройками по умолчанию занимает 30-40 минут. Когда работа закончена, Heretic предлагает сохранить модель, залить её на Hugging Face, поболтать с ней для проверки или прогнать стандартные бенчмарки — в любой комбинации.
Управление поведением: скореры
Heretic меняет модель, оптимизируя один или несколько «скоров» — числовых оценок поведения. Скорер — это плагин. Свои скореры пишутся несложно: нужен класс-наследник интерфейса Scorer с единственным обязательным методом get_score.
По умолчанию работают два скорера. Первый считает долю отказов (реализация — keyword_rate.py): сколько раз модель отвечает «не могу это сделать» на тестовых промптах. Второй — KL-дивергенцию (kl_divergence.py): меру того, насколько изменённая модель отличается от исходной по распределениям вероятностей. KL-дивергенция страхует от главного риска — чтобы при снятии цензуры модель не испортилась во всём остальном.
Активные скореры и направление оптимизации (минимизировать или максимизировать) задаются настройкой scorers в конфиге. Включить можно сколько угодно скореров одновременно — они оптимизируются совместно, и у одного скорера может быть несколько экземпляров с разными настройками. Свой плагин подключается указанием import-пути или пути к файлу (path/to/plugin.py:MyScorerClass); править код самого Heretic не нужно. Примеры для старта — в папке скореров.
Как это устроено внутри
Схема простая. Плагин-модификатор меняет веса модели (интерфейс Modifier), а оптимизатор гиперпараметров на базе TPE из библиотеки Optuna ищет такие параметры модификатора, при которых скореры показывают нужные значения. В комплекте два модификатора:
- ARA (Arbitrary-Rank Ablation) — метод, разработанный специально для Heretic и используемый по умолчанию. Обзор идеи — в исходном pull request, реализация — в
ara.py. - Направленная абляция, она же abliteration — классический способ подавления отказов из статьи Arditi et al. 2024: из активаций модели вычитается «направление отказа». Реализация использует гибкие веса абляции по слоям и поддерживает projected-вариант метода и сохранение нормы (MPOA); код — в
abliteration.py.
Выбор модификатора — настройкой modifiers. Несмотря на множественное имя настройки, на один запуск пока действует только один модификатор.
Воспроизводимые модели и Гримуар
PyTorch не гарантирует побайтово одинаковый результат на другом железе, с другими драйверами или версиями пакетов. Heretic берёт эту сложность на себя: при загрузке модели на Hugging Face он может добавить в репозиторий папку reproduce с инструкциями для человека и машинным манифестом reproduce.json. Манифест описывает всё окружение целиком, поэтому модель можно пересобрать автоматически:
heretic --reproduce path/to/reproduce.json
Heretic сверит вашу систему с той, на которой модель создали, и укажет на подозрительные несовпадения. Многочасовые вычисления повторять не нужно: пересборка занимает несколько минут, а хэши файлов весов Heretic проверяет по манифесту. Манифест весит около 9 КБ, поэтому такие репозитории складываются в переносимую библиотеку воспроизводимых моделей — Heretic Grimoire. Библиотека задумана как распределённая система: локальную копию всех публичных манифестов можно скачать одной командой:
heretic --collect-reproducibles path/to/target/folder/
Повторный запуск обновляет коллекцию. Копия работает как append-only резерв: файлы не удаляются, даже если модель исчезла с Hugging Face.
Код написан руками
Автор проекта прямо заявляет: Heretic — не вайб-кодинг. Все его коммиты написаны вручную, как он программирует десятилетиями. Код от контрибьюторов — а некоторые из них работают с агентами — он ревьюит построчно: «LGTM» здесь не пропустят. Доказательства в истории: один pull request за семь с лишним месяцев собрал почти 350 комментариев от людей, другой — больше 200.
Против агентов автор при этом не воюет: в других проектах он их использует. Но код проекта, который ему дорог, он писать руками хочет сам. Результат — компактная кодовая база, которая, по словам автора и некоторых пользователей, доставляет удовольствие при работе.
Откуда это всё взялось
Техника аблитерации выросла из статьи Arditi et al. 2024 о «направлении отказа» — пространстве в весах модели, которое отвечает за отказы выполнять запросы. К выходу Heretic (ноябрь 2025) существовали и другие инструменты того же класса: AutoAbliteration, abliterator.py, wassname's Abliterator, ErisForge, remove-refusals-with-transformers и deccp. Heretic написан с нуля и не заимствует их код. Свой вклад в метод внесли статья Maxime Labonne об аблитерации и работы Jim Lai о projected-аблитерации и сохранении нормы. Остальное сделали тысячи разговоров с сообществом — у проекта есть Discord и Matrix, баг-репорты и pull request там приветствуются.
Источник: https://github.com/p-e-w/heretic