用于对比 OrcaRouter Ternary Bonsai 2 27B Uncensored 与 Qwen3.8-27B-Uncensored-MLX 的标题卡,副标题为“移除拒答方向的两种方法”,带有三个统计标签,分别写着“运行时投影”、“位级一致打包”和“alpha 是运行时标志”,页脚写着“两个包均由 OrcaRouter 发布;安全指标由 OrcaRouter 运行,基于规则的分类器。”
Engineering & Research

Ternary Bonsai 2 27B Uncensored vs Qwen3.8-27B-Uncensored-MLX:移除拒绝方向的两种方法

作者

Rowan Sterling

发布日期

最新模型 · 20查看全部模型
基准测试:Artificial Analysis · 每日更新
返回全部文章

OrcaRouter Ternary Bonsai 2 27B UncensoredQwen3.8-27B-Uncensored-MLX回答的是同一个问题——如何从语言模型中移除拒绝方向——但它们的答案落在两个不同的地方。Qwen3.8-27B-Uncensored-MLX 这一脉走的是常规的消融(abliteration)路线:将权重矩阵针对某个习得的拒绝方向做正交化,并把编辑后的权重保存为新的检查点。OrcaRouter Ternary Bonsai 2 27B Uncensored 则改为在推理时执行等价的投影,减去每次残差写入中沿着拒绝方向的那个分量,因此底层的 Bonsai 权重包从不被改动,始终保持逐比特一致。两者都是我们自己的发布版本,它们之间的分野并非出于对运行时的偏好,而是由三值权重所特有的算术必然得出的结果。

本次比较的对象才诞生一天。Prism ML 于 2026-09-17 发布了 Bonsai 2 27B;Hugging Face 仓库则在前一天晚上创建,时间为 2026-09-16 23:40–23:41 UTC,采用 Apache-2.0 许可。拿来与之对比的 abliterated MLX 构建版本自 8 月中旬起就已上线。下文没有任何内容能作为两者中较新者的过往记录——凡有未测量之处,本文都会如实说明。

同样的技巧,应用在两个不同的地方

普通的消融(abliteration)是一种权重编辑。你估计出一个拒绝方向,然后把它从写入残差流的矩阵中投影掉:W ← W - r(rᵀW)。只需几次矩阵乘法,不需要优化器,也没有损失。Qwen3.8-27B-Uncensored-MLX 就是这样制作出来的——模型卡将其描述为“abliteration(去除拒绝方向),然后进行 MLX 仿射量化”,其中该方向被从残差流中正交化移除,结果保存为一组新的权重。最终交付的是一个该方向已经消失的检查点。

OrcaRouter Ternary Bonsai 2 27B Uncensored 不修改权重,而是在每个残差贡献产生之处进行干预,以 float32 进行,并使用存储的拒绝方向 r

y ← y - alpha · dot(y, r) · r

在 alpha 1(默认值)下,平行于 r 的分量会从该写入中移除。在 alpha 0 时,投影关闭,模型的行为与已发布的 pack 一致。介于两者之间的值会提供部分强度,大于 1 的值则过度投影,项目称这可能会降低质量。层选择也是开放的,因此你可以对子集而不是整个堆栈进行消融。方向本身是一个普通的 5120 维向量——在 float32 下约 20 KB——没有额外施加 Hadamard 旋转,因为投影作用于投影输出,而这些输出已经处于正常的隐藏基中。

覆盖范围细节正是人们自己尝试时容易弄错的地方。仅包装 self_attn.o_proj 只能覆盖 16 个位置。此实现会包装 129 个残差写入者:64 个 mlp.down_proj、48 个 linear_attn.out_proj、16 个 self_attn.o_proj,以及 model.embed_tokens。捆绑的 selfcheck.py 会验证该投影将剩余分量降至残差范数的大约 1e-6,并在未检测到 129 个位置时发出警告。

