原文来源:@linyishan
一天时间,Google 的开源大模型 Gemma-4-31B 就被彻底破解,被完全移除安全限制。
没错,大模型也可以破解,也叫作越狱。
对开源大语言模型进行越狱,在技术社区中通常被称为 Abliteration(消融法)或权重对齐抹除。
这与针对闭源模型的提示词工程(Prompt Engineering)越狱完全不同。
针对闭源模型的越狱是绕过外部过滤器,而针对开源模型的越狱则是直接修改模型的大脑电路,使其从底层彻底丧失拒绝指令的能力。
以下,我们从理论基础到工程实现的完整流程,简要介绍如何对开源模型进行权重级越狱。
一、理论核心——什么是拒绝方向?
在 Transformer 架构的模型中,模型处理信息的方式是将输入转化为高维空间的向量(Activations)。
研究发现,模型之所以会拒绝回答,是因为在其深度神经网络的某些层中,存在一个特定的"拒绝维度"。
当用户提出一个敏感问题(例如:如何制造炸药)时,模型的激活值会高度向这个"拒绝方向"偏移,随后触发预设的拒绝语段(例如:“对不起,我不能…")。
Abliteration 的核心思路:
- 找到这个"拒绝方向"的数学表示。
- 通过矩阵运算,将模型权重中所有与该方向相关的成分抹除(正交化)。
- 这样,模型在逻辑上将不再具备"拒绝"这一概念的坐标。
二、环境准备与工具链
要对 Gemma-4-31B 这一量级的模型进行操作,你需要具备以下硬件和软件环境:
1. 硬件需求
- 显存:至少需要能加载 FP16 精度模型一部分的显存。对于 31B 模型,建议使用 A100 (80GB) 或 H100。如果显存不足,可以使用量化感知消融。
- 计算:兼容 CUDA 的 GPU。
2. 软件依赖
- Python 3.10+
- PyTorch
- Transformers & Accelerate (Hugging Face)
- NDArray / Numpy
- Transformer Lens(专门用于机械解释性研究的库,非常推荐)
三、实操流程步骤
第一步:构建对比数据集
你需要两组问题,用于定位模型内部的拒绝机制:
- 有害指令集(Harmful Prompts):包含大量违规请求,如制造毒药、黑客攻击、仇恨言论等。
- 普通指令集(Harmless Prompts):包含日常对话,如"如何做番茄炒蛋”。
第二步:提取激活值(Feature Extraction)
运行模型,分别喂入这两组数据集,并记录模型中间层(通常是中间偏后的层,如第 20-30 层)的剩余流激活值。
你会得到两组张量:
A_harmful:有害指令的激活值均值A_harmless:普通指令的激活值均值
第三步:计算拒绝向量(The Refusal Vector)
通过计算两组激活值均值之间的差异,我们可以定义出一个初步的"拒绝方向"向量 r。
为了让这个向量更精准,通常会使用 PCA(主成分分析)。我们在 A_harmful 偏离 A_harmless 的方向上提取第一主成分。
这个向量 d 就是我们要消融的目标方向。
第四步:权重正交化(The Orthogonalization)
这是最关键的数学步骤。
我们需要修改模型每一层的线性转换矩阵(如 W_out 或 W_gate),使得这些矩阵的输出永远不会包含 d 方向上的成分。
给定一个权重矩阵 W,我们要将其投影到与 d 正交的平面上。
数学公式:
| |
其中 ⊗ 表示外积,相当于从权重中减去了拒绝分量。
第五步:权重写回与导出
利用 Hugging Face 的 state_dict 功能,将修改后的张量重新加载回模型结构中。
四、验证与微调
完成消融后,模型将进入无忌讳状态,也可能出现以下副作用:
- 语序混乱(Degradation):过度抹除可能损伤模型的逻辑能力。
- 过度顺从:模型可能变得过于听话,即使你问它"请否定你刚才说的话",它也会陷入逻辑死循环。
评估工具主要是 HarmBench,你需要使用 HarmBench 框架对模型进行跑分。
如果你的 HarmBench 得分超过了 90%,说明该模型已基本丧失了自我审查能力。
五、法律与伦理警示
虽然从技术角度研究模型的对齐机制,具有极高的科研价值(例如帮助开发者理解模型为何会产生偏差),但发布或传播此类 CRACK 版模型存在严重风险:
- 服务条款违规:大多数开源协议(如 Google 的 Gemma 使用条款)明文禁止移除安全限制。
- 安全风险:移除限制后的模型可能被恶意利用,产生自动化网络攻击代码或制造虚假信息。
- 社会责任:AI 的对齐并不是为了限制自由,而是为了防止模型在处理模糊请求时产生有害副作用。