Sudharsanselvaraj/Token-Print · 上手攻略

  • 仓库:Sudharsanselvaraj/Token-Print
  • 链接:https://github.com/Sudharsanselvaraj/Token-Print
  • 分类:AI · LLM 可视化 / 可解释性
  • 作者:Tom
  • 更新:2026-09-14

是什么

Token-Print 是一个交互式 3D 可视化平台,用于实时探索 Transformer 架构内部运作机制:注意力头、RoPE 旋转、残差流、SwiGLU 前馈等组件在真实推理过程中以 WebGL 3D 形式动态呈现。核心理念:其他 LLM 可视化工具只提供静态架构图,或运行在假数据上;Token-Print 则直接挂钩真实模型的前向传播(forward pass),每个数值都追溯到 named_parameters()、真实推理过程或 GGUF 二进制头部。

项目定位介于研究级可解释性工具与教育级演示之间,声称所有数据有明确溯源(Provenance),并通过 CI 强制禁止假数据注入代码。

解决什么问题

  • 注意力机制黑盒:传统方式只能看静态图,无法理解 GQA(分组查询注意力)中 14 个 Q 头如何共享 2 个 KV 组。Token-Print 将这些关系渲染为真实 3D 几何结构。
  • 推理过程不可见:无法观察 token 生成时各层的激活值如何流动。Token-Print 提供 Generation 模式,逐 token 可视化前向传播。
  • 模型结构理解门槛高:RoPE、SwiGLU、RMSNorm 等机制的概念与代码实现之间存在巨大鸿沟。点击任意组件即可获得论文引用(Vaswani et al., Su et al., Shazeer et al., Ainslie et al. 等)。
  • 数据可信度问题:许多"可视化"工具用 Math.random() 填充数据。Token-Print 在 README 明确声明:构建时会触发 CI 失败,禁止任何假数据进入应用代码。

快速安装

前置:Python 3.10+,Node.js 18+,npm

# 后端(加载 Qwen2.5-0.5B-Instruct,Apple MPS / CPU 回退)
cd backend
python3 -m venv .venv --system-site-packages
source .venv/bin/activate
pip install -r requirements.txt
python -m uvicorn app.main:app --app-dir . --port 8000

# 前端
cd frontend
npm install
npm run dev   # → http://localhost:3000

无本地模型文件也可运行(默认通过 HuggingFace 加载 Qwen2.5-0.5B-Instruct)。如需本地 GGUF 推理,额外安装:

pip install -r backend/requirements-gguf.txt

⚠️ 注意:首次启动会下载约 1GB 模型权重,国内网络需配置代理或提前用 huggingface-cli download 缓存。

核心用法

四种可视化模式

模式 用途
Architecture 总览模型结构,3D 展示 GQA、SwiGLU、RoPE 等组件的空间分布
Generation 输入文本,实时观看 token 生成过程中各层激活值
Walkthrough 引导式探索,按论文逻辑逐步拆解 Transformer 组件
Debugger 设置断点,对单层或单算子做激活 ablation

关键 API 端点(后端 :8000)

# 健康检查
GET /health

# 模型架构元数据(张量形状、层数、头数等)
GET /architecture
# 返回示例(Qwen2.5-0.5B-Instruct):
{
  "model": "Qwen/Qwen2.5-0.5B-Instruct",
  "device": "mps",
  "num_layers": 24,
  "num_heads": 14,
  "hidden_size": 896,
  "attn_implementation": "eager",
  "ready": true
}

# 文本前向传播分析(需传 sentence,~40 tokens 上限)
POST /analyze
Body: { "sentence": "The cat sat on the mat." }

# 流式文本生成(WebSocket)
# 客户端首帧:
{ "prompt": "Name one primary color.", "max_new_tokens": 40, "trace": true }
# 服务器按帧返回:op catalog → token frame → top-k logits

模型支持

模型系列 支持情况
Qwen 2.5 ✅ 实时加载(HuggingFace)
Llama 2/3/3.2
Gemma
Mistral / Mixtral
DeepSeek / MoE
GPT-2 / Pythia
本地 .gguf 文件 ✅(拖拽上传,纯客户端解析,无上传)

⚠️ 注意:GGUF 量化推理时,llama.cpp 不暴露逐层激活,Layer 照明在该模式下自动禁用而非用假数据填充。

典型适用场景

  1. 学习 Transformer 机制:通过 Walkthrough 模式,按论文结构逐步理解 Attention、FFN、RoPE 的数学直觉与代码实现的对应关系。
  2. 教授 LLM 可解释性:Architecture 模式的 3D 展示可用于讲座或教程,直观展示 GQA 中 Q 头与 KV 头的几何关系。
  3. 调试模型行为:输入特定提示词,在 Generation 模式观察中间激活异常;Debugger 模式支持激活 ablation。
  4. 验证模型结构:用 /architecture 端点核对开源模型的真实参数量(Qwen2.5-0.5B 报告 494,032,768 参数 = 290 个真实张量的精确求和)。
  5. LLM 工程教育:理解 prefill(完整提示一次处理)vs. decode(逐 token 自回归生成)的计算差异在实际 UI 中的表现。

坑与注意

坑点 说明
首次下载模型慢 Qwen2.5-0.5B-Instruct 约 1GB,HuggingFace 下载可能超时,建议提前用 huggingface-cli download Qwen/Qwen2.5-0.5B-Instruct 缓存
Apple MPS 时序精度有限 层间耗时测量为 wall-clock 真实时间,MPS/CUDA 下无法精确同步,UI 标记为 PROXY · NOT MS,不作为精确性能数据使用
GGUF 量化无逐层激活 llama.cpp 不暴露 per-layer activations,相关可视化功能自动降级,而非显示伪造数据
注意力 ≠ 因果证明 高注意力质量分是线索,不是该 token"必须需要该 token"的证据;README 明确警告不要将注意力权重误读为因果关系
句子长度限制 /analyze 对输入句子有约 40 tokens 上限,超长文本需自行分句后多次调用
CORS 限制 后端 CORS 仅允许 http://localhost:3000,前端开发服务器端口必须为 3000

与同类对比

工具 实时推理 3D 渲染 GGUF 支持 数据溯源
Token-Print ✅ 真实 forward pass ✅ React Three Fiber ✅ Provenance 标签
Transformer Explainer (PMLP) 静态模拟
BERT-Viz 激活可视化 ❌(2D)
Pinn ✅(实验性) 部分
Netron ❌(仅结构)

核心差异:Token-Print 是目前唯一将实时真实推理、3D WebGL 可视化、GGUF 本地执行和严格数据溯源四者结合的开源工具。

一句话推荐结论

如果你想真正看见一个 LLM 在推理时每一层、每个注意力头在做什么——而非看静态示意图或假数据——Token-Print 是目前最诚实的选择,数据可信度在同类工具中无出其右,适合研究者和严肃学习者使用。

⚠️ 本仓库为技术教育与可解释性研究工具,不应用于绕过模型安全策略或未授权分析闭源模型。