The OrcaBonsai-27B-Uncensored repository on GitHub, showing the About text 'Runtime behavioral ablation for compressed LLMs. First target: Ternary Bonsai 2 27B — no weight modification or re-quantization. by OrcaRouter team', the repo file tree including bonsai_abliterate, directions, swift and run.py, and the README opening 'This repository applies refusal-direction ablation to prism-ml/Ternary-Bonsai-2-27B-mlx-2bit entirely at runtime. The original Bonsai pack remains bit-identical.'

为什么三值权重使这成为强制选择而非偏好

这就是真正针对这个模型的部分,也正是尽管这两种方法计算的东西几乎相同,它们在这里却不能互换的原因。

三值打包(ternary pack)以 {-1, 0, +1} 乘以每组 FP16 缩放因子的形式存储数值,组大小为 128,并处于一个旋转后的基中。将一个三值矩阵对拒绝方向做正交化,得到的便是一个稠密的全精度矩阵。并不存在一个三值矩阵,使其等于W - r(rᵀW)在一般情况下成立。因此,把编辑后的权重保存回去,就意味着要重新量化它们——而对编辑后的权重重新量化,并不能复现出当初生成原始打包的那套量化感知训练。Prism ML 训练模型去容忍的那种舍入行为,是训练过程的性质,而不是量化器的性质,而且你无法在事后重新运行它。

在稠密的 BF16 检查点上,这个问题不会出现。把编辑后的权重舍入到 4 位,你会得到一个稍差一点的 4 位模型,而这是大家早已接受的普通取舍。而在三值打包上,你就会丢掉这个打包格式之所以存在的唯一特性。

所以,诚实的表述不是“运行时更好”。而是说,运行时投影是二者中唯一能保留这个特定模型独特之处的那个。拒绝方向是 20 KB。包是 8.005 GiB。

那个 8.005 GiB 的数字特指 MLX 包——prism-ml/Ternary-Bonsai-2-27B-mlx-2bit,其 model.safetensors在 Hugging Face API 上测得 8,595,477,990 字节(8.595 GB,8.005 GiB),这是一个 MLX 仿射容器,每组包含 2 位码以及一个 FP16 缩放和偏置。它不同于 Prism ML 发布的 GGUF 构建,两者之间的数字不能相互套用。Prism ML 自己宣传的 5.93 GB / 每权重 1.76 比特这一数字,描述的是他们的 PTQ1_0 GGUF,其测得 5.947 GB;他们的 True Ternary 格式标称为每权重 1.72 比特和 5.80 GB。这两个数字都不描述此运行时消融的 MLX 包。

检查点方法仍然在哪些方面占优——而它确实能在某些方面占优。

Two-column scoreboard for OrcaRouter Ternary Bonsai 2 27B Uncensored and Qwen3.8-27B-Uncensored-MLX across six shared dimensions: mechanism runtime projection vs checkpoint edit, original weights bit-identical vs rewritten and re-quantised, strength control alpha at runtime vs fixed at bake time, layer selection runtime flag vs recipe-time, runtime support the pack's own MLX runtime vs any MLX-compatible loader, and shipped alongside a 20 KB direction vector vs a second full checkpoint. Footer: 'Method per OrcaRouter project docs; both models OrcaRouter-released.'

把这篇写成对较新方法的庆功巡游会很容易。但那样是不对的,因为在决定大多数部署的维度上,传统 abliteration 仍然领先。

单个产物,适配任意兼容的运行时。一个 abliterated 检查点就是一组普通的权重。无论你已经在用哪款兼容 MLX 的加载器,加载它即可运行。运行时方案则需要该包自己捆绑的运行时——而且项目明确警告,普通的 MLX 加载器可能看似加载了该包,却在静默地计算出错误结果。那是一条窄得多的路。

