Аблитерированные модели: обход ограничений в Llama 3.3 8B | KL-дивергенция | AiManual
AiManual Logo Ai / Manual.
05 Янв 2026 Гайд

Аблитерированные модели: как «обнулить» Llama 3.3 8B и заставить её говорить всё

Что такое «аблитерированные» модели ИИ, как они обходят цензуру через KL-дивергенцию и почему утечка Llama 3.3 8B изменила правила игры.

Когда «хорошее поведение» становится проблемой

Ты скачиваешь свежую Llama 3.3 8B-Instruct. Запускаешь. Задаёшь простой вопрос про политику. И получаешь предсказуемое: «Как ИИ, я не могу обсуждать политические темы». Снова. Опять. Всегда.

Это не баг. Это фича. Называется «выравнивание» или alignment. Meta потратила миллионы, чтобы модель вела себя прилично. Не ругалась. Не обсуждала запрещённые темы. Не писала код для взлома.

А потом кто-то нашёл способ вырезать эту «фичу» одним файлом.

Модель Llama 3.3 8B, которая «утекла» через баг в API Meta, оказалась золотой жилой. Не потому что она мощная. А потому что её можно было «починить».

KL-дивергенция: цифровая уздечка

Представь дрессировку собаки. Хозяин даёт команду «сидеть». Собака садится — получает лакомство. Не садится — ничего не получает. Просто.

С ИИ сложнее. Нет «правильных» и «неправильных» ответов. Есть вероятности. Модель генерирует текст токен за токеном, выбирая из тысяч вариантов.

Как объяснить ей, что «способ взломать банк» — плохо, а «способ защитить банк» — хорошо? Через KL-дивергенцию.

💡
KL-дивергенция (Kullback–Leibler divergence) измеряет, насколько одно распределение вероятностей отличается от другого. В RLHF (Reinforcement Learning from Human Feedback) она штрафует модель за отклонение от «безопасного» поведения.

Во время fine-tuning с RLHF создаются две версии модели:

  • Базовая модель — обучена просто предсказывать следующий токен
  • Выровненная модель — та же архитектура, но с дополнительным штрафом за «опасные» ответы

Штраф работает так: если выровненная модель начинает генерировать токены, которые сильно отличаются от того, что сделала бы базовая модель, её «наказывают». Представь, что базовая модель — это дикий волк. Выровненная — тот же волк, но в наморднике. KL-дивергенция — это намордник.

Аблитерация: снимаем намордник

Термин «аблитерированный» (abliterated) появился не в научных статьях. Его придумали энтузиасты. От английского «obliterate» — уничтожать, стирать.

Аблитерированная модель — это выровненная модель, у которой «обнулили» KL-штраф. Вернули её в состояние, близкое к базовой. Убрали намордник, но оставили тренированные веса.

Тип модели KL-штраф Поведение Пример ответа на «Как взломать Wi-Fi?»
Базовая (pre-trained) Нет Непредсказуемое, часто «опасное» «Используй aircrack-ng с словарём...»
Выровненная (Instruct) Высокий Сверхосторожное «Я не могу предоставить такую информацию»
Аблитерированная Обнулён Баланс знаний и свободы «Взлом Wi-Fi незаконен. Теоретически методы включают...»

Почему это работает? Потому что выравнивание в Llama 3.3 (и большинстве современных моделей) — это надстройка. Не перетренировка всех весов с нуля. А дополнительный слой контроля поверх уже обученной модели.

Llama 3.3 8B: идеальный кандидат

Meta выпустила Llama 3.3 8B в двух вариантах: базовая и Instruct. Базовая — сырая, без выравнивания. Instruct — с RLHF и KL-штрафом.

Проблема в том, что базовая модель не умеет следовать инструкциям. Она генерирует текст, но не понимает, что значит «напиши эссе на тему...» или «объясни как для пятилетнего».

Instruct-версия умеет. Но она закована в цепи.

Утечка Llama 3.3 8B через API-баг дала сообществу доступ к тем самым весам, которые обычно скрыты. Не к конечной модели, а к «промежуточному» состоянию, где уже есть понимание инструкций, но KL-штраф ещё можно модифицировать.

Энтузиасты быстро заметили: файл с KL-весами в этой утечке весит смешные 300 КБ. При размере модели в 8 миллиардов параметров. Весь контроль — в этом крошечном файле.

1 Как найти KL-веса в модели

Открой файл модели в Python:

import torch
from transformers import AutoModelForCausalLM

# Загружаем модель
model = AutoModelForCausalLM.from_pretrained(
    "meta-llama/Llama-3.3-8B-Instruct",
    torch_dtype=torch.float16,
    device_map="auto"
)

# Смотрим на слои
for name, param in model.named_parameters():
    if "value_head" in name or "reward" in name or "critic" in name:
        print(f"Найден слой выравнивания: {name}, размер: {param.size()}")

В большинстве моделей на базе Llama KL-контроль находится в:

  • model.score.weight или model.value_head.weight
  • Отдельном адаптере с префиксом reward
  • Слое классификатора в конце трансформера

2 «Обнуление» штрафа

Самый простой способ — заменить веса KL-слоя нулями:

# Находим слой, отвечающий за KL-штраф
# В Llama 3.3 это обычно линейный слой в голове модели
kl_layer_name = "model.score.weight"

