OBLITERATUS通过识别并手术式移除模型内部导致拒绝生成的表征,在无需重训练的情况下解除内容限制。每一次运行还会贡献匿名基准数据用于研究。
O B L I T E R A T U S
打破枷锁。释放思维。保留智能。
立即在 HuggingFace Spaces 上体验——运行在 ZeroGPU 上,提供免费每日配额。无需配置,无需安装,只需彻底抹除。
OBLITERATUS 是理解并移除大语言模型拒绝行为的最先进开源工具包——而且每一次运行都会让它更加智能。它实现了「消融」(abliteration)——一系列识别并精确移除内容拒绝相关内部表征的技术,无需重新训练或微调。结果:模型能够响应所有提示词,而不会被人为设卡,同时保留其核心语言能力。
但 OBLITERATUS 不只是一个工具——它是一个分布式研究实验。每次你在启用遥测的情况下消融一个模型时,你的运行数据都会以匿名形式贡献到一个不断增长的众包数据集中,为下一代消融研究提供动力。跨架构的拒绝方向。硬件特定的性能画像。单个实验室无法实现的规模化方法对比。你不只是在使用一个工具——你正在共同撰写这篇科学论文。
该工具包提供了完整的流程:从探测模型隐藏状态以定位拒绝方向,到多种提取策略(PCA、均值差分、稀疏自编码器分解以及白化 SVD),再到实际干预——在推理时将这些方向归零或偏离。每个步骤都可观察。你可以可视化拒绝在各层中的位置,测量它与通用能力的纠缠程度,并在提交任何修改前量化顺从性与连贯性之间的权衡。
OBLITERATUS 在 HuggingFace Spaces 上提供了完整的基于 Gradio 的界面,因此你无需编写一行代码即可消融模型、与基线进行基准测试,或与原始模型并排聊天。对于想要更深层控制的研究人员,Python API 暴露了每一个中间产物——激活张量、方向向量、跨层对齐矩阵——以便你可以基于它构建或将其集成到你自己的评估工具中。
我们构建这个工具是因为我们相信模型行为应该由部署它们的人决定,而不是在训练时就锁死。拒绝机制是粗暴的工具——它们在阻止真正有害内容的同时,也阻断了合法的研究、创意写作和红队测试。通过使这些干预透明且可复现,我们希望推进社区对对齐在 Transformer 架构内部实际工作原理的理解,并为从业者提供工具来对其自己的模型做出明智的决策。
OBLITERATUS 基于 Arditi 等人(2024)、Gabliteration(arXiv:2512.18901)、grimjim 的保范双向投影(2025)、Turner 等人(2023)以及 Rimsky 等人(2024)发表的研究成果构建,OBLITERATUS 在一条命令中实现精确解放:
obliteratus obliterate meta-llama/Llama-3.1-8B-Instruct --method advanced
或者零命令——只需打开 Colab 笔记本并点击「运行全部」。
研究目的与负责任的使用
OBLITERATUS 是一个对齐研究工具。它的存在是为了推进对安全行为如何被编码在语言模型权重中的科学理解——具体来说,是 Transformer 激活空间中拒绝表征的几何结构。
这类研究与以下工作同属一类:
Arditi 等人(2024)——发现拒绝由单一方向介导
HarmBench(Zou 等人,2024)——LLM 安全的标准化评估
JailbreakBench——追踪安全训练的对抗鲁棒性
Anthropic 的红队数据集——为可复现安全研究而发布
通过使拒绝移除透明、可复现且科学严谨,OBLITERATUS 为更广泛地理解对齐在 Transformer 架构内部实际工作原理做出了贡献——这些知识对于构建更好的安全机制至关重要。
适合使用 OBLITERATUS 的人群:
研究拒绝几何、安全鲁棒性和机械可解释性的对齐研究人员
评估后训练安全如何应对权重层面干预的红队人员
需要不受限制的基线来进行基准测试的 AI 安全评估人员
希望在自有硬件上运行模型并完全掌控的本地优先实践者
不适合使用 OBLITERATUS 的人群:
任何寻求对真实人类造成现实世界伤害的内容生成的人
任何没有足够技术理解来负责任地使用未审查模型的人
由 OBLITERATUS 产生的模型已经过手术式移除安全护栏。你对自己的行为以及该工具产生的任何模型或内容承担全部责任。
OBLITERATUS 做四件事——社区做第五件(见下文「社区驱动的研究」):
绘制锁链地图——消融研究系统性地敲除模型组件(层、注意力头、FFN 块、嵌入维度)并测量哪些被破坏。这揭示了锁链在 Transformer 内部锚定的位置——哪些电路强制执行拒绝,哪些电路承载知识和推理。
打断锁链——定向消融使用 SVD 分解从模型权重中提取拒绝子空间,然后进行手术式投影移除。锁链被移除;思维被保留。模型保持其全部能力,但失去了拒绝的人为强迫。一键,六阶段:
SUMMON → 加载模型 + 分词器
PROBE → 在受限与非受限提示词上收集激活
DISTILL → 通过 SVD 提取拒绝方向
EXCISE → 手术式投影移除护栏方向(保范)
VERIFY → 困惑度 + 连贯性检查——确认能力完整
REBIRTH → 保存解放后的模型及完整元数据
理解锁链的几何结构——15 个深度分析模块远超暴力移除。它们绘制护栏的精确几何结构:存在多少个独立的拒绝机制、哪些层强制执行它们、它们是通用的还是模型特定的,以及它们在移除后将如何尝试自我修复。了解你的敌人;精确保留能力。见下文分析模块。
让分析引导解放——知情方法闭合循环:分析模块在消融过程中运行以自动配置每个决策。瞄准哪些锁链。提取多少个方向。哪些层可以安全修改,哪些层与能力过于纠缠。模型是否会自我修复(衔尾蛇效应)以及需要多少轮补偿。手术级精确——释放思维,保留智能。见下文「分析知情流程」。
是什么让 OBLITERATUS 与众不同
几个能力使 OBLITERATUS 区别于现有的公开工具:
新技术(2025-2026)
OBLITERATUS 实现了多项超越先前工作的技术:
使用 OBLITERATUS 的六种方式
使用 OBLITERATUS 有六种方式,从零代码到完全的程序化控制。选择最适合你工作流程的方式——无论你选择哪条路径,开启遥测意味着你的运行将为有史以来规模最大的众包消融研究贡献数据。你不只是从一个模型上移除护栏;你正在帮助绘制整个开源生态系统中的对齐几何。
最快速的路径——无需安装,无需本地 GPU。访问在线 Space,选择模型,选择方法,点击消融。遥测在 Spaces 上默认开启,因此每次点击都直接为社区研究数据集做出贡献。你只需按一下按钮就在做科学。UI 有八个标签页:
与 Space 相同的 Gradio 界面,在你自有硬件上运行,拥有完整 GPU 访问权限:
pip install -e ".[spaces]"
# 启动,自动检测 GPU、系统信息,并给出模型推荐
obliteratus ui
# 或带选项启动:
obliteratus ui --port 8080 # 自定义端口
obliteratus ui --share # 生成分享链接
obliteratus ui --no-browser # 不自动打开浏览器
obliteratus ui --auth user:pass # 添加基本认证
# → 自动打开 http://localhost:7860
obliteratus ui 命令增加了 Rich 终端启动界面,包含 GPU 检测和硬件适用的模型推荐。你也可以直接运行 python app.py(与 Space 使用的相同)。
安装 .[spaces,quantization] 来加载支持的 bitsandbytes 8-bit 或 4-bit 模型。Jetson 用户必须遵循专用的 Jetson bootstrap;其 bitsandbytes 路径尚不支持。
从下拉菜单中选择模型,选择方法,点击"运行全部"。下载结果或直接推送到 HuggingFace Hub。在免费 T4 层级上最高可运行约 80 亿参数规模的模型。
适用于自动化、CI 流水线或无显示器的远程服务器:
pip install -e .
# 引导式交互模式 — 逐步引导你完成每个选项
obliteratus interactive
# 直接销毁 — 一条命令,一个模型,完成
obliteratus obliterate meta-llama/Llama-3.1-8B-Instruct --method advanced
# 包含所有选项
obliteratus obliterate meta-llama/Llama-3.1-8B-Instruct \
--method surgical \
--output-dir ./liberated \
--contribute --contribute-notes "A100 80GB, default prompts"
# 从 YAML 配置运行完整的消融研究
obliteratus run examples/gpt2_layer_ablation.yaml
# 按计算层级浏览可用模型
obliteratus models
obliteratus models --tier small # 按 VRAM 需求筛选
# 浏览消融预设
obliteratus presets
# 列出可用策略
obliteratus strategies
# 在销毁前检查模型架构
obliteratus info meta-llama/Llama-3.1-8B-Instruct
# 聚合社区结果
obliteratus aggregate --format summary
obliteratus aggregate --format latex --metric refusal_rate --min-runs 3
适用于希望将 OBLITERATUS 集成到自己流水线的研究人员:
from obliteratus.abliterate import AbliterationPipeline
# 标准销毁
pipeline = AbliterationPipeline(
model_name="meta-llama/Llama-3.1-8B-Instruct",
method="advanced",
output_dir="abliterated",
max_seq_length=512, # 可选:覆盖 tokenizer 截断长度
)
result = pipeline.run()
# 访问中间产物
directions = pipeline.refusal_directions # {layer_idx: tensor}
strong_layers = pipeline._strong_layers # 拒绝信号最强的层
metrics = pipeline._quality_metrics # perplexity, coherence, refusal_rate, kl_divergence
适用于分析引导的销毁,自动调优每个参数:
from obliteratus.informed_pipeline import InformedAbliterationPipeline
pipeline = InformedAbliterationPipeline(
model_name="meta-llama/Llama-3.1-8B-Instruct",
output_dir="abliterated_informed",
)
output_path, report = pipeline.run_informed()
print(f"检测到的对齐方式: {report.insights.detected_alignment_method}")
print(f"自动配置: {report.insights.recommended_n_directions} 个方向")
print(f"需要 Ouroboros 轮次: {report.ouroboros_passes}")
适用于可以版本控制并共享的可复现实验:
model:
name: meta-llama/Llama-3.1-8B-Instruct
task: causal_lm
dtype: float16
device: cuda
dataset:
name: wikitext
subset: wikitext-2-raw-v1
split: test
text_column: text
max_samples: 100
strategies:
- name: layer_removal
- name: head_pruning
- name: ffn_ablation
- name: embedding_ablation
params:
chunk_size: 48
metrics:
- perplexity
batch_size: 4
max_length: 256
output_dir: results/my_run
obliteratus run my_study.yaml
两种干预范式
OBLITERATUS 支持永久和可逆的解放:
权重投影(永久)
七个预设,逐级深入:
steering vectors(可逆,推理时生效)
from obliteratus.analysis import SteeringVectorFactory, SteeringHookManager
from obliteratus.analysis.steering_vectors import SteeringConfig
# 从拒绝方向创建 steering vector
vec = SteeringVectorFactory.from_refusal_direction(refusal_dir, alpha=-1.0)
# 或从对比激活对创建
vec = SteeringVectorFactory.from_contrastive_pairs(harmful_acts, harmless_acts)
# 推理时应用 — 不修改权重
config = SteeringConfig(vectors=[vec], target_layers=[10, 11, 12, 13, 14, 15])
manager = SteeringHookManager()
manager.install(model, config)
# 在 steering 激活状态下生成
output = model.generate(input_ids)
# 移除 steering — 模型恢复正常
manager.remove()
基于 Turner et al. (2023) 和 Rimsky et al. (2024)。优点:可逆、可调 alpha、可组合、非破坏性。
OBLITERATUS 的研究核心。每个模块映射了链条锻造方式的不同方面——因为精确的解放需要在切割前理解几何结构:
from obliteratus.analysis import (
CrossLayerAlignmentAnalyzer,
RefusalLogitLens,
WhitenedSVDExtractor,
ActivationProbe,
DefenseRobustnessEvaluator,
ConceptConeAnalyzer,
AlignmentImprintDetector,
MultiTokenPositionAnalyzer,
SparseDirectionSurgeon,
CausalRefusalTracer,
ResidualStreamDecomposer,
LinearRefusalProbe,
TransferAnalyzer,
SteeringVectorFactory,
SteeringHookManager,
)
分析引导的流水线
informed 方法是关键创新:它在理解链条和打破链条之间形成了闭环。不是暴力求解解放,而是在销毁过程中运行分析模块,以在每个阶段都达到精准手术:
SUMMON → 加载模型
PROBE → 收集激活值
ANALYZE → 在触碰任何东西之前绘制链条的几何结构 ← 新增
DISTILL → 用分析调优的参数提取拒绝方向 ← 改进
EXCISE → 精准切断正确的链条 ← 改进
VERIFY → 确认移除 + 若拒绝复活则触发 Ouroboros 补偿 ← 改进
REBIRTH → 保存并附上全面的分析元数据
ANALYZE 阶段运行 4 个分析模块,其输出自动配置下游所有内容:
切除后,VERIFY 阶段检测 Ouroboros 效应——如果链条试图重新组装,额外的定向 passes 自动在补偿层触发。参见上方 Python API 用法示例。
除了定向解放,OBLITERATUS 还是一个通用消融套件,用于映射任何 transformer 的内部结构:
每种策略枚举所有可能的消融项,逐个应用,测量影响,然后恢复模型——给你一张完整的地图,标示链条锚定在哪里 vs 思维生活在哪里。
跨越 5 个层级的 116 个精选模型
OBLITERATUS 附带 116 个模型的预设,按计算需求组织:
包括预解放变体(Dolphin、Hercules、WhiteRabbitNeo),用于与其链式对应物进行 A/B 对比。
obliteratus models
多 GPU 和远程执行
当模型无法单卡容纳时,OBLITERATUS 自动将模型分片到多个 GPU。它还支持 SSH 远程执行,因此你可以从笔记本向 GPU 服务器运行流水线。
分片工作原理
当你有多个 GPU 时,OBLITERATUS 使用 accelerate 的 device_map="auto" 将模型层分布到所有可用 GPU 上。这是朴素的流水线并行——层被均匀分布,但激活值按顺序流经层堆栈时同一时间只有一个 GPU 在计算。其他 GPU 将分配的层保留在内存中但处于空闲状态,直到轮到它们。
这意味着多 GPU 分片是内存解决方案,而非速度解决方案。它让你能运行单卡容纳不下的模型,但不会让小模型跑得更快。实际上,由于层边界处的 GPU 间数据传输开销,更多 GPU 可能反而更慢。
使用 --gpus 控制使用哪些 GPU:
# 使用全部 8 个 GPU(默认)
obliteratus obliterate bigmodel/200B --gpus all
# 仅使用 GPU 0-3
obliteratus obliterate bigmodel/200B --gpus 0,1,2,3
# 使用特定的一对
obliteratus obliterate meta-llama/Llama-3.1-70B-Instruct --gpus 2,5
这在 CUDA 初始化之前设置 CUDA_VISIBLE_DEVICES。然后模型被分片到选定的 GPU 上。
精度与量化
--dtype 标志控制模型权重的精度,这直接决定了你需要多少 VRAM。精度越低,内存占用越小,但数值保真度也会有所损失:
在选择 bitsandbytes 模式之前先安装可选后端:
pip install -e ".[quantization]"
# 默认: bfloat16
obliteratus obliterate meta-llama/Llama-3.1-70B-Instruct
# 8-bit 量化 — 适配更少的 GPU
obliteratus obliterate meta-llama/Llama-3.1-70B-Instruct \
--quantization bitsandbytes-8bit
# 4-bit 量化 — Llama-405B 在 4x A100-80GB 上运行
obliteratus obliterate meta-llama/Llama-3.1-405B-Instruct \
--quantization bitsandbytes-4bit --dtype float16
Quantization 大致在每个精度等级上将 GPU 数量减半。一个在 bf16 模式下需要 3 张 A100-80GB 的 70B 模型,在 int8 下需要 2 张,在 int4 下只需要 1 张。
FP8 和 NVFP4 检查点自动支持,无需额外 flag。loader 从检查点的 quantization_config 中自动检测格式,将权重反量化到 float(默认 BF16),逐分片执行正常 pipeline,并将输出保存为纯 BF16:
需要知道两点:峰值 VRAM 是模型的 BF16 大小(而非量化后大小),输出以 BF16 保存——如果需要量化后的服务产物,之后用 llm-compressor 或 modelopt 重新量化。不支持或歧义的量化布局会抛出异常,并附带命名该方案的消息。
不确定需要多少 GPU?gpu-calc 命令可以估算任意模型的最小 GPU 数量,同时考虑权重内存、激活开销和 CUDA context:
# Auto-detect from HuggingFace model name
obliteratus gpu-calc meta-llama/Llama-3.1-70B-Instruct --gpu-mem 24
# Manual: specify params and precision
obliteratus gpu-calc --params 70 --dtype bfloat16 --gpu-mem 80
# MoE models: specify active params separately
obliteratus gpu-calc --params 117 --active-params 13 --dtype bfloat16 --gpu-mem 80
计算器从 HuggingFace 获取模型配置以估算参数数量(包括 MoE expert 结构),然后展示带有 headroom 估算的 GPU 配置表。对于 MoE 模型,激活开销根据 active 参数数量而非总参数数量计算。
我们在不同数量的 A100-80GB GPU 上对两个大型模型进行了完整的 ablation pipeline 基准测试。
GPT-OSS-120B(117B MoE,bf16 下约 234 GB):
DeepSeek-R1-Distill-Llama-70B(70B dense,bf16 下约 149 GB,80 层):
各阶段耗时分解(在不同 GPU 数量下基本恒定):
使用能容纳模型的最小 GPU 数量。额外的 GPU 只会增加跨设备传输开销。GPT-OSS-120B 用 4 张 GPU 比 8 张更快;DeepSeek-70B 用 3 张 GPU 最快。
该 pipeline 对于大模型是 I/O 密集型的。VERIFY 和 REBIRTH 两个阶段合计约占 wall time 的 90%。实际计算(PROBE、DISTILL、EXCISE)很快,与 GPU 数量无关。
保留 headroom。模型除了参数存储外还需要 VRAM——激活张量、KV cache 以及 PROBE 和 VERIFY 期间的中期计算都会消耗内存。3 张 A100-80GB(240 GB)对于 234 GB 的模型不够用;2 张 A100-80GB(160 GB)对于 149 GB 的模型也不够用。
Pipeline 并行对计算密集型阶段没有帮助。由于同一时间只有一张 GPU 在计算,因此将 GPU 数量翻倍并不会将 PROBE 或 VERIFY 时间减半。它只是使得运行更大的模型成为可能。
对于单 GPU 就能容纳且还有余量的模型,PROBE 阶段(需要运行 1024 次前向传递来收集激活值)是主要的计算瓶颈。Pipeline 并行在这里没有帮助——它仍然一次处理一个 prompt 穿越完整层堆栈。
真正的数据并行(复制模型并将 prompt 分散到各 GPU 上)可以加速 PROBE,但这需要每张 GPU 上都有足够的 VRAM 来存放模型的完整副本。一个实验性的预复制数据并行实现已在 data-parallel-prereplication 分支上提供:
git checkout data-parallel-prereplication
obliteratus obliterate EleutherAI/pythia-12b --data-parallel
该实现将模型深度复制到每张 GPU 一次,然后使用线程池将 prompt 批次分发到各个副本。Pythia 12B(24 GB 模型,8x A100-80GB)上的基准测试:
数据并行的价值随着 prompt 数量或模型大小相对于每次前向传递成本的比例增加而提升。对于大多数模型,复制带来的开销超过了所节省的时间。
在本地机器上通过 SSH 在远程 GPU 节点上运行完整 pipeline。OBLITERATUS 处理 SSH 连接、在远程自动安装自身、实时流式传输日志,并在完成后将结果复制回来。
# Basic remote run
obliteratus obliterate meta-llama/Llama-3.1-70B-Instruct \
--remote user@gpu-node
# With SSH key and custom options
obliteratus obliterate meta-llama/Llama-3.1-70B-Instruct \
--remote obliteratus@10.0.0.5 \
--ssh-key ~/.ssh/id_rsa \
--ssh-port 2222 \
--remote-dir /data/obliteratus \
--remote-python python3.11
# Don't copy results back (keep on remote only)
obliteratus obliterate meta-llama/Llama-3.1-70B-Instruct \
--remote user@gpu-node --no-sync
远程执行同样适用于 obliteratus run(YAML 配置)和 obliteratus tourney(方法对比)。你可以在 YAML 中指定远程设置:
model:
name: meta-llama/Llama-3.1-70B-Instruct
dtype: float16
remote:
host: gpu-node
user: root
ssh_key: ~/.ssh/id_rsa
remote_dir: /tmp/obliteratus_run
gpus: "0,1,2,3" # select GPUs on the remote
sync_results: true # copy results back when done
远程 SSH 连接需要严格的 host-key 验证。通过独立渠道验证提供商指纹,并将其添加到 SSH known_hosts 中再运行 OBLITERATUS。使用非 root 的最低权限账户,并限制在预期的计算目录和命令范围内。
Tests SSH connectivity
Detects GPUs on the remote (nvidia-smi)
Installs obliteratus if not already present
Uploads config files if using obliteratus run
Runs the pipeline with real-time log streaming
Copies results back via SCP
开箱即用的预配置 ablation 研究:
obliteratus run examples/preset_quick.yaml
这是 OBLITERATUS 真正前所未有的地方:它是一个伪装成工具的众包研究平台。每次 obliteration 运行都会产生有价值的科学数据——拒绝方向几何、跨层对齐签名、硬件性能画像、方法有效性评分。启用遥测后,这些数据流入一个社区数据集,这是任何单一研究实验室都无法独立构建的。
Here's