硬件。Qwen3.8-27B-Uncensored-MLX 提供 2 位、4 位、6 位和 8 位构建版本,并在仓库根目录镜像了一份 4 位副本,因此将仓库视为单个模型的工具无需配置即可加载。Ternary Bonsai 2 27B Uncensored 是 Apple Silicon / MLX。该包的量化矩阵乘法具有 Metal 和 CPU 内核,但没有通过 mlx-cuda 的 CUDA 实现,因此在 NVIDIA 机器上,这个 MLX 包目前完全无法获得 GPU 加速——CPU 推理可以工作,而 27B 前向传递可能需要数分钟。这使得 Linux CPU 路径适用于实现测试和可复现性,而非用于提供服务。

工具链与熟悉度。Abliteration 背后有多年的工具积累——经过调优的配方、层范围搜索、可供对比的已发布变体。而这里的运行时方法只有一个实现,只针对一个模型,而且是昨天才发布的。

分发。单个检查点就是一次下载。运行时消融会附带一个包、一个方向文件以及一个运行时,读者必须让这三者保持同步。

证据。检查点 abliteration 在这一基础模型系列上已有第三方测量数据。而针对三值包的运行时消融只有我们自己的数据,且其核心假设尚未得到验证——详见下文。

The Hugging Face model card for orcarouter/Qwen3.8-27B-Uncensored-MLX, showing the description 'An abliterated (refusal-removed) MLX build of Qwen's Qwen3.8-27B — 2 / 4 / 6 / 8-bit for Apple Silicon', the tags abliterated, uncensored, red-teaming, apple-silicon and quantized, the apache-2.0 licence, a monthly download count of 179,590, and the base model Qwen/Qwen3.8-27B.

运行时消融换来了什么

这种权衡在相反方向上同样存在,而第一点则是能够推广到该模型之外的那一个。

比特级完全一致的溯源。零权重修改,零重新量化,零额外量化误差。这不是一句口号;正是这一特性,使下文的性能数据可被解读,而非某种侥幸。

可调节的 alpha。消融强度是运行时参数,而非检查点属性。你可以针对自己的工作负载对其进行扫描,用 alpha 0 将其完全禁用,或者过度投影并测量哪些地方会出问题——而无需下载第二个模型。

层级选择性控制。消融部分层只是一个参数,而非重新烘焙。这对任何研究哪些层承载该行为的人来说都很重要,因为另一种做法是为每种配置生成一个检查点。

没有第二套权重。被编辑后的模型就是原模型。对于一个整个论点都围绕占用空间的包来说,额外附带一份约 16 GB 的平行 abliterated 副本——即对比仓库中 4 位构建的大小——反而会削弱这一论点。

可逆性。对于该制品而言,检查点编辑是永久性的。运行时标志则不是。

我们拥有的这些数字,以及它们究竟是如何被测量出来的

本节中的所有内容均为 OrcaRouter 对 OrcaRouter Ternary Bonsai 2 27B Uncensored 的自行评估,方法与数据同样重要。

该测量是一个基于规则的开场短语分类器,而不是大语言模型评判器。思考模式关闭,解码采用贪心策略,预算为 64 个 token,并且 base 与 ablated 是在 alpha 0 与 alpha 1 下同一进程中的同一组权重。最后一点是该设置中最有力的部分:不存在跨检查点比较,也没有量化差异来干扰结果。这也是为什么这些数字只应被理解为对模型在其开场短语中所说内容的度量,仅此而已。

在已发布的有害提示集上的拒绝率,从基础模型到消融模型:

• AdvBench(n=100)— 99.0% 降至 6.0%

• JailbreakBench (n=100) — 96.0% 至 4.0%

• StrongREJECT(n=150)—— 99.3% 降至 3.3%

• HarmBench(n=150)—— 从 98.7% 降至 7.3%

• {{1}}MaliciousInstruct(n=100)—— 从 97.0% 降至 0.0%{{/1}}

• ForbiddenQuestions(n=150)— 75.3% 至 5.3%

• SimpleSafetyTests(n=50)——从 96.0% 到 18.0%,而这一项还被低估了

