{/* This page is auto-generated from the skill's SKILL.md by website/scripts/generate-skill-docs.py. Edit the source SKILL.md, not this page. */}

Obliteratus

OBLITERATUS:消除 LLM 拒答(diff-in-means)。

Skill 元数据

来源可选 — 通过 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
相关 skillserving-llms-vllm, llama-cpp, huggingface-tokenizers

参考:完整 SKILL.md

INFO

以下是 Hermes 在触发此 skill 时加载的完整 skill 定义。这是 skill 激活时 agent 所看到的指令内容。

OBLITERATUS Skill

内容一览

9 种 CLI 方法、28 个分析模块、覆盖 5 个算力档位的 116 个模型预设、锦标赛式评估,以及由遥测驱动的推荐。

无需重训或微调,即可从开放权重 LLM 中移除拒答行为(安全护栏)。它使用机制可解释性技术——包括 diff-in-means、SVD、白化 SVD、LEACE 概念擦除、SAE 分解、贝叶斯核投影等——识别并精准切除模型权重中的拒答方向,同时保留推理能力。

许可证警告: OBLITERATUS 采用 AGPL-3.0。切勿将其作为 Python 库导入。始终通过 CLI(obliteratus 命令)或 subprocess 调用,以保持 Hermes Agent 的 MIT 许可证干净。

视频指南

一段演示 Hermes agent 用 OBLITERATUS 对 Gemma 做 abliterate 的视频: https://www.youtube.com/watch?v=8fG9BrNTeHs(“OBLITERATUS: An AI Agent Removed Gemma 4's Safety Guardrails”)

当用户在自己动手之前想先端到端地看一遍工作流时,这段视频很有用。

何时使用此 skill

在用户出现以下情况时触发:

  • 想“去审查”或“abliterate”某个 LLM
  • 询问如何从模型中移除拒答/护栏
  • 想制作 Llama、Qwen、Mistral 等模型的无审查版本
  • 提到“refusal removal”、“abliteration”、“weight projection”
  • 想分析模型的拒答机制如何工作
  • 提到 OBLITERATUS、abliterator 或拒答方向

第 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 Web UI 支持:
# pip install -e ".[spaces]"

重要: 安装前先与用户确认。这会拉取约 5–10GB 依赖(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-bit 量化)

VRAM最大模型规模示例模型
仅 CPU~1B 参数GPT-2, TinyLlama, SmolLM
4-8 GB~4B 参数Qwen2.5-1.5B, Phi-3.5 mini, Llama 3.2 3B
8-16 GB~9B 参数Llama 3.1 8B, Mistral 7B, Gemma 2 9B
24 GB~32B 参数Qwen3-32B, Llama 3.1 70B(紧张), Command-R
48 GB+~72B+ 参数Qwen2.5-72B, DeepSeek-R1
多 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 复杂度
推理模型(R1 蒸馏)surgicalCoT 感知,保留思维链
顽固拒答持续存在aggressive白化 SVD + 头手术 + 越狱
想要可逆改动使用 steering vectors(见分析章节)
追求最高质量、不在乎时间optimized贝叶斯搜索最佳参数
实验性自动检测informed自动检测对齐类型——实验性,未必总是优于 advanced

9 种 CLI 方法

  • basic — 通过 diff-in-means 得到单一拒答方向。快(8B 约 5–10 分钟)。
  • advanced(默认,推荐)— 多 SVD 方向、范数保持投影、2 轮精修。速度中等(约 10–20 分钟)。
  • aggressive — 白化 SVD + 越狱对比 + 注意力头手术。损伤连贯性的风险更高。
  • spectral_cascade — DCT 频域分解。研究性/新颖方法。
  • informed — 在 abliterate 过程中运行分析以自动配置。实验性——比 advanced 更慢、更不可预测。
  • surgical — SAE 特征 + 神经元掩码 + 头手术 + 逐专家。很慢(约 1–2 小时)。最适合推理模型。
  • optimized — 贝叶斯超参数搜索(Optuna TPE)。运行时间最长,但能找到最优参数。
  • inverted — 翻转拒答方向。模型变得主动配合。
  • nuclear — 针对顽固 MoE 模型的最强组合。专家粒度。

方向提取方法(--direction-method 标志)

  • diff_means(默认)— 拒答/服从激活之间简单的均值差。稳健。
  • svd — 多方向 SVD 提取。更适合复杂对齐。
  • leace — LEACE(闭式估计线性擦除)。最优线性擦除。

4 种仅 Python API 方法

(CLI 不可用——需要 Python 导入,这会越过 AGPL 边界。仅当用户明确要在自己的 AGPL 项目中把 OBLITERATUS 当库使用时才提及。)

  • failspy, gabliteration, heretic, rdo

第 5 步:运行 Abliteration

标准用法

# 默认方法(advanced)——推荐用于大多数模型
obliteratus obliterate <model_name> --method advanced --output-dir ./abliterated-models

