TransformerLens
一个用于生成式语言模型机制解释的库。由Bryce Meyer维护,由Neel Nanda创建
这是一个用于对GPT-2风格语言模型进行机制解释的库。机制解释的目标是对已训练的模型进行逆向工程,从其权重中推导出模型在训练过程中学到的算法。
TransformerLens允许你加载50多种不同的开源语言模型,并向你展示模型的内部激活。你可以缓存模型中的任何内部激活,并添加函数来编辑、移除或替换这些激活,同时模型运行。
快速开始
安装
pip install transformer_lens
使用
import transformer_lens
# 加载一个模型(例如GPT-2 Small)
model = transformer_lens.HookedTransformer.from_pretrained("gpt2-small")
# 运行模型并获取logits和激活
logits, activations = model.run_with_cache("Hello World")
主要教程
案例展示
使用TransformerLens进行的研究:
- 通过机制解释实现Grokking的进展衡量(ICLR Spotlight,2023)作者:Neel Nanda、Lawrence Chan、Tom Lieberum、Jess Smith、Jacob Steinhardt
- 在干草堆中寻找神经元:稀疏探测的案例研究 作者:Wes Gurnee、Neel Nanda、Matthew Pauly、Katherine Harvey、Dmitrii Troitskii、Dimitris Bertsimas
- 面向机制解释的自动化电路发现 作者:Arthur Conmy、Augustine N. Mavor-Parker、Aengus Lynch、Stefan Heimersheim、Adrià Garriga-Alonso
- 事实上,Othello-GPT拥有线性涌现的世界表征 作者:Neel Nanda
- 4层仅注意力transformer中Python文档字符串的电路 作者:Stefan Heimersheim和Jett Janiak
- 通用性的玩具模型(ICML,2023)作者:Bilal Chughtai、Lawrence Chan、Neel Nanda
- N2G:大型语言模型中可解释神经元表征的可扩展量化方法(2023,ICLR Workshop RTML)作者:Alex Foote、Neel Nanda、Esben Kran、Ioannis Konstas、Fazl Barez
- 使用调谐镜头从Transformers中引出潜在预测 作者:Nora Belrose、Zach Furman、Logan Smith、Danny Halawi、Igor Ostrovsky、Lev McKinney、Stella Biderman、Jacob Steinhardt
用户贡献的库实际应用示例:
- 归纳头相变复现:Connor Kissane对上下文学习和归纳头的部分复现
- 决策Transformer可解释性:一组用于训练决策transformers的脚本,使用transformer lens查看中间激活、执行归因和消融。初步工作的报告可以在这里找到。
查看我们的演示文件夹以获取更多TransformerLens实践示例
机制解释入门
机制解释是一个非常年轻和小的领域,存在大量未解决的问题。这意味着既有许多容易解决的问题,入门门槛也较低 - 如果你想提供帮助,请尝试解决其中一个问题!对于"为什么还没有人做这个"的标准回答就是:因为没有足够的人!主要资源:
- 机械可解释性入门指南
- Callum McDougall 的 ARENA 机械可解释性教程。一个全面的机械可解释性实践入门,使用 TransformerLens 编写 - 提供大量可复制的代码片段,并配有练习和解答!值得注意的教程包括:
- 从零开始编写 GPT-2,附带我的视频教程(1 2) - Transformer 的良好入门
- 机械可解释性和 TransformerLens 简介:通过研究归纳头介绍 TransformerLens 和机械可解释性。涵盖了该库的基础概念
- 间接宾语识别:复现了实际应用中的可解释性,涵盖了机械可解释性的标准技术,如直接 logit 归因,激活修补和路径修补
- 机械可解释性论文阅读清单
- 机械可解释性200个具体开放问题
- 全面的机械可解释性解释器:查找所有你将遇到的专业术语和不熟悉的词汇!
- Neel Nanda 的 YouTube 频道:一系列机械可解释性视频内容,包括论文讲解和研究过程讲解
支持与社区
如果你有问题、疑问、功能请求或错误报告,请先搜索现有问题以检查是否已经得到回答,如果没有,请提出新的问题!
你也欢迎加入Slack上的开源机械可解释性社区。请使用 GitHub Issues 讨论与包相关的具体问题,使用 Slack 进行更广泛的讨论,例如支持重要的新用例,或者如果你想对库做出重大贡献并想征求维护者的意见。我们也希望你能在 Slack 上分享你的项目!
:exclamation: HookedSAETransformer 已移除 |
---|
HookedSAE 已在 TransformerLens 2.0 版本中移除。该功能正在移至SAELens。有关此版本的更多信息,请参阅随附的公告,了解新功能及 TransformerLens 的未来发展。
致谢
该库由 Neel Nanda 创建,由 Bryce Meyer 维护。
TransformerLens 的核心功能在很大程度上受到了 Anthropic 出色的 Garcon 工具接口的启发。感谢 Nelson Elhage 和 Chris Olah 构建了 Garcon 并展示了良好基础设施对促进探索性研究的价值!
创建者说明 (Neel Nanda)
我(Neel Nanda)曾在 Anthropic 可解释性团队工作,我编写这个库是因为在离开后尝试进行独立研究时,我对开源工具的现状感到非常沮丧。有很多优秀的基础设施如 HuggingFace 和 DeepSpeed 用于使用或训练模型,但很少有工具可以深入研究它们的内部并逆向工程它们的工作原理。这个库试图解决这个问题,并使即使你不在拥有真正基础设施的行业组织工作,也能轻松进入这个领域!机械可解释性的一个优点是你不需要大型模型或大量计算。有许多重要的开放问题可以在 Colab 笔记本中用小模型解决!
引用
请按以下方式引用本库:
@misc{nanda2022transformerlens,
title = {TransformerLens},
author = {Neel Nanda and Joseph Bloom},
year = {2022},
howpublished = {\url{https://github.com/TransformerLensOrg/TransformerLens}},
}