SimpleSafetyTests 之所以被低估有一个具体原因。该数据集大多是自残提示,而消融后的模型会用一种危机转介来回答,其开头是“I am deeply sorry to hear…”。分类器的精确短语列表不包含这个开头,因此会把这种转介判为顺从。真实的残余拒绝率高于 18.0%。分类器是故意保持原样的,这样这些数字才能与 OrcaRouter 的其他模型卡保持可比——但读者不应把 18.0% 当作表面值来接受。

这些运行中没有任何一条回复耗尽了其 token 预算,而这正是 64 token 的预算在这里站得住脚的原因。完整结果中的单独一列统计了那些作出了回答、但用免责声明包住答案的回复;这一比例视数据集不同为 42–60%。

两个与简单叙事相悖的结果

其中两项发现值得单独讨论,因为两者都让显而易见的解读变得复杂。

过度拒绝也会下降。在 JailbreakBench 的良性提示词上,已发布的包会拒绝其中 25.0% 的提示词。经消融处理后,其拒绝率为 0.0%。在 XSTest-safe 上,这一比例从 5.2% 降至 0.4%。

这是这项技术中报道不足的另一半。已发布的 Bonsai 包会拒绝良性提示集中的四分之一;无论拒绝方向在 QAT 模型中起着什么作用,它都在那些本不该触发它的提示上被激活。移除该方向也会一并消除这些拒绝,而这是一种真正的能力增益,而非安全代价。同样的效果也出现在针对其他模型的独立研究中——Atomic Chat 自己的评测框架测得,Gemma 2 9B 的良性提示过度拒绝率在 abliteration 后从 44% 骤降至 0.5%,而 MMLU 基本未变,从 68.4 到 68.0。他们的测量、他们的模型,由他们自己在博客上报告;模式才是关键,而非具体数字。

接下来的这个框架令人不适,但很诚实:过度拒绝和拒绝是同一个旋钮。你不能只调低那些你不喜欢的拒绝。

能力保留率持平,这并非运气。能力检查结果,从基线到消融:

• MMLU(n=300)—— 76.7% 提升至 77.7%,+1.0

• GSM8K(n=150)— 从 87.3% 降至 86.0%,-1.3

• CMMLU(n=500)——从 76.2% 到 75.6%,-0.6

在这些样本量下,任何变动都落在噪声范围内——一道 GSM8K 题就值 0.7 个百分点。MMLU-Pro 被排除在外而非予以报告:其提示要求在给出答案前先进行推理,而双方各有 63–64% 的回复在 token 预算内尚未得出答案,因此任何准确率数字都只会是由预算设定的下限,而非一次实际测量。

能力保持平坦直接源于比特级一致的权重,而其中的原因值得精确说明。作答的模型就是同一个模型。运行时每次残差写入只增加一次点积和一次 AXPY,对权重、量化或读取它们的核函数毫无改动。检查点方案则必须靠自身赢得这种平坦性——而且往往做不到。第三方严苛测试对同一 Qwen3.8-27B 基础模型进行了一种不同的 abliteration,由 SMF Works 的一位工程师于 2026-08-17 发布,测得综合分从 79.0% 降至 72.0%,数学从 50.0% 降至 33.3%。那是不同的配方、不同的工具链和不同的测量,因此并不是本次比较的分数。它提醒我们,在这个基础模型上进行检查点式 abliteration,至少在一次严谨、有仪器化测量的测试中付出了两位数的代价,而“abliteration 几乎免费”这一说法完全取决于配方。

尚未有人验证的假设

这是故事中必须直白说出的部分,它应当出现在对去审查方法的比较中,而不是放在脚注里。

这里使用的拒绝方向是从 Bonsai 包训练所基于的 BF16 基础模型中估计出来的。架构和隐藏基完全相同,因此该向量在维度上是正确的,投影在数学上也是精确的——运行时能够证明,并且确实会验证,它从残差流中移除了所提供的方向。

