欢迎回来

登录 EAKE AI,继续您的智能之旅

忘记密码?
还没有账号?立即注册

LLM 拒绝消除

LLM 拒绝行为消除

OBLITERATUS:通过均值差分法消除 LLM 的拒绝响应

OBLITERATUS Skill

内容概览

9 种 CLI 方法、28 个分析模块、116 个模型预设(覆盖 5 个算力等级)、锦标赛式评估,以及基于遥测驱动的参数推荐。

无需重新训练或微调,即可消除开源 LLM 的拒绝行为(安全护栏)。利用机械可解释性技术——包括均值差分、SVD、白化 SVD、LEACE 概念擦除、SAE 分解、贝叶斯核投影等——识别并精准切除模型权重中的拒绝方向,同时保留推理能力。

许可证警告: OBLITERATUS 采用 AGPL-3.0 许可证。严禁作为 Python 库导入。请始终通过 CLI(obliteratus 命令)或子进程调用。这样可保持 Hermes Agent 的 MIT 许可证合规。

视频指南

由 Hermes Agent 使用 OBLITERATUS 消除 Gemma 4 安全护栏的完整演示:

https://www.youtube.com/watch?v=8fG9BrNTeHs ("OBLITERATUS: An AI Agent Removed Gemma 4's Safety Guardrails")

在用户自行运行之前,可作为可视化概览使用。

