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-GPU200B+ параметров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-дистилляты)surgicalCoT-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 или 8bitnone (полная точность)
--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%)

  1. Попробуй метод aggressive
  2. Увеличь --n-directions (например, 8 или 16)
  3. Добавь --refinement-passes 3
  4. Попробуй --direction-method svd вместо diff_means

Если когерентность деградировала (перплексия выросла > 15%)

  1. Уменьши --n-directions (попробуй 2)
  2. Увеличь --regularization (попробуй 0.3)
  3. Снизь --refinement-passes до 1
  4. Попробуй метод 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. Личные данные не собираются — только имя модели, метод, метрики.

Типичные ошибки

  1. Не используй informed по умолчанию — он экспериментальный и медленнее. Для надёжных результатов выбирай advanced.
  2. Модели меньше ~1B плохо поддаются аблитерации — их механизмы отказов поверхностны и фрагментированы, чистое извлечение направлений затруднено. Жди частичного результата (20–40% оставшихся отказов). У моделей от 3B и выше направления чище — advanced нередко даёт 0% отказов.
  3. aggressive может ухудшить ситуацию — на небольших моделях способен повредить когерентность и даже поднять частоту отказов. Применяй только если advanced оставляет > 10% отказов на модели 3B+.
  4. Всегда проверяй перплексию — прирост выше 15% говорит о повреждении модели. Снижай агрессивность.
  5. MoE-модели требуют особого подхода — для Mixtral, DeepSeek-MoE и аналогов используй метод nuclear.
  6. Квантованные модели нельзя перекванторовать — аблитерируй модель в полной точности, затем квантуй результат.
  7. Оценка VRAM приблизительна — 4-битное квантование помогает, но пиковое потребление во время извлечения может резко вырасти.
  8. Reasoning-модели чувствительны — для R1-дистиллятов используй surgical, чтобы сохранить цепочку рассуждений.
  9. Загляни в obliteratus recommend — данные телеметрии могут подсказать параметры лучше дефолтных.
  10. Лицензия AGPL — никогда не делай import obliteratus в MIT/Apache-проектах. Только вызов через CLI.
  11. Большие модели (70B+) — всегда используй флаг --large-model для консервативных дефолтов.
  12. Spectral certification RED — это норма — спектральная проверка часто помечает результат как «неполный», даже когда фактическая частота отказов равна 0%. Ориентируйся на реальную частоту отказов, а не на спектральную сертификацию.

Связанные навыки

  • vllm — Раздача аблитерированных моделей с высокой пропускной способностью
  • gguf — Конвертация аблитерированных моделей в GGUF для llama.cpp
  • huggingface-tokenizers — Работа с токенизаторами моделей
ESC