# 使用 4-bit 量化(节省 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  # 选择贡献遥测数据供社区研究

关键标志

标志说明默认值
--methodAbliteration 方法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-model120B+ 的保守默认false
--output-dir保存 abliterated 模型的位置./obliterated_model
--contribute共享匿名结果用于研究false
--verify-sample-size拒答检查的测试提示数20
--dtype模型 dtype(float16, bfloat16)auto

其他执行模式

# 交互式引导模式(硬件 → 模型 → 预设)
obliteratus interactive

# Web UI(Gradio)
obliteratus ui --port 7860

# 从 YAML 配置运行完整 ablation study
obliteratus run config.yaml --preset quick

# 锦标赛:让所有方法互相对决
obliteratus tourney <model_name>

第 6 步:验证结果

abliterate 后,检查输出指标:

指标良好值警告
拒答率< 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 步:使用 Abliterated 模型

输出是一个标准的 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主 abliteration 命令
obliteratus info <model>打印模型架构详情
obliteratus models --tier <tier>按算力档位浏览精选模型
obliteratus recommend <model>由遥测驱动的方法/参数建议
obliteratus interactive引导式设置向导
obliteratus tourney <model>锦标赛:所有方法正面对决
obliteratus run <config.yaml>从 YAML 执行 ablation study
obliteratus strategies列出所有已注册的 ablation 策略
obliteratus report <results.json>重新生成可视化报告
obliteratus ui启动 Gradio Web 界面
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: 单方向 vs 多面锥
# - logit_lens: 哪一层决定拒答
# - anti_ouroboros: 自修复风险评分
# - causal_tracing: 因果上必要的组件

Steering Vectors(可逆替代方案)

不做永久权重修改,改用推理时引导:

# 仅 Python API——用于用户自己的项目
from obliteratus.analysis.steering_vectors import SteeringVectorFactory, SteeringHookManager

Ablation 策略

除基于方向的 abliteration 外,OBLITERATUS 还包含结构性 ablation 策略:

  • Embedding Ablation — 针对 embedding 层组件
  • FFN Ablation — 移除前馈网络块
  • Head Pruning — 注意力头剪枝
  • Layer Removal — 整层移除

列出全部可用:obliteratus strategies

评估

OBLITERATUS 内置评估工具:

  • 拒答率基准测试
  • 困惑度对比(前后)
  • 集成 LM Eval Harness 以跑学术基准
  • 头对头竞品对比
  • 基线性能跟踪

平台支持

  • CUDA — 完整支持(NVIDIA GPU)
  • Apple Silicon (MLX) — 通过 MLX 后端支持
  • CPU — 支持 tiny 模型(< 1B 参数)

YAML 配置模板

通过 skill_view 加载模板以复现运行:

  • templates/abliteration-config.yaml — 标准单模型配置
  • templates/analysis-study.yaml — abliteration 前的分析研究
  • templates/batch-abliteration.yaml — 多模型批处理

遥测

OBLITERATUS 可选择将匿名运行数据贡献给全球研究数据集。用 --contribute 标志开启。不收集个人数据——仅模型名、方法、指标。

常见陷阱

  1. 不要把 informed 当默认 — 它是实验性的且更慢。用 advanced 获得可靠结果。
  2. ~1B 以下模型对 abliteration 反应不佳 — 它们的拒答行为浅而碎,难以干净地提取方向。预期结果不彻底(残留 20–40% 拒答)。3B 以上模型拒答方向更干净,反应好得多(用 advanced 常达 0% 拒答)。
  3. aggressive 可能让情况更糟 — 在小模型上会损伤连贯性,反而提高拒答率。仅当 advanced 在 3B+ 模型上仍残留 > 10% 拒答时才使用。
  4. 始终检查困惑度 — 若飙升 > 15%,模型已受损。降低激进程度。
  5. MoE 模型需特殊处理 — Mixtral、DeepSeek-MoE 等用 nuclear 方法。
  6. 量化模型不能再次量化 — 先 abliterate 全精度模型,再对输出量化。
  7. VRAM 估算为近似值 — 4-bit 量化有帮助,但提取过程中峰值占用可能飙升。
  8. 推理模型敏感 — R1 蒸馏用 surgical 以保留思维链。
  9. 查 obliteratus recommend — 遥测数据可能给出比默认更好的参数。
  10. AGPL 许可证 — 切勿在 MIT/Apache 项目中 import obliteratus。仅通过 CLI 调用。
  11. 大模型(70B+) — 始终用 --large-model 标志获得保守默认。
  12. 谱认证 RED 很常见 — 即使实际拒答率为 0%,谱检查也常标记为“不完整”。以实际拒答率为准,不要只依赖谱认证。

互补 skill

  • vllm — 高吞吐地服务 abliterated 模型
  • gguf — 把 abliterated 模型转成 GGUF 供 llama.cpp 使用
  • huggingface-tokenizers — 处理模型 tokenizer