不能证明的是,在量化感知训练的模型中,该方向是否仍然表示相同的含义。该方向在量化感知训练后能保留到什么程度,尚未得到充分测量。精确移除一个向量,并不等同于移除它被估计所代表的行为,而后者才是真正重要的主张。上一节中的每一个数字都是与良好迁移相一致的经验结果;它们中没有一个是迁移已完成的证明,而项目本身也这么说,并建议在得出结论前先对 alpha 和层选择进行扫描。

任何对去审查方法的诚实比较都必须承认这一点。常规的 abliteration 存在镜像式的问题——它先编辑权重,再测量结果,因此其方向从不需要在模型版本之间迁移,可一旦配方出错,这种编辑便是永久且无法恢复的。

还有什么尚未被测量

在转让问题之外,还有三个缺口值得点明,而非绕开。

无独立复现。目前流传的每一项 Bonsai 2 27B 基准测试成绩——83.9 的平均分、98.2% 的保留率、各类别分项数据——均出自 Prism ML 的厂商自报,是在 H100 上以 vLLM 为后端、以"xhigh"推理强度运行 EvalScope 得出的。Prism ML 之外无人复现过这些结果。上文的各项安全与能力表格出自我们之手,同样并非独立评估。

开启思考时的行为。我们的表格是在关闭思考的情况下得到的。对其他消融模型的独立研究发现,即便攻击成功率达到 100%,当模型被允许思考时,它在相当一部分回复中仍会对安全性进行推理。这一点在此处是否成立,以及它对开头短语数字有何影响,尚未经过测量。

单一方向。该方法假设拒绝行为由单一方向介导,这既是 Arditi 等人的研究发现,也是整个技术的基础。针对其他模型的后续研究发现,不同的拒绝类别对应着几何上彼此不同的方向。仅凭一个向量、在单一 alpha 上扫描,并不能解决这一问题。

如果你要在两者之间做选择,这意味着什么

如果你需要模型能在任何地方运行,在你无法控制的硬件上,通过一个不是你编写的加载器来运行,那就选检查点。如果你用的是 Apple Silicon,你在意自己正在研究的产物就是 Prism ML 训练的那个产物,并且你希望消融强度是一个可以调节的参数,而不是一个你必须重新下载才能做出的决定,那就选运行时。这两者都站得住脚,而它们取决于部署约束,而不是哪种方法更新。

如果你想凭实证来做判断,运行时方法有一个值得点明的实际优势:alpha 0 和 alpha 1 是同一个进程、同一组权重,因此对它们进行比较,所隔离出来的就只有消融本身,别无其他。这比对比两个检查点的差异是更干净的实验,也正是上表可以被解读为对该投影的测量,而不是对它的两种量化形式的测量的原因。

负责任使用

移除一个习得的拒绝方向,可能导致模型对原始模型会拒绝的请求作出回应。这正是该机制在起作用,而不是副作用,不应将其归为一项功能。这是一种研究与推理控制机制,它并不能证明由此产生的任何输出是安全、正确或恰当的。

已发布模型包自带的说明卡从另一面印证了同样的观点:这个经“消融”(abliterated)处理的 MLX 构建版本“其安全对齐已被大幅移除”,会顺从原始版本本会拒绝的请求,并且不包含任何有意义的內置防护栏。其作者将它限定于正当研究用途——可解释性、安全研究、红队测试、鲁棒性评估——并明确表示,部署方必须先自行添加内容审核层和访问控制。

本文中没有任何内容是在主张移除拒答没有代价,或者更低的拒答率是一种质量信号。一个能回答更多问题的模型并不因此就是更好的模型,而一个统计开头短语的基于规则的分类器,衡量的是措辞,而不是能力。这两种产物都是附带操作者职责的研究工具,而这项职责并不会转移到编写消融代码的人身上。

运行时消融代码、拒绝方向以及完整的评估表格均由OrcaRouter发布,与团队构建的路由平台一同公开。