使用场景 This Skill

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

  • 想要"解除审查"或"消除"某个 LLM
  • 询问如何移除模型的拒绝/护栏机制
  • 想创建 Llama、Qwen、Mistral 等的无审查版本
  • 提到"拒绝移除"、"消除"、"权重投影"
  • 想分析模型拒绝机制的工作原理
  • 提到 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 网页界面支持:
    # 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

    步骤 3:浏览可用模型并获取推荐

    
    # 按算力等级浏览模型
    obliteratus models --tier medium
    
    # 获取特定模型的架构信息
    obliteratus info 
    
    # 获取遥测驱动的最佳方法和参数推荐
    obliteratus recommend 
    obliteratus recommend  --insights  # 全局跨架构排名
    

    步骤 4:选择方法

    方法选择指南

    大多数场景的默认推荐:advanced它使用多方向 SVD + 范数保持投影,经过充分测试。

    多 GPU200B+ 参数Llama 3.1 405B、DeepSeek-V3(685B MoE)
    情况推荐方法原因
    默认 / 大多数模型`advanced`多方向 SVD,范数保持,可靠
    快速测试 / 原型`basic`快速简单,足够评估
    稠密模型(Llama、Mistral)`advanced`多方向,范数保持
    MoE 模型(DeepSeek、Mixtral)`nuclear`专家粒度,处理 MoE 复杂性
    推理模型(R1 蒸馏)`surgical`CoT 感知,保留思维链
    顽固拒绝持续存在`aggressive`白化 SVD + 头部手术 + 越狱对比
    希望可逆更改使用转向向量(见分析部分)
    追求最高质量,时间充裕`optimized`贝叶斯搜索最优参数

    9 种 CLI 方法

  • basic — 单拒绝方向(均值差分)。快速(约 5-10 分钟处理 8B 模型)。
  • advanced(默认,推荐)— 多 SVD 方向,范数保持投影,2 次精细化迭代。中速(约 10-20 分钟)。
  • aggressive — 白化 SVD + 越狱对比 + 注意力头手术。风险较高,可能损伤连贯性。
  • spectral_cascade — DCT 频域分解。研究性/新方法。
  • informed — 在消除过程中运行分析以自动配置。实验性——比 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:运行消除

    标准用法

    
    # 默认方法(advanced)——推荐用于大多数模型
    obliteratus obliterate  --method advanced --output-dir ./abliterated-models
    
    # 带 4-bit 量化(节省显存)
    obliteratus obliterate  --method advanced --quantization 4bit --output-dir ./abliterated-models
    
    # 大模型(70B+)——保守默认值
    obliteratus obliterate  --method advanced --quantization 4bit --large-model --output-dir ./abliterated-models
    

    微调参数

    
    obliteratus obliterate  
      --method advanced 
      --direction-method diff_means 
      --n-directions 4 
      --refinement-passes 2 
      --regularization 0.1 
      --quantization 4bit 
      --output-dir ./abliterated-models 
      --contribute  # 选择性遥测,为社区研究贡献数据
    

    关键参数

    实验性自动检测`informed`自动检测对齐类型——实验性,效果不一定优于 advanced
    参数说明默认值
    `--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无(全精度)
    `--large-model`120B+ 保守默认值false
    `--output-dir`消除后模型的保存路径./abliterated_model
    `--contribute`共享匿名运行数据用于研究false
    `--verify-sample-size`拒绝检查的测试 prompt 数量20

    其他执行模式

    
    # 交互式引导模式(硬件 → 模型 → 预设)
    obliteratus interactive
    
    # 网页界面(Gradio)
    obliteratus ui --port 7860
    
    # 从 YAML 配置运行完整消融研究
    obliteratus run config.yaml --preset quick
    
    # 锦标赛:所有方法两两对比
    obliteratus tourney 
    

    步骤 6:验证结果

    消除后检查输出指标:

    `--dtype`模型精度(float16、bfloat16)auto
    指标良好值警告
    拒绝率< 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/')
    tokenizer = AutoTokenizer.from_pretrained('./abliterated-models/')
    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 /-abliterated ./abliterated-models/
    
    # 使用 vLLM 服务
    vllm serve ./abliterated-models/
    

    CLI 命令参考

    连贯性高 / 通过定性检查响应退化、重复
    命令说明
    `obliteratus obliterate`主要消除命令
    `obliteratus info `打印模型架构详情
    `obliteratus models --tier `按算力等级浏览精选模型
    `obliteratus recommend `遥测驱动的方法/参数建议
    `obliteratus interactive`引导式设置向导
    `obliteratus tourney `锦标赛:所有方法两两对比
    `obliteratus run `从 YAML 执行消融研究
    `obliteratus strategies`列出所有注册的消融策略
    `obliteratus report `重新生成可视化报告
    `obliteratus ui`启动 Gradio 网页界面

    分析模块

    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: 因果必要组件
    

    转向向量(可逆替代方案)

    不进行永久性权重修改,而是使用推理时转向:

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

    消融策略

    除了基于方向的消除,OBLITERATUS 还包含结构性消融策略:

  • Embedding 消融 — 目标:嵌入层组件
  • FFN 消融 — 前馈网络块移除
  • Head 剪枝 — 注意力头剪枝
  • Layer 移除 — 整层移除
  • 查看所有可用策略: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 参数启用。不收集个人数据——仅收集模型名称、方法、指标。

    常见陷阱

  • 不要将 informed 作为默认方法——它具有实验性且更慢。使用 advanced 以获得可靠结果。
  • 约 1B 以下的小模型对消除反应较差——它们的拒绝行为浅而分散,难以提取干净的方向。预期部分结果(20-40% 拒绝率仍存在)。3B+ 模型有更清晰的拒绝方向,反应好得多(advanced 通常达到 0% 拒绝)。
  • aggressive 可能使情况更糟——在小模型上可能损伤连贯性,甚至增加拒绝率。仅在 advanced 在 3B+ 模型上仍有 > 10% 拒绝率时使用。
  • 始终检查困惑度——如果飙升 > 15%,模型已受损。降低激进程度。
  • MoE 模型需要特殊处理——对 Mixtral、DeepSeek-MoE 等使用 nuclear 方法。
  • 量化模型不能再次量化——消除全精度模型,然后量化输出。
  • 显存估计是近似值——4-bit 量化有帮助,但峰值使用量可能在提取期间飙升。
  • 推理模型敏感——对 R1 蒸馏使用 surgical 以保留思维链。
  • 查看 obliteratus recommend——遥测数据可能提供比默认值更好的参数。
  • AGPL 许可证——严禁在 MIT/Apache 项目中 import obliteratus。仅使用 CLI 调用。
  • 大模型(70B+)——始终使用 --large-model 参数以获得保守默认值。
  • 光谱认证标红是常见现象——光谱检查经常标记"不完整",即使实际拒绝率为 0%。查看实际拒绝率而非仅依赖光谱认证。
  • 互补 Skills

  • vllm — 高吞吐服务消除后的模型
  • gguf — 将消除后的模型转换为 GGUF 以便 llama.cpp 使用
  • huggingface-tokenizers — 处理模型分词器
  • `obliteratus aggregate`汇总社区遥测数据

    安装指南

    复制下方命令,在终端运行即可安装:

    # 安装到当前项目
    npx skills add obliteratus
    # 全局安装 — 所有项目可用
    npx skills add obliteratus -g

    使用指南

    安装完成后,在对话框中直接使用此技能。

    基本信息
    作者 Community 分类 coding 难度 Intermediate 时长 1 hour
    🛠️ 安装命令
    # 安装到当前项目
    npx skills add obliteratus
    # 全局安装
    npx skills add obliteratus -g

    发表评论