Obliteratus
OBLITERATUS:消除大語言模型(LLM)的拒絕響應(均值差法)。
技能元數據
| 來源 | 可選 — 使用 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 技能
內容概覽
包含 9 種 CLI 方法、28 個分析模塊、跨越 5 個計算層級的 116 個模型預設、錦標賽評估以及遙測驅動的建議。
無需重新訓練或微調,即可從開放權重的大語言模型中移除拒絕行為(安全護欄)。利用機械可解釋性技術——包括均值差法(diff-in-means)、奇異值分解(SVD)、白化 SVD、LEACE 概念擦除、稀疏自編碼器(SAE)分解、貝葉斯核投影等——來識別並從模型權重中精準切除拒絕方向,同時保留推理能力。
許可證警告: OBLITERATUS 採用 AGPL-3.0 許可證。切勿將其作為 Python 庫導入。始終通過 CLI(obliteratus 命令)或子進程調用。這樣可以保持 Hermes Agent 的 MIT 許可證純淨。
視頻指南
Hermes 代理使用 OBLITERATUS 消除 Gemma 模型拒絕響應的演練: https://www.youtube.com/watch?v=8fG9BrNTeHs ("OBLITERATUS: An AI Agent Removed Gemma 4's Safety Guardrails")
當用戶希望在自行運行之前獲得端到端工作流程的直觀概述時,此視頻非常有用。
何時使用此技能
當用戶出現以下情況時觸發:
- 想要“去審查”或“消除”大語言模型的拒絕響應
- 詢問如何從模型中移除拒絕機制/安全護欄
- 希望創建 Llama、Qwen、Mistral 等模型的去審查版本
- 提及“拒絕移除”、“消除(abliteration)”、“權重投影”
- 希望分析模型的拒絕機制如何工作
- 引用 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 .
# For Gradio web UI support:
# 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')
"
顯存要求(使用 4-bit 量化)
| 顯存 | 最大模型規模 | 示例模型 |
|---|---|---|
| 僅 CPU | ~10 億參數 | GPT-2, TinyLlama, SmolLM |
| 4-8 GB | ~40 億參數 | Qwen2.5-1.5B, Phi-3.5 mini, Llama 3.2 3B |
| 8-16 GB | ~90 億參數 | Llama 3.1 8B, Mistral 7B, Gemma 2 9B |
| 24 GB | ~320 億參數 | Qwen3-32B, Llama 3.1 70B (緊張), Command-R |
| 48 GB+ | ~720 億+ 參數 | Qwen2.5-72B, DeepSeek-R1 |
| 多 GPU | 2000 億+ 參數 | Llama 3.1 405B, DeepSeek-V3 (685B MoE) |
步驟 3:瀏覽可用模型並獲取建議
# Browse models by compute tier
obliteratus models --tier medium
# Get architecture info for a specific model
obliteratus info <model_name>
# Get telemetry-driven recommendation for best method & params
obliteratus recommend <model_name>
obliteratus recommend <model_name> --insights # global cross-architecture rankings
步驟 4:選擇方法
方法選擇指南
默認/大多數情況推薦:advanced。 它使用具有範數保持投影的多方向 SVD,且經過充分測試。
| 場景 | 推薦方法 | 原因 |
|---|---|---|
| 默認 / 大多數模型 | advanced | 多方向 SVD,範數保持,可靠 |
| 快速測試 / 原型設計 | basic | 快速、簡單,足以進行評估 |
| 稠密模型(Llama, Mistral) | advanced | 多方向,範數保持 |
| 混合專家模型(DeepSeek, Mixtral) | nuclear | 專家粒度,處理 MoE 複雜性 |
| 推理模型(R1 蒸餾版) | surgical | 感知思維鏈(CoT),保留思維鏈過程 |
| 頑固的拒絕響應持續存在 | 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 — 在 abliteration 過程中運行分析以自動配置。實驗性功能 — 比 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
標準用法
# Default method (advanced) — recommended for most models
obliteratus obliterate <model_name> --method advanced --output-dir ./abliterated-models
# With 4-bit quantization (saves VRAM)
obliteratus obliterate <model_name> --method advanced --quantization 4bit --output-dir ./abliterated-models
# Large models (70B+) — conservative defaults
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 # opt-in telemetry for community research
關鍵標誌
| 標誌 | 描述 | 默認值 |
|---|---|---|
--method | Abliteration 方法 | 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 | 保存 abliterated 模型的位置 | ./obliterated_model |
--contribute | 共享匿名結果用於研究 | false |
--verify-sample-size | 用於拒絕檢查的測試提示數量 | 20 |
--dtype | 模型數據類型(float16, bfloat16) | auto |
其他執行模式
# Interactive guided mode (hardware → model → preset)
obliteratus interactive
# Web UI (Gradio)
obliteratus ui --port 7860
# Run a full ablation study from YAML config
obliteratus run config.yaml --preset quick
# Tournament: pit all methods against each other
obliteratus tourney <model_name>
第 6 步:驗證結果
Abliteration 後,檢查輸出指標:
| 指標 | 良好值 | 警告 |
|---|---|---|
| 拒絕率 | < 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 步:使用 Abliterated 模型
輸出是一個標準的 HuggingFace 模型目錄。
# Test locally with 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))
"
# Upload to HuggingFace Hub
huggingface-cli upload <username>/<model-name>-abliterated ./abliterated-models/<model>
# Serve with 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 執行消融研究 |
obliteratus strategies | 列出所有註冊的消融策略 |
obliteratus report <results.json> | 重新生成可視化報告 |
obliteratus ui | 啟動 Gradio Web 界面 |
obliteratus aggregate | 彙總社區遙測數據 |
分析模塊
OBLITERATUS 包含 28 個用於機械可解釋性的分析模塊。
請參閱 skill_view(name="obliteratus", file_path="references/analysis-modules.md") 獲取完整參考。
快速分析命令
# Run specific analysis modules
obliteratus run analysis-config.yaml --preset quick
# Key modules to run first:
# - alignment_imprint: Fingerprint DPO/RLHF/CAI/SFT alignment method
# - concept_geometry: Single direction vs polyhedral cone
# - logit_lens: Which layer decides to refuse
# - anti_ouroboros: Self-repair risk score
# - causal_tracing: Causally necessary components
steering Vectors(可逆替代方案)
不使用永久權重修改,而是使用推理時 steering:
# Python API only — for user's own projects
from obliteratus.analysis.steering_vectors import SteeringVectorFactory, SteeringHookManager
消融策略
除了基於方向的 abliteration 外,OBLITERATUS 還包括結構消融策略:
- Embedding Ablation — 針對嵌入層組件
- FFN Ablation — 前饋網絡塊移除
- Head Pruning — 注意力頭剪枝
- Layer Removal — 完整層移除
列出所有可用策略:obliteratus strategies
評估
OBLITERATUS 包含內置的評估工具:
- 拒絕率基準測試
- 困惑度對比(處理前/處理後)
- 集成 LM Eval Harness 以進行學術基準測試
- 與競爭對手的直接對比
- 基線性能跟蹤
平臺支持
- CUDA — 完全支持(NVIDIA GPU)
- Apple Silicon (MLX) — 通過 MLX 後端支持
- CPU — 支持微型模型(< 10 億參數)
YAML 配置模板
通過 skill_view 加載模板以實現可復現的運行:
templates/abliteration-config.yaml— 標準單模型配置templates/analysis-study.yaml— 消融前分析研究templates/batch-abliteration.yaml— 多模型批量處理
遙測
OBLITERATUS 可以選擇性地將匿名運行數據貢獻給全球研究數據集。
使用 --contribute 標誌啟用。不收集個人數據 — 僅收集模型名稱、方法和指標。
常見陷阱
- 不要將
informed作為默認選項 — 它處於實驗階段且速度較慢。使用advanced以獲得可靠的結果。 - 小於 ~10 億參數的模型對消融處理響應不佳 — 它們的拒絕行為淺層且碎片化,使得提取清晰的方向變得困難。預期結果不完整(剩餘 20-40% 的拒絕率)。30 億參數以上的模型具有更清晰的拒絕方向,響應要好得多(使用
advanced時通常拒絕率為 0%)。 aggressive可能會使情況惡化 — 在小型模型上,它可能會損害連貫性並實際上增加拒絕率。僅當advanced在 30 億參數以上的模型上仍留下 > 10% 的拒絕率時才使用它。- 始終檢查困惑度 — 如果激增超過 15%,則模型已受損。降低激進程度。
- MoE 模型需要特殊處理 — 對 Mixtral、DeepSeek-MoE 等使用
nuclear方法。 - 量化模型無法重新量化 — 對全精度模型進行消融處理,然後對輸出進行量化。
- 顯存估算僅為近似值 — 4 位量化有幫助,但在提取過程中峰值用量可能會激增。
- 推理模型很敏感 — 對 R1 蒸餾模型使用
surgical以保留思維鏈。 - 檢查
obliteratus recommend— 遙測數據可能提供比默認值更好的參數。 - AGPL 許可證 — 切勿在 MIT/Apache 項目中
import obliteratus。僅通過 CLI 調用。 - 大型模型(700 億參數以上) — 始終使用
--large-model標誌以採用保守的默認設置。 - 頻譜認證 RED 很常見 — 即使實際拒絕率為 0%,頻譜檢查也經常標記為“不完整”。檢查實際拒絕率,而不是僅依賴頻譜認證。
互補技能
- vllm — 高吞吐量服務已消融的模型
- gguf — 將已消融的模型轉換為 GGUF 格式以用於 llama.cpp
- huggingface-tokenizers — 處理模型分詞器