面向研究人工智能模型内部机制的开发者,TransformerLens 4.4.0 已发布。它将语音识别模型 Whisper 的权重整理成便于分析的形式,并让此前分析时会报错中断的状态空间模型与混合模型,也能逐项查看各部分计算对结果的贡献。

1. 通过桥接分析 Whisper

此次版本于 2026 年 11 月 11 日发布,包含 Whisper 连接适配器、生成功能、权重处理及模型验证。桥接是将原始模型接入分析工具的通道。此次不仅支持连接,还让 Whisper 能使用在分析前转换权重的兼容模式。

兼容模式支持将归一化计算,即统一数值尺度的处理,折叠进权重,并对权重值进行中心化等处理。Whisper 适配器明确了读取音频、将输入转换为内部表示的编码器,与输出语句、将内部表示转换为语句的解码器之间的连接结构,让权重处理器能找到转换对象。

2. 保持转录结果不变的权重处理

据贡献者的变更说明,在每一步都选择得分最高的输出进行转录时,whisper-tiny 和 whisper-large-v3-turbo 的结果均未改变。说明还指出,作为下一输出候选得分的 logits,除权重中心化引入的各位置常数差异外,也与 Hugging Face 实现一致。

开发者通过桥接连接 Whisper 后,可调用 enable_compatibility_mode() 应用这一处理。其用途不是改变模型的回答,而是将产生相同回答的内部计算转换为便于分析的形式。

3. SSM 与混合模型中的残差分解

残差分解可将模型内部累积的计算值拆分为各模块的贡献。状态空间模型(SSM)通过状态值传递历史信息进行计算,混合模型则结合不同的计算结构。这些模型的某些模块采用其他计算代替用于计算信息间关系的注意力,或没有名为 MLP 的多层神经网络。

原有 API 假定每个模块都有注意力和 MLP,因此在分析 Qwen3.5 或 Mamba-2 等模型时会报错。此次修复按照实际模块结构,将替代注意力的计算输出也纳入分量,并在没有 MLP 的模块中省略 MLP 分量。

_, cache = bridge.run_with_cache(tokens)   # e.g. Qwen/Qwen3.5-0.8B
cache.decompose_resid()                    # KeyError: 'blocks.0.hook_attn_out'
cache.stack_head_results()                 # KeyError: 'blocks.0.attn.hook_z'
cache.get_full_resid_decomposition()       # KeyError: 'blocks.0.attn.hook_z'
cache.logit_attrs(cache.decompose_resid(), tokens=...)  # KeyError

这段代码是原文示例,展示了修复前分析失败的位置。修复后,只有含注意力的模块才会提供按头划分的结果,即按注意力计算单元拆分的输出,其他模块的输出则归入其余分量。此次变更着重确保,即使模型结构不同,将分解值相加后仍能还原原始累积值。

4. 精度与适用范围

PR 作者在 CPU 上以单精度浮点格式 fp32 运行实际的 Qwen/Qwen3.5-0.8B,验证了各项之和。下列数值表示在相同环境下,各分解结果之和与原始累积值的接近程度,作者报告各项误差均在相应范围内。

表:Qwen3.5-0.8B 残差分解之和的绝对误差范围

条件:实际 Qwen/Qwen3.5-0.8B,fp32,CPU — PR 作者测量

单位:绝对误差

精度与适用范围
项目误差
decompose_resid 的 49 个分量与最终残差9.5e-7
各头结果与其余分量之和2.1e-7
完整分解与残差流4.3e-6

这些数值展示的不是生成速度,而是将分解结果重新相加时的一致性。可分析的模型范围扩大了,但各模型的分量名称和分类有所不同,因此还需检查现有分析代码是否假定了特定的模块配置。

GraniteMoeHybrid 的混合专家模块采用从多个专家中选择部分专家的结构,由于没有用于放置特定计算分量的 MLP 槽位,残差分解仍会失败。该结构将 MLP 存放在其他位置,其逐神经元扩展,即将分析范围细化到单个神经元的功能,会报出未实现错误。

4.4.0 的核心在于,在同一次发布中实现了经确认可保持输出不变的 Whisper 权重分析,以及超越注意力中心设计的模型分解。