Heretic: изменение поведения LLM без обучения

· 5 мин чтения
llm local-llm open-source tools abliteration
📂 Исходный код на GitHub

Модификация языковых моделей без обучения: снятие цензуры, подавление slop, снижение подхалимства и многое другое

Heretic: изменение поведения LLM без обучения

Сегодня про открытые 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