大语言模型是如何工作的
一份可交互的 3D 讲解,带你看一个真实(迷你)的 GPT 式 Transformer 跑推理 —— 逐个 token、逐层拆解。全部资源本站自托管、在你的浏览器本地运行:不下载任何外部资源、不做任何追踪。
为什么要了解内部原理?
一旦你能在脑海中还原「从输入提示词到读到回复」之间发生的每一步,提示词工程、微调、以及排查模型行为都会变得轻松得多。滚动浏览下方的 3D 模型,看清每一次矩阵乘法,再对照下面逐阶段的中文说明。
3D 模型
拖动旋转视角 · 滚轮缩放 · 用右侧的侧栏逐步跟随讲解。
这个 3D 可视化需要 WebGL2。请用较新版本的 Chrome、Firefox、Safari 或 Edge 打开本页。
流水线逐阶段拆解
上面的动画是浏览器端的 WebGL 渲染,所以这里用文字把同一段旅程再讲一遍 —— 从原始文字到采样出下一个 token。
1 · 分词 Tokenize
原始文字被切成一个个 token(通常是子词片段),再通过一张固定词表把每个 token 映射成整数 ID。从这一步之后,模型看到的永远只是这些整数,再也见不到字母本身。
2 · 词嵌入 Embedding
每个 token ID 去一张学习得到的嵌入表里查一行,变成一串数字组成的向量。再叠加一个位置嵌入,让模型知道每个 token 在序列中的先后位置。
3 · 层归一化 Layer Norm
在每个子层之前,把每个 token 向量归一化到均值 0、离散程度 1,再用两个学习得到的参数重新缩放。这样数值始终「乖巧」,超深网络才能稳定训练。
4 · 自注意力 Self-Attention
每个 token 生成 Query、Key、Value 三个向量。Query 与 Key 的点积决定一个 token 对其他 token 的关注程度;softmax 把这些分数变成权重,用来加权融合各个 Value。
5 · 注意力矩阵
把每个 token 对所有其他 token 的注意力排开,得到一个三角矩阵(未来的 token 被掩掉)。许多注意力头并行运行,每个头学到 token 之间不同的关系。
6 · 前馈网络 MLP
注意力在 token 之间混合信息之后,每个 token 再被一个两层小网络单独处理:先扩展维度、套一个非线性激活(GELU)、再投影回来。模型的大部分参数都在这里。
7 · Transformer 块
层归一化、注意力、残差相加、层归一化、MLP、残差相加 —— 这就是一个块。一个 GPT 无非是把这个块重复堆叠(GPT-2 small 12 个,GPT-3 96 个),每过一次就把 token 向量再打磨一点。
8 · 反嵌入与 Softmax
最后一个 token 向量乘以反嵌入矩阵,为词表里每个 token 产出一个 logit,再由 softmax 把这些 logit 变成一个加起来等于 1 的概率分布。
9 · 采样 Sampling
从这个分布里采样出一个 token(由温度、top-k、top-p 调节),接到输入末尾,然后整条流水线再跑一遍。正是这个「自回归」循环,让模型写出一段段文字。
常见问题
这个可视化展示的是什么模型?
一个极小的 GPT 式网络(nano-GPT),被训练用来给字母 A、B、C 排序 —— 出自 Andrej Karpathy 的 minGPT 示例模型。它小到可以把每一个权重和激活都渲染出来,却与 GPT-2、GPT-3 用的是完全相同的架构。
会上传或从服务器下载任何东西吗?
不会。模型权重、字体图集以及全部渲染资源都由本站自己托管,完全在你的浏览器里通过 WebGL 运行。你的任何操作都不会被上传、记录或发送给任何第三方。
为什么我看不到 3D 模型?
这个可视化需要 WebGL2,现代浏览器都支持。如果画面一直空白,请换用较新版本的 Chrome、Firefox、Safari 或 Edge,并确认已开启硬件加速。
它和 ChatGPT 这样的真实模型有什么关系?
流水线是完全一样的 —— 分词、嵌入、堆叠 Transformer 块、反嵌入、softmax、采样。前沿大模型只是把它放大:更大的词表、更宽的向量、更多的头、多得多的层。GPT-3 有 1750 亿参数,跑的正是这同一套机制。
致谢与许可
本页的 3D 可视化基于 Brendan Bycroft 的开源项目 llm-viz(MIT 许可),在本站自托管、不依赖任何外部资源。示例模型是 Andrej Karpathy 的 minGPT 中给 A/B/C 排序的 nano-GPT。