自然语言驱动的 Transformer 可视化解释器:基础设计

自然语言驱动的 Transformer 可视化解释器,是一个面向初学者的交互式模型理解工具:复用 poloclub/transformer-explainer 这类教学式前端范式,让用户用自然语言提问,并在受约束的解释框架内查看真实模型运行产生的 token、attention、logits、layer-wise prediction。

它不是「任意模型万能解释器」,而是:

在有限模型家族、有限解释任务、固定可视化组件和真实模型数据约束下,帮助小白理解 Transformer 内部计算过程的 AI-assisted model explainer

为什么不做成万能解释器

现有工具各有边界:

| 工具 | 强项 | 不足 | | --- | --- | --- | | Netron | 通用结构图 | 不解释机制 | | torchview | 计算图与 shape | 偏工程,不适合小白 | | BertViz | attention 可视化 | 覆盖面窄 | | TransformerLens | 机制解释基础设施 | 偏研究代码 | | CircuitsVis | 可视化组件 | 不是完整产品 |

更合理的方向是收窄范围:

  1. 先支持 decoder-only Transformer 小模型
  2. 用真实 forward pass 采集解释数据
  3. 用固定 schema 约束自然语言规划
  4. 用固定前端组件渲染
  5. 让 LLM 只负责把数据翻译成小白能懂的文案

这是 Transformer 可视化 产品化的关键纪律:LLM 可以组织解释,但不能发明证据。

目标与非目标

第一阶段目标

  • 中英文自然语言提问
  • 受约束 explanation plan
  • 真实模型数据驱动
  • Transformer Explainer 风格前端
  • 面向初学者的解释语言
  • 允许人工干预:切换 layer / head / token,高级模式编辑 plan

非目标

  • 任意深度学习模型
  • 自动生成任意 React 页面
  • 把 attention 说成完整因果解释
  • 默认支持 7B/14B 大模型浏览器端推理
  • 完整 mechanistic interpretability research platform
  • 让 LLM 编造权重语义或 neuron 语义

用户与典型问题

主要用户:本科生 / 研究生、课堂演示者、AI 可视化与可解释方向的研究者。

典型问题:

1
这个模型接下来会预测什么?
2
为什么它预测 Paris?
3
第 5 层在看什么?
4
某个 token 的概率是怎么变化的?
5
MLP 和 attention 有什么区别?

系统不需要回答所有开放问题。无法归类时,应明确 unsupported,并给出可问示例。

产品形态

1
用户输入 prompt + 自然语言问题
2
3
LLM Planner → 受约束 Explanation Plan
4
5
后端运行模型并采集真实数据
6
7
LLM Explainer 基于真实 JSON 生成文案
8
9
前端用固定组件渲染
10
11
用户追问 / 切换 layer·head·token / 编辑 plan

页面大致分三块:Prompt 输入、可视化画布、自然语言解释面板;底部是 layer / head / token / plan JSON 控制。

三种模式:

| 模式 | 特点 | | --- | --- | | 初学者 | 隐藏复杂参数,类比解释 | | 进阶 | 暴露 layer/head/token 与更多数值 | | 研究者 | 暴露 plan JSON、原始矩阵、导出数据 |

约束设计

模型家族

第一阶段只支持 decoder-only Transformer。推荐:

  • sshleifer/tiny-gpt2
  • distilgpt2
  • gpt2
  • EleutherAI/pythia-70m

原因:与 transformer-explainer 范式匹配、可本地运行、生态成熟、便于采集 attention / hidden states / logits。

Intent 与 Views

1
type ExplainIntent =
2
| 'overview_model'
3
| 'explain_tokenization'
4
| 'explain_attention'
5
| 'explain_next_token_prediction'
6
| 'compare_token_probabilities'
7
| 'inspect_layer'
8
| 'inspect_head'
9
| 'explain_mlp_vs_attention'
10
| 'unsupported';
11
12
type ExplainView =
13
| 'model_overview'
14
| 'tokenization'
15
| 'embedding_flow'
16
| 'layer_stack'
17
| 'attention_matrix'
18
| 'attention_head_view'
19
| 'mlp_block'
20
| 'residual_stream'
21
| 'logit_lens'
22
| 'top_token_probs';

LLM 不能直接生成 UI,只能选择固定 views。每个 view 对应固定数据 schema 与固定组件。这套约束接近 状态机护栏:开放输入,封闭动作空间。

数据 Schema 精简版

1
interface ExplainRequest {
2
modelId: string;
3
prompt: string;
4
question: string;
5
level: 'beginner' | 'intermediate' | 'researcher';
6
locale: 'zh-CN' | 'en-US';
7
options?: { targetToken?: string; layer?: number; head?: number; topK?: number };
8
}
9
10
interface ExplanationPlan {
11
intent: ExplainIntent;
12
modelFamily: 'decoder_only_transformer';
13
views: ExplainView[];
14
focus?: { tokenIndex?: number; tokenText?: string; layer?: number; head?: number };
15
level: 'beginner' | 'intermediate' | 'researcher';
16
unsupportedReason?: string;
17
}
18
19
interface ModelRunData {
20
model: { id: string; family: 'decoder_only_transformer'; layers: number; heads: number };
21
input: { prompt: string; tokens: { index: number; text: string; tokenId: number }[] };
22
output: { nextTokenTopK: { token: string; probability: number; logit: number }[] };
23
attention?: AttentionViewData;
24
logitLens?: LogitLensData;
25
}

Explainer 输出必须带:summary、steps(绑定 view + evidenceFields)、caveats、followUpQuestions。

后端与前端

推荐后端:Python FastAPI + HuggingFace / TransformerLens + Pydantic + LLM planner/explainer。

核心 API:POST /api/explain

Planner 规则:

  • 只能输出 JSON
  • intent / views 必须来自允许列表
  • 超范围就 unsupported
  • 禁止生成 UI 代码与不存在的分析字段

Explainer 规则:

  • 只能依据给定 JSON 解释
  • 禁止声称模型「理解 / 知道 / 认为」
  • 使用「倾向于预测」「该层提高了某 token 的 logit」等措辞
  • 必须提醒:attention 不是完整因果解释

前端路线:

  1. Fork 改造 transformer-explainer:继承视觉与交互
  2. 独立项目复刻教学范式:架构更自由

公开设计建议:独立项目优先;若给上游贡献,先做 i18n、文案配置化、schema 文档这类小 PR。

核心组件:TokenStripLayerStackAttentionMatrixLogitLensChartTopTokenProbabilityBarsExplanationPanelPlanEditor

MVP

必须有:

  1. 支持 gpt2distilgpt2
  2. prompt + 自然语言问题
  3. Planner 输出结构化 plan
  4. 真实 token / top-k / attention / logit lens
  5. 前端展示 tokenization、attention head、top token probs、logit lens

刻意不做:任意模型上传、自动生成页面、大模型浏览器端默认路径、无证据的自由解释。

一句话结论

自然语言可以降低入门门槛,但不能成为「万能解释权」。先定义模型家族、intent、view family 与真实数据契约,再让 LLM 当 planner / narrator。这样做出的 可视分析 工具,才既适合教学,也经得起追问。

延伸阅读

  • Polo Club Transformer Explainer
  • Polo Club 风格模型解释器选题清单
  • TransformerLens 文档

Liked this note? Share it on Twitter / X, or browse more writing from the home page. Feedback and pointers welcome via @qianyuhe.

Thanks for reading.

– 千羽鹤