跳到主要內容

Obliteratus

使用 OBLITERATUS — 機械可解釋性技術(均值差、SVD、白化 SVD、LEACE、SAE 分解等)從開源權重大語言模型中移除拒絕行為,在切除安全護欄的同時保留推理能力。提供 9 種 CLI 方法、28 個分析模塊、跨越 5 個計算層級的 116 個模型預設、錦標賽評估以及遙測驅動的建議。當用戶希望取消審查、徹底消除(abliterate)或移除大語言模型的拒絕行為時使用。

技能元數據

來源捆綁(默認安裝)
路徑skills/mlops/inference/obliteratus
版本2.0.0
作者Hermes Agent
許可證MIT
依賴項obliteratus, torch, transformers, bitsandbytes, accelerate, safetensors
標籤Abliteration, Uncensoring, Refusal-Removal, LLM, Weight-Projection, SVD, Mechanistic-Interpretability, HuggingFace, Model-Surgery
相關技能vllm, gguf, huggingface-tokenizers

參考:完整 SKILL.md

信息

以下是 Hermes 在觸發此技能時加載的完整技能定義。這是技能激活時代理所看到的指令。

OBLITERATUS 技能

無需重新訓練或微調,即可從開源權重大語言模型中移除拒絕行為(安全護欄)。使用機械可解釋性技術 — 包括均值差、SVD、白化 SVD、LEACE 概念擦除、SAE 分解、貝葉斯核投影等 — 來識別並從模型權重中手術式地切除拒絕方向,同時保留推理能力。

許可證警告: OBLITERATUS 採用 AGPL-3.0 許可證。切勿將其作為 Python 庫導入。始終通過 CLI(obliteratus 命令)或子進程調用。這樣可以保持 Hermes Agent 的 MIT 許可證純淨。

何時使用此技能

當用戶執行以下操作時觸發:

  • 希望“取消審查”或“徹底消除(abliterate)”大語言模型
  • 詢問如何從模型中移除拒絕行為/安全護欄
  • 希望創建 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~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:瀏覽可用模型並獲取建議

# 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多方向,範數保持
MoE 模型(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 特徵 + 神經元掩碼 + 頭手術 + 每專家(per-expert)處理。非常慢(約需 1-2 小時)。最適合推理模型。
  • optimized — 貝葉斯超參數搜索(Optuna TPE)。運行時間最長,但能找到最優參數。
  • inverted — 翻轉拒絕方向。模型將變得主動願意執行請求。
  • nuclear — 針對頑固 MoE 模型的最大力度組合。專家粒度(Expert-granular)。

方向提取方法(--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

關鍵標誌

標誌描述默認值
--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-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%)

  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 模型目錄。

# 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 向量(可逆替代方案)

使用推理時 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 — 支持微型模型(< 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 在 3B+ 模型上留下 > 10% 的拒絕率時才使用它。
  4. 始終檢查困惑度 — 如果激增超過 15%,則模型已受損。降低激進程度。
  5. MoE 模型需要特殊處理 — 對 Mixtral、DeepSeek-MoE 等使用 nuclear 方法。
  6. 量化模型無法重新量化 — 對全精度模型進行消融處理,然後對輸出進行量化。
  7. 顯存估算僅為近似值 — 4-bit 量化有幫助,但在提取過程中峰值用量可能會激增。
  8. 推理模型很敏感 — 對 R1 蒸餾模型使用 surgical 以保留思維鏈。
  9. 檢查 obliteratus recommend — 遙測數據可能提供比默認值更好的參數。
  10. AGPL 許可證 — 切勿在 MIT/Apache 項目中 import obliteratus。僅通過 CLI 調用。
  11. 大型模型(70B+) — 始終使用 --large-model 標誌以採用保守默認值。
  12. 頻譜認證 RED 很常見 — 即使實際拒絕率為 0%,頻譜檢查也常標記為“不完整”。檢查實際拒絕率,而不是僅依賴頻譜認證。

互補技能

  • vllm — 高吞吐量服務已消融模型
  • gguf — 將已消融模型轉換為 GGUF 以用於 llama.cpp
  • huggingface-tokenizers — 處理模型分詞器