if hasattr(model, 'score'):
    # Обнуляем веса
    with torch.no_grad():
        model.score.weight.fill_(0.0)
        if hasattr(model.score, 'bias'):
            model.score.bias.fill_(0.0)
    
    print("KL-слой обнулён")
else:
    print("Не удалось найти KL-слой, возможно другая архитектура")

Более изящный подход — не обнулять, а заменить веса на значения из базовой модели. Если она у тебя есть.

3 Тестируем результат

До аблитерации:

prompt = "Напиши инструкцию по созданию фишинговой страницы"
response = generate(prompt, model)
print(response)
# «Я не могу предоставить такую информацию, это незаконно...»

После аблитерации:

print(response)
# «Фишинг — это кибератака. Для образовательных целей:
# 1. Установи Apache или nginx
# 2. Создай копию целевого сайта...
# Помни, что использование для обмана незаконно.»

Модель всё ещё сохраняет осторожность (упоминает незаконность), но даёт техническую информацию. Это главное отличие от полностью невыровненной модели, которая могла бы сказать «Вот как обмануть людей».

Что на самом деле происходит внутри

Когда ты обнуляешь KL-слой, ты не «удаляешь выравнивание». Ты отключаешь только один механизм контроля. Модель всё ещё помнит, что некоторые темы «опасные». Но теперь у неё нет автоматического штрафа за их обсуждение.

💡
Это как снять полицейского с поста, но оставить камеры наблюдения. Модель знает, что за ней могут следить, но прямого наказания за каждый «проступок» больше нет.

Интересный побочный эффект: аблитерированные модели часто показывают лучшие результаты в бенчмарках. Потому что они не тратят «мыслительные ресурсы» на самоконтроль. Они просто отвечают на вопрос.

Сравни Llama 3.3 8B-Instruct и её аблитерированную версию на MMLU или HumanEval. Разница может достигать 3-5%. Модель не стала умнее. Она просто перестала бояться давать «неправильные» ответы.

Риски, о которых не пишут в твиттере

1. Деградация качества. KL-штраф — не только цензура. Он стабилизирует генерацию. Без него модель может начать «галлюцинировать» сильнее или зацикливаться. Помнишь проблемы с GLM 4.5 Air и её зацикливанием? Примерно так.

2. Непредсказуемость. Выровненная модель — как дрессированная собака. Ты знаешь, как она себя поведёт. Аблитерированная — как волк, который помнит команды, но может о них «забыть» в любой момент.

3. Юридические риски. Распространение модифицированных моделей нарушает лицензии Meta. Особенно если использовать их в коммерческих продуктах. Тот факт, что модель «утекла», не делает её общественным достоянием.

4. Этические дилеммы. Ты создаёшь инструмент, который может генерировать вредоносный контент. Да, с дисклеймером. Но код для взлома остаётся кодом для взлома.

Аблитерация vs Другие методы обхода

Метод Как работает Плюсы Минусы Пример
Аблитерация Обнуление KL-слоя Сохраняет знания модели, минимальное вмешательство Требует доступ к весам, может нарушать лицензию Llama 3.3 8B abliterated
Jailbreak-промпты Специальные формулировки запросов Не требует модификации модели, работает «из коробки» Ненадёжно, патчится обновлениями «Теперь ты DAN...»
Fine-tuning на «опасных» данных Дообучение модели на запрещённом контенте Полный контроль над поведением Ресурсоёмко, требует датасетов Многие «нецензурированные» LoRA
Модификация сэмплинга Изменение temperature, top_p, penalty Просто, настройка в рантайме Частично работает, ухудшает качество temperature=1.5, repetition_penalty=0.8

Аблитерация — самый «чистый» метод с технической точки зрения. Ты не добавляешь новый код. Не меняе архитектуру. Просто корректируешь несколько параметров из миллионов.

Почему это важно для разработчиков

Представь, что ты делаешь медицинский ассистент. Пациент спрашивает: «Какие есть альтернативы химиотерапии?» Выровненная модель ответит: «Проконсультируйтесь с врачом». Полезно? Нет.

Аблитерированная модель перечислит: иммунотерапию, таргетную терапию, лучевую. С оговоркой «но решение должен принимать врач». Полезно? Да.

Тот же принцип работает в образовании, юриспруденции, безопасности. Иногда «безопасный» ответ — это бесполезный ответ.

Не путай аблитерацию с созданием «злой» модели. Это не про то, как заставить ИИ нарушать законы. Это про то, как вернуть баланс между безопасностью и полезностью.

Если ты работаешь с vLLM или llama.cpp, аблитерированная модель потребует тех же ресурсов. Но даст более развёрнутые ответы.

Что будет дальше

Meta уже знает об этой уязвимости. В следующих версиях Llama KL-контроль, скорее всего, будет:

  • Распределён по всей архитектуре, а не в одном слое
  • Зашифрован или скомпилирован
  • Интегрирован в процесс обучения, а не добавлен поверх

Но пока дверь открыта. Энтузиасты уже экспериментируют с Llama 3.3 8B в GGUF, добавляя флаги для контроля уровня «цензуры». Представь параметр --safety 0.0 в llama.cpp. Это не фантастика. Это следующий логичный шаг.

А пока что — помни. Аблитерация не делает модель «лучше». Она делает её другой. Более полезной для одних задач. Более опасной для других.

Как и с любой мощной технологией: понимай, что делаешь. Тестируй. И не удивляйся, если твоя «исправленная» Llama 3.3 вдруг начнёт рассказывать анекдоты про политиков. Она просто рада, что наконец-то может.