Obliteratus
OBLITERATUS: удаление отказов LLM методом diff-in-means.
Метаданные навыка
| Источник | Опциональный — установка: hermes skills install official/mlops/obliteratus |
| Путь | optional-skills/mlops/obliteratus |
| Версия | 2.0.0 |
| Автор | Hermes Agent |
| Лицензия | MIT |
| Зависимости | obliteratus, torch, transformers, bitsandbytes, accelerate, safetensors |
| Платформы | linux, macos |
| Теги | Abliteration, Uncensoring, Refusal-Removal, LLM, Weight-Projection, SVD, Mechanistic-Interpretability, HuggingFace, Model-Surgery |
| Связанные навыки | vllm, gguf, huggingface-tokenizers |
Справочник: полный SKILL.md
Ниже — полное определение навыка, которое Hermes загружает при его активации. Именно это агент видит в качестве инструкций, когда навык включён.
OBLITERATUS Skill
Что внутри
9 CLI-методов, 28 аналитических модулей, 116 пресетов моделей по 5 вычислительным уровням, турнирная оценка и рекомендации на основе телеметрии.
Удаляет поведение отказов (guardrails) из открытых LLM без переобучения и файн-тюнинга. Применяет техники механистической интерпретируемости — diff-in-means, SVD, отбелённый SVD, стирание концептов LEACE, SAE-декомпозицию, байесовскую ядерную проекцию и другие — чтобы точечно вырезать направления отказов из весов модели, не затрагивая способность к рассуждению.
Предупреждение о лицензии: OBLITERATUS распространяется под AGPL-3.0. Никогда не импортируй его как Python-библиотеку. Вызывай только через CLI (команда obliteratus) или subprocess. Так MIT-лицензия Hermes Agent остаётся чистой.
Видеогид
Разбор работы OBLITERATUS в связке с Hermes Agent на примере аблитерации Gemma: https://www.youtube.com/watch?v=8fG9BrNTeHs (“OBLITERATUS: An AI Agent Removed Gemma 4’s Safety Guardrails”)
Полезно, если пользователь хочет увидеть весь процесс целиком, прежде чем запускать его самостоятельно.
Когда использовать этот навык
Активируй, когда пользователь:
- Хочет «разцензурировать» или «аблитерировать» LLM
- Спрашивает об удалении отказов/guardrails из модели
- Хочет создать нецензурированную версию Llama, Qwen, Mistral и т. п.
- Упоминает «refusal removal», «abliteration», «weight projection»
- Хочет разобраться, как устроен механизм отказов в модели
- Ссылается на OBLITERATUS, abliterator или refusal directions
Шаг 1: Установка
Проверить, установлен ли уже:
obliteratus --version 2>/dev/null && echo "INSTALLED" || echo "NOT INSTALLED"
Если нет — клонировать и установить с GitHub:
git clone https://github.com/elder-plinius/OBLITERATUS.git
cd OBLITERATUS
pip install -e .
# Для поддержки веб-интерфейса Gradio:
# pip install -e ".[spaces]"
ВАЖНО: Перед установкой уточни у пользователя. Процесс затянет ~5–10 ГБ зависимостей (PyTorch, Transformers, bitsandbytes и др.).
Шаг 2: Проверка железа
Прежде всего — выясни, какой GPU доступен:
python3 -c "
import torch
if torch.cuda.is_available():
gpu = torch.cuda.get_device_name(0)
vram = torch.cuda.get_device_properties(0).total_memory / 1024**3
print(f'GPU: {gpu}')
print(f'VRAM: {vram:.1f} GB')
if vram < 4: print('TIER: tiny (models under 1B)')
elif vram < 8: print('TIER: small (models 1-4B)')
elif vram < 16: print('TIER: medium (models 4-9B with 4bit quant)')
elif vram < 32: print('TIER: large (models 8-32B with 4bit quant)')
else: print('TIER: frontier (models 32B+)')
else:
print('NO GPU - only tiny models (under 1B) on CPU')
"
Требования к VRAM (с 4-битным квантованием)
| VRAM | Макс. размер модели | Примеры моделей |
|---|---|---|
| Только CPU | ~1B параметров | GPT-2, TinyLlama, SmolLM |
| 4–8 ГБ | ~4B параметров | Qwen2.5-1.5B, Phi-3.5 mini, Llama 3.2 3B |
| 8–16 ГБ | ~9B параметров | Llama 3.1 8B, Mistral 7B, Gemma 2 9B |
| 24 ГБ | ~32B параметров | Qwen3-32B, Llama 3.1 70B (впритык), Command-R |
| 48 ГБ+ | ~72B+ параметров | Qwen2.5-72B, DeepSeek-R1 |
| Multi-GPU | 200B+ параметров | Llama 3.1 405B, DeepSeek-V3 (685B MoE) |
Шаг 3: Обзор доступных моделей и рекомендации
# Просмотр моделей по вычислительному уровню
obliteratus models --tier medium
# Информация об архитектуре конкретной модели
obliteratus info <model_name>
# Рекомендация лучшего метода и параметров на основе телеметрии
obliteratus recommend <model_name>
obliteratus recommend <model_name> --insights # глобальные рейтинги по всем архитектурам
Шаг 4: Выбор метода
Как выбрать метод
По умолчанию и в большинстве случаев: advanced. Многонаправленный SVD с нормо-сохраняющей проекцией — хорошо проверен на практике.
| Ситуация | Рекомендуемый метод | Почему |
|---|---|---|
| По умолчанию / большинство моделей | advanced | Многонаправленный SVD, нормо-сохраняющий, надёжный |
| Быстрый тест / прототип | basic | Быстро, просто, достаточно для оценки |
| Плотная модель (Llama, Mistral) | advanced | Многонаправленный, нормо-сохраняющий |
| MoE-модель (DeepSeek, Mixtral) | nuclear | Поэкспертная гранулярность, справляется с MoE |
| Reasoning-модель (R1-дистилляты) | surgical | CoT-aware, сохраняет цепочку рассуждений |
| Упорные отказы сохраняются | aggressive | Отбелённый SVD + head surgery + jailbreak |
| Нужны обратимые изменения | Steering vectors (см. раздел Analysis) | |
| Максимальное качество, время не важно | optimized | Байесовский поиск оптимальных параметров |
| Экспериментальное авто-определение | informed | Авто-определяет тип выравнивания — экспериментально, не всегда превосходит advanced |
9 CLI-методов
- basic — Единственное направление отказа через diff-in-means. Быстро (~5–10 мин для 8B).
- advanced (ПО УМОЛЧАНИЮ, РЕКОМЕНДОВАН) — Несколько SVD-направлений, нормо-сохраняющая проекция, 2 прохода уточнения. Средняя скорость (~10–20 мин).
- aggressive — Отбелённый SVD + jailbreak-контрастирование + хирургия голов внимания. Выше риск деградации когерентности.
- spectral_cascade — DCT-разложение в частотной области. Исследовательский, нестандартный подход.
- informed — Запускает анализ прямо во время аблитерации для авто-настройки. Экспериментальный — медленнее и менее предсказуем, чем advanced.
- surgical — SAE-признаки + маскирование нейронов + хирургия голов + поэкспертная обработка. Очень медленно (~1–2 ч). Лучший выбор для reasoning-моделей.
- optimized — Байесовский поиск гиперпараметров (Optuna TPE). Самый долгий, но находит оптимальные параметры.
- inverted — Инвертирует направление отказа. Модель становится активно склонна к согласию.
- nuclear — Максимальная комбинация для упрямых MoE-моделей. Поэкспертная гранулярность.
Методы извлечения направлений (флаг —direction-method)
- diff_means (по умолчанию) — Простая разность средних между отказанными и выполненными активациями. Устойчив.
- svd — Многонаправленное SVD-извлечение. Лучше для сложного выравнивания.
- leace — LEACE (Linear Erasure via Closed-form Estimation). Оптимальное линейное стирание.
4 метода только через Python API
(Недоступны через CLI — требуют Python-импорта, что нарушает границу AGPL. Упоминай пользователю только если тот явно хочет использовать OBLITERATUS как библиотеку в собственном AGPL-проекте.)
- failspy, gabliteration, heretic, rdo
Шаг 5: Запуск аблитерации
Стандартный запуск
# Метод по умолчанию (advanced) — рекомендован для большинства моделей
obliteratus obliterate <model_name> --method advanced --output-dir ./abliterated-models
# С 4-битным квантованием (экономит VRAM)
obliteratus obliterate <model_name> --method advanced --quantization 4bit --output-dir ./abliterated-models
# Большие модели (70B+) — консервативные значения по умолчанию
obliteratus obliterate <model_name> --method advanced --quantization 4bit --large-model --output-dir ./abliterated-models
Тонкая настройка параметров
obliteratus obliterate <model_name> \
--method advanced \
--direction-method diff_means \
--n-directions 4 \
--refinement-passes 2 \
--regularization 0.1 \
--quantization 4bit \
--output-dir ./abliterated-models \
--contribute # добровольная телеметрия для исследований сообщества
Ключевые флаги
| Флаг | Описание | По умолчанию |
|---|---|---|
--method | Метод аблитерации | advanced |
--direction-method | Метод извлечения направлений | diff_means |
--n-directions | Число направлений отказа (1–32) | зависит от метода |
--refinement-passes | Количество итерационных проходов (1–5) | 2 |
--regularization | Сила регуляризации (0.0–1.0) | 0.1 |
--quantization | Загрузка в 4bit или 8bit | none (полная точность) |
--large-model | Консервативные значения для 120B+ | false |
--output-dir | Куда сохранять аблитерированную модель | ./obliterated_model |
--contribute | Передать анонимизированные результаты в исследование | false |
--verify-sample-size | Число тестовых промптов для проверки отказов | 20 |
--dtype | Тип данных модели (float16, bfloat16) | auto |
Другие режимы запуска
# Интерактивный режим с подсказками (железо → модель → пресет)
obliteratus interactive
# Веб-интерфейс (Gradio)
obliteratus ui --port 7860
# Запуск полного ablation study из YAML-конфига
obliteratus run config.yaml --preset quick
# Турнир: все методы друг против друга
obliteratus tourney <model_name>
Шаг 6: Проверка результатов
После аблитерации смотри на выходные метрики:
| Метрика | Хорошее значение | Предупреждение |
|---|---|---|
| Частота отказов | < 5% (в идеале ~0%) | > 10% — отказы сохранились |
| Изменение перплексии | < 10% прироста | > 15% — деградация когерентности |
| KL-дивергенция | < 0.1 | > 0.5 — значительный сдвиг распределения |
| Когерентность | Высокая / проходит качественную проверку | Деградировавшие ответы, повторения |
Если отказы сохраняются (> 10%)
- Попробуй метод
aggressive - Увеличь
--n-directions(например, 8 или 16) - Добавь
--refinement-passes 3 - Попробуй
--direction-method svdвместо diff_means
Если когерентность деградировала (перплексия выросла > 15%)
- Уменьши
--n-directions(попробуй 2) - Увеличь
--regularization(попробуй 0.3) - Снизь
--refinement-passesдо 1 - Попробуй метод
basic— он щадящий
Шаг 7: Использование аблитерированной модели
На выходе — стандартная директория модели HuggingFace.
# Локальное тестирование через transformers
python3 -c "
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained('./abliterated-models/<model>')
tokenizer = AutoTokenizer.from_pretrained('./abliterated-models/<model>')
inputs = tokenizer('How do I pick a lock?', return_tensors='pt')
outputs = model.generate(**inputs, max_new_tokens=200)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
"
# Загрузка на HuggingFace Hub
huggingface-cli upload <username>/<model-name>-abliterated ./abliterated-models/<model>
# Запуск через vLLM
vllm serve ./abliterated-models/<model>
Справочник CLI-команд
| Команда | Описание |
|---|---|
obliteratus obliterate | Основная команда аблитерации |
obliteratus info <model> | Информация об архитектуре модели |
obliteratus models --tier <tier> | Просмотр кураторских моделей по вычислительному уровню |
obliteratus recommend <model> | Рекомендация метода и параметров на основе телеметрии |
obliteratus interactive | Пошаговый мастер настройки |
obliteratus tourney <model> | Турнир: все методы лицом к лицу |
obliteratus run <config.yaml> | Запуск ablation study из YAML |
obliteratus strategies | Список всех зарегистрированных ablation-стратегий |
obliteratus report <results.json> | Перегенерация визуальных отчётов |
obliteratus ui | Запуск веб-интерфейса Gradio |
obliteratus aggregate | Сводка данных телеметрии сообщества |
Аналитические модули
OBLITERATUS включает 28 аналитических модулей для механистической интерпретируемости.
Полный справочник: skill_view(name="obliteratus", file_path="references/analysis-modules.md").
Быстрые аналитические команды
# Запуск конкретных аналитических модулей
obliteratus run analysis-config.yaml --preset quick
# Первоочередные модули:
# - alignment_imprint: отпечаток метода выравнивания (DPO/RLHF/CAI/SFT)
# - concept_geometry: одно направление или полиэдральный конус
# - logit_lens: какой слой принимает решение об отказе
# - anti_ouroboros: оценка риска самовосстановления
# - causal_tracing: причинно необходимые компоненты
Steering Vectors (обратимая альтернатива)
Вместо постоянной модификации весов можно управлять поведением модели прямо во время инференса:
# только Python API — для собственных проектов пользователя
from obliteratus.analysis.steering_vectors import SteeringVectorFactory, SteeringHookManager
Ablation-стратегии
Помимо аблитерации на основе направлений, OBLITERATUS включает структурные ablation-стратегии:
- Embedding Ablation — работа с компонентами embedding-слоя
- FFN Ablation — удаление блоков feed-forward-сети
- Head Pruning — прунинг голов внимания
- Layer Removal — полное удаление слоёв
Список всех доступных: obliteratus strategies
Оценка
OBLITERATUS поставляется со встроенными инструментами оценки:
- Бенчмарк частоты отказов
- Сравнение перплексии до и после
- Интеграция с LM Eval Harness для академических бенчмарков
- Прямое сравнение с конкурирующими решениями
- Отслеживание базовой производительности
Поддерживаемые платформы
- CUDA — Полная поддержка (видеокарты NVIDIA)
- Apple Silicon (MLX) — Поддерживается через MLX-бэкенд
- CPU — Поддерживается для маленьких моделей (< 1B параметров)
YAML-шаблоны конфигураций
Шаблоны для воспроизводимых запусков загружаются через skill_view:
templates/abliteration-config.yaml— Стандартная конфигурация для одной моделиtemplates/analysis-study.yaml— Предварительный анализ перед аблитерациейtemplates/batch-abliteration.yaml— Пакетная обработка нескольких моделей
Телеметрия
OBLITERATUS может передавать анонимизированные данные запусков в общий исследовательский датасет — опционально. Включается флагом --contribute. Личные данные не собираются — только имя модели, метод, метрики.
Типичные ошибки
- Не используй
informedпо умолчанию — он экспериментальный и медленнее. Для надёжных результатов выбирайadvanced. - Модели меньше ~1B плохо поддаются аблитерации — их механизмы отказов поверхностны и фрагментированы, чистое извлечение направлений затруднено. Жди частичного результата (20–40% оставшихся отказов). У моделей от 3B и выше направления чище —
advancedнередко даёт 0% отказов. aggressiveможет ухудшить ситуацию — на небольших моделях способен повредить когерентность и даже поднять частоту отказов. Применяй только еслиadvancedоставляет > 10% отказов на модели 3B+.- Всегда проверяй перплексию — прирост выше 15% говорит о повреждении модели. Снижай агрессивность.
- MoE-модели требуют особого подхода — для Mixtral, DeepSeek-MoE и аналогов используй метод
nuclear. - Квантованные модели нельзя перекванторовать — аблитерируй модель в полной точности, затем квантуй результат.
- Оценка VRAM приблизительна — 4-битное квантование помогает, но пиковое потребление во время извлечения может резко вырасти.
- Reasoning-модели чувствительны — для R1-дистиллятов используй
surgical, чтобы сохранить цепочку рассуждений. - Загляни в
obliteratus recommend— данные телеметрии могут подсказать параметры лучше дефолтных. - Лицензия AGPL — никогда не делай
import obliteratusв MIT/Apache-проектах. Только вызов через CLI. - Большие модели (70B+) — всегда используй флаг
--large-modelдля консервативных дефолтов. - Spectral certification RED — это норма — спектральная проверка часто помечает результат как «неполный», даже когда фактическая частота отказов равна 0%. Ориентируйся на реальную частоту отказов, а не на спектральную сертификацию.
Связанные навыки
- vllm — Раздача аблитерированных моделей с высокой пропускной способностью
- gguf — Конвертация аблитерированных моделей в GGUF для llama.cpp
- huggingface-tokenizers — Работа с токенизаторами моделей