目录

transformerlens-skill:将 TransformerLens 机制可解释性工作流模块化

项目概览

transformerlens-skillDurararananke/transformerlens_skill)是一个基于 TransformerLens 框架的机制可解释性(Mechanistic Interpretability)工具库。它把激活缓存、因果追踪、归因修补(Attribution Patching)、对数透镜(Logit Lens)和激活 Steering 等常见分析范式封装成了独立模块,研究者可以直接调用而不需要每次从零写 boilerplate。

项目本身由 AI 辅助(Claude Codex)完成,覆盖模型加载、激活修补、因果追踪、对数透镜解码和模型 steering 五个方向,适配 Llama 3、Qwen 3 和 Gemma 3 三个主流开源模型族。


快速信息卡

项目信息
Stars2+
Forks0+
LicenseNOASSERTION
语言Python
最后更新2026-06-13
依赖TransformerLens + PyTorch

学习目标

读完本文后,你应该能够:

  1. 理解机制可解释性的核心概念(激活缓存 / 因果追踪 / 归因修补 / 对数透镜 / 激活 Steering)
  2. 使用 transformerlens-skill 加载模型并缓存激活
  3. 运行激活修补实验定位因果电路
  4. 执行因果追踪分析模型的知识存储位置
  5. 判断 transformerlens-skill 是否适合你的可解释性研究需求

目录

  1. 项目概览
  2. 快速信息卡
  3. 学习目标
  4. 目录
  5. 核心模块
  6. 快速开始
  7. 适用场景
  8. 常见问题与故障排查
  9. 自测题
  10. 进阶路径
  11. 总结

核心模块

nnsight_basics.py — TransformerLens 基础

封装了 TransformerLens 的核心概念:

  • run_with_cache:带缓存的模型前向传播
  • 命名缓存过滤器、精确定位 residual / attention / MLP 激活
  • add_hook 干预接口
  • prepend_bos=True 的批量化分词
  • 反向梯度缓存

activation_patching.py — 因果激活修补

实现了"干净-损坏-修补"(clean-corrupted-patched)范式,用于定位因果电路:

  • Residual stream 修补
  • Attention head hook_z 修补
  • MLP 输出修补
  • 完整 layer-by-position 网格修补
  • 输出 seaborn 热力图可视化

attribution_patching.py — 梯度归因修补

用梯度近似替代穷举修补:grad(clean) * (act_clean - act_corrupted)。在需要遍历大量组件做精确修补的场景下,梯度归因可以大幅减少前向传播次数。

causal_tracing.py — 因果追踪

实现了 Meng 等人 ROME 论文中的因果中介分析(causal mediation analysis)方法:

  • 计算总效应、直接效应和间接效应
  • 执行交换干预(interchange interventions)
  • 在各层和各位置追踪 subject 介导的状态

logit_lens.py — 对数透镜

将中间 residual stream 通过最终的 normalization 和 unembedding 层解码,追踪正确 token 的概率在各层各位置的演化轨迹。

model_steering.py — 激活 Steering 与 Probing

  • 对比 Steering 向量(contrastive steering vectors)
  • 生成时 ActAdd hook
  • 多 hook 干预
  • Attention head 消融
  • sklearn Logistic Regression Probing

快速开始

安装

uv sync

模型加载

from transformerlens_skill.models import load_model

bundle = load_model("llama3", device="cuda")
model, tokenizer, cfg = bundle.model, bundle.tokenizer, bundle.cfg

激活缓存

from transformerlens_skill.nnsight_basics import cache_all_activations, read_core_activations

logits, cache = cache_all_activations(model, "The Eiffel Tower is in")
layer0 = read_core_activations(cache, layer=0)

激活修补

from transformerlens_skill.activation_patching import run_activation_patching_grid

clean = model.to_tokens("The Eiffel Tower is in", prepend_bos=True)
corrupt = model.to_tokens("The Colosseum is in", prepend_bos=True)
paris = tokenizer(" Paris")["input_ids"][0]
rome = tokenizer(" Rome")["input_ids"][0]
grid = run_activation_patching_grid(model, clean, corrupt, paris, rome)

因果追踪

from transformerlens_skill.causal_tracing import compute_direct_effect, trace_important_states

effect = compute_direct_effect(model, clean, corrupt, layer=10, pos=3)
trace = trace_important_states(model, "The Eiffel Tower is located in", subject_tokens=[1, 2, 3])

适用场景

transformerlens-skill 适合以下场景:

  • 研究复现:想快速复现某篇论文中的机制可解释性实验,但不想从零搭框架
  • 对比分析:对比不同模型或不同层在同一个分析任务上的表现差异
  • 特征定位:用因果追踪或激活修补定位"模型在哪里知道某个事实"
  • Steering 实验:在生成时通过激活 steering 引导模型输出特定类型的答案

对于 TransformerLens 框架有基本了解的研究者,这个工具库可以把通常需要几百行 boilerplate 才能跑起来的实验压缩到几十行。


常见问题与故障排查

Q1: 安装时出现依赖冲突怎么办?

A: 建议使用 uv 创建独立虚拟环境:uv venv .venv && source .venv/bin/activate,然后再执行 uv sync

Q2: 模型加载失败提示"model not found"?

A: 检查 load_model 的参数是否正确。支持的模型族为 llama3qwen3gemma3。如果需要其他模型,需要修改 models/load_model.py 中的配置。

Q3: 激活修补结果不明显怎么办?

A: 尝试增大修补范围(增加层数和位置),或切换到 attribution_patching 用梯度归因精确定位。

Q4: 因果追踪内存占用过高?

A: 减少 trace_important_statessubject_tokens 数量,或只在特定层和位置执行追踪。


自测题

  1. transformerlens-skill 不支持以下哪个模型族?

    • A. Llama 3
    • B. Qwen 3
    • C. Gemma 3
    • D. GPT-4
    • 答案:D
  2. 激活修补(Activation Patching)的作用是?

    • A. 加速模型推理
    • B. 定位因果电路
    • C. 优化模型参数
    • D. 压缩模型大小
    • 答案:B
  3. 归因修补(Attribution Patching)相比激活修补的优势是?

    • A. 结果更准确
    • B. 用梯度近似替代穷举,减少前向传播次数
    • C. 支持更多模型
    • D. 不需要缓存激活
    • 答案:B
  4. 对数透镜(Logit Lens)用于观察什么?

    • A. 模型各层各位置的正确 token 概率演化轨迹
    • B. 模型的注意力权重
    • C. 模型的梯度大小
    • D. 模型的训练损失
    • 答案:A
  5. transformerlens-skill 的 License 是什么?

    • A. MIT
    • B. Apache-2.0
    • C. NOASSERTION
    • D. GPL 3.0
    • 答案:C

进阶路径

  1. 基础使用:安装依赖,运行 activation_patching.py 示例,理解干净-损坏-修补范式。
  2. 深入模块:逐个阅读核心模块源码(nnsight_basics.pycausal_tracing.py 等),理解实现细节。
  3. 复现论文:用 transformerlens-skill 复现某篇机制可解释性论文的实验(如 ROME、Causal Abstraction)。
  4. 扩展模型支持:修改 models/load_model.py,添加对新模型族的支持(如 Mistral、Phi-3)。

总结

transformerlens-skill 的价值在于把机制可解释性研究的"基础设施"抽离出来,让研究者更专注于实验设计和结论分析,而不是重复造轮子。项目覆盖了当前主流的分析范式,对 Llama 3 / Qwen 3 / Gemma 3 的支持也保证了在实际模型上的可用性。

链接汇总: