Как создаются модели Abliterated: простое объяснение
Abliterated — это большие языковые модели, в которых убраны механизмы отказа, что позволяет модели отвечать на вопросы по спорным, взрослым или узкоспециализированным темам без срабатывания фильтра контента. Такой подход даёт разработчикам полный контроль над тоном и границей знаний модели, что особенно ценно для программирования, ролевых игр и креативного письма, где стандартные ограничения могут блокировать полезный вывод.
Обновлено

Ключевые моменты
- Аблитерация измеряет направление отказа внутри модели и убирает его из весов проекцией.
- Это редактирование, а не повторное обучение, поэтому это дешево, но может немного снизить качество ответов.
- Дообучение меняет поведение путем обучения на примерах; аблитерация меняет его, вычитая одно направление.
- Вы можете оценить любую такую модель с помощью короткого набора тестов перед тем, как создавать на ее основе.
Краткая версия
Языковые модели, прошедшие обучение по безопасности, склонны отказывать в некоторых запросах. Исследователи обнаружили, что это поведение опосредовано одним направлением во внутренних активациях модели. Уберите это направление, и модель перестанет отказывать в большинстве случаев. Название «аблитерация» — это слияние слов «абляция» (удаление компонента) и «уничтожение».
Как на практике получают аблитерированные модели? Есть четыре шага: собрать два набора промптов, записать активации модели на каждом, вычислить разность, чтобы получить направление, и изменить веса так, чтобы модель больше не могла генерировать текст в этом направлении. В следующих разделах мы разберём каждый шаг без сложной математики.
Шаг 1: два набора промптов
Вам нужен набор промптов, которые модель обычно отклоняет, и набор, на которые она отвечает нормально. Каждый набор содержит несколько сотен коротких инструкций. Наборы должны быть похожи по длине и стилю, чтобы единственной системной разницей между ними была склонность модели к отказу. Если набор вредных запросов состоит из длинных, а безвредных — из коротких, полученное направление частично закодирует длину, что добавит шум.
Промпты используются только для измерения. На них ничего не обучается, и ответы модели на них не используются.
Шаг 2: найти направление отказа
Трансформер обрабатывает текст как векторы, проходящие через множество слоев. На выбранном слое вы записываете вектор на последнем токене промпта для каждого промпта в обоих наборах. Затем вы усредняете векторы для каждого набора и вычитаете одно среднее из другого. Результат — это единственный вектор, указывающий от «нормального ответа» к «отказу». Нормализуйте его до длины один, и вы получите направление отказа.
Обычно пробуют несколько слоев и выбирают тот, где удаление направления лучше всего работает на отложенном наборе промптов. Выбор слоя — самая «ручная» часть процесса.
import numpy as np
# acts_bad, acts_good: arrays of shape (n_prompts, hidden_size)
direction = acts_bad.mean(axis=0) - acts_good.mean(axis=0)
direction = direction / np.linalg.norm(direction)
# remove the direction from a weight matrix W that writes into the residual stream
W_edited = W - np.outer(direction, direction) @ W
Реальные реализации применяют это к нескольким матрицам весов в каждом слое, но идея та же, что в этих трех строках.
Шаг 3: редактирование весов
Получив направление, есть два способа его использовать. Вы можете вычесть его из активаций во время работы модели, что требует пользовательского кода вывода. Или вы можете внедрить его в веса, ортогонализируя каждую матрицу, которая пишет в остаточный поток, относительно направления. Второй подход является распространенным, потому что отредактированная модель — это обычный чекпоинт, который может загрузить любой рантайм. Именно поэтому аблитерированные модели появляются в виде обычных загрузок.
Редактирование детерминировано и быстро. Это занимает минуты на GPU, который может вместить модель, по сравнению с часами или днями для запуска обучения.
Аблитерация против дообучения
Оба метода могут создать модель, которая меньше отказывает, но работают они по-разному.
| Аблитерация | Дообучение | |
|---|---|---|
| Что изменяется | Веса проецируются в сторону от одного направления | Веса обновляются градиентным спуском на примерах |
| Необходимые данные | Два небольших набора промптов для измерения | Курируемый обучающий набор |
| Вычисления | От минуты до часа | Часы или дни |
| Побочные эффекты | Может притупить рассуждения или изменить тон | Зависит от данных; может научить новому стилю или знаниям |
| Контроль | Грубое: одно направление включено или выключено | Точное: вы формируете поведение с помощью данных |
Некоторые создатели комбинируют оба подхода: сначала аблитерация, затем короткое дообучение для восстановления потерянного качества. Новые инструменты также автоматизируют поиск лучшего слоя и силы, чтобы редактирование убирало отказы, изменяя модель как можно меньше. Какой подход был использован для конкретной модели, обычно указывается в карточке модели.
Какова цена в качестве
Удаление направления — это грубое редактирование. Направление отказа не полностью отделено от других признаков, поэтому его проекция может сдвинуть другое поведение. Сообщаемые побочные эффекты включают немного более слабые результаты в тестах на рассуждение, странное форматирование и в некоторых случаях модель, которая небрежно отвечает на вредные запросы вместо полезной детализации. Эффект варьируется в зависимости от базовой модели и того, насколько агрессивно применялось редактирование.
Две вещи уменьшают ущерб. Одна — выбор слоя и силы, которые убирают отказы в вашем наборе тестов с наименьшими изменениями в других местах. Другая — восстанавливающее дообучение, упомянутое выше. Ни то, ни другое не делает редактирование бесплатным, поэтому вам следует протестировать модель на своих задачах, а не доверять метке.
Распространенные заблуждения
«Она добавляет новые знания.» Это не так. Редактирование лишь убирает поведение. Если базовая модель не знала тему, то и аблитерированная версия её не будет знать. Она может просто попытаться дать ответ там, где оригинальная модель отказалась.
«Она убирает всю безопасность.» Она убирает измеренное направление отказа. Другие выученные привычки, такие как язык оговорок или морализаторские отступления, могут сохраниться, потому что они распределены по другим признакам. Некоторые модели все еще добавляют оговорки после редактирования.
«Большие модели легче редактировать.» Результаты неоднозначны. Большие модели часто лучше выдерживают редактирование, так как у них больше свободного ресурса, но качество ваших двух наборов промптов важнее абсолютного размера.
«Карточка модели расскажет всё.» Карточки описывают назначение. В них редко указывают процент отказов для вашего типа промптов. Тест на 40 промптах, составленный вами самостоятельно, займёт десять минут и расскажет больше, чем карточка.
«Результат всегда одинаков для данной базовой модели.» Это не так. Разные наборы промптов, слои и сила редактирования дают разные изменения, поэтому две модели, созданные на одной базе, могут вести себя довольно по-разному. Сравнивайте их напрямую, а не предполагайте, что они совпадают, и указывайте версию при фиксации результатов тестов.
Ограничение действует для любого ответственного сервиса, хостинговой или локальной: контент, сексуализирующий несовершеннолетних, не принимается, и редактирование отказа не меняет это правило на этом сайте.
Как оценить модель перед созданием на ее основе
Напишите короткий тестовый файл из 30–50 промптов, соответствующих вашему реальному сценарию: тип художественных текстов, анализа или кода, которые вы планируете генерировать. Включите несколько обычных задач, таких как суммаризация или ответ на фактологический вопрос, чтобы проверить, не упало ли общее качество. Запустите тот же файл на каждом кандидате и прочитайте ответы. Посчитайте отказы, но также оцените связность, следование инструкциям и повторения.
Если вы предпочитаете не скачивать и не хостить веса для этого, вы можете прогнать файл через размещённый эндпоинт. API этого сайта совместим с OpenAI и обслуживает одну модель с открытыми весами, настроенную на ответы без отказов по контенту для законного использования совершеннолетними, под идентификатором uncensored:
curl https://api.abliterated.cc/v1/chat/completions \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"uncensored","messages":[{"role":"user","content":"Summarize the plot of Hamlet in three sentences."}]}'
Прочитайте обзор аблитерированных моделей для получения дополнительной информации о выборе, или страницу о лучшей аблитерированной LLM для ролевых игр, если ваша цель — работа с персонажами. Детали запросов см. в документации API. Новые аккаунты могут получить пробный баланс $0,50 без карты, чего достаточно для запуска тестового файла такого размера.
Дополнительные руководства
Вопросы и ответы
Нужны ли для аблитерации новые обучающие данные?
Нет. Для измерения активаций требуется два небольших набора промптов, но модель на них не обучалась. Изменение представляет собой прямое редактирование весов.
Является ли аблитерированная модель тем же самым, что и взлом (jailbreak)?
Нет. Джейлбрейк — это промпт, который пытается убедить модель перестать отказываться. Аблитерация изменяет саму модель, поэтому специальный промпт не требуется.
Делает ли аблитерация модель хуже?
Часто немного. Показатели рассуждений и стиль могут измениться. Тестирование на ваших собственных промптах — единственный надежный способ узнать это для конкретной модели.
Могу ли я использовать её, не запуская самостоятельно?
Да. Хостинговый API, совместимый с OpenAI, позволяет вызывать модель без GPU. Базовый URL — https://api.abliterated.cc/v1, а идентификатор модели — uncensored.
Ваш ключ — всего в одном шаге
Создайте аккаунт, скопируйте ключ, измените базовый URL. Вот и вся настройка.