← 返回项目详情浏览器本地演示 · 不上传输入

LLM 原理交互式可视化实验室

从 token 到注意力,从概率预测到对话生成,一步步看懂大语言模型的运行过程。

文字→Token→向量→Transformer→下一个 token 概率

单文件教学实验室:所有数据为模拟,但结构对应真实 LLM 的核心机制。

Module 1

LLM 到底是什么?

理解 LLM 的核心不是查表,而是根据上下文预测下一个 token。

LLM 本质上是一个“根据上下文预测下一个 token 的巨大函数”。它不是数据库,也不是搜索引擎;输出的是概率分布。对话能力来自基础模型、指令微调、偏好对齐、系统提示词和产品系统。

上下文

候选 token 概率

Module 2

Tokenization:文字如何变成 token

token 是离散符号,token 数量影响上下文长度和推理成本。

Tokenizer 的作用是把“人能读的字符串”变成“模型能查表的 token id”。模型不能直接理解一整句文字,它先把文本切成有限词表里的小片段,再把每个片段映射成数字 id。真实 tokenizer 常用 BPE 或 SentencePiece:它们不是简单按字或按词切,而是学习一套常见子词片段,让“常见词可以合在一起、罕见词也能拆开表示”。

为什么要切成 token?

神经网络处理的是数字。tokenizer 先把无限多样的文本压到一个有限词表里,例如“机器学习”可能是一个 token,也可能拆成“机器”“学习”。

BPE 的直觉

先从字符或字节开始,统计最常一起出现的相邻片段,把它们合并成新 token;重复很多轮后,就得到一张子词词表。

SentencePiece 的直觉

把空格也当作文本的一部分来学习子词,适合中英混合、多语言和没有明显空格分词的语言。

原始文本 → 规范化/预处理 → 子词切分 → token ids → embedding table

这个模拟器怎么切?

为了便于教学,本页使用简化规则:常见中文词优先合并;连续英文字符作为一个词片段;标点单独成 token;没有命中的中文字符退回到单字。真实模型会用训练得到的词表和合并规则,结果可能更细。

Token 结果

切分过程

Module 3

Embedding:token 如何变成向量

token id 只是词表里的编号;embedding 表是在训练中学出来的参数表,用连续向量承载可计算的语义线索。

Embedding 表可以理解成一张很大的“编号 → 向量”查找表。刚开始训练时,这张表里的数值通常接近随机;模型做 next-token prediction 时,如果某些 token 的向量让预测更准确,反向传播就会把这些向量往更有用的方向微调。经过海量文本训练后,经常出现在相似上下文中的 token 会被推到相近方向,所以向量里逐渐出现语义、语法和用法信息。

表怎么来的?

它不是人工手写的词典,而是模型参数的一部分。每次训练都会根据 loss 的梯度更新 embedding 表。

为什么能有语义?

“猫”和“狗”常出现在相似句子里,例如“喂__”“__在睡觉”,训练会让它们对预测产生相似作用,向量距离自然更近。

模型怎么用?

token id 只负责定位表格行;取出的向量才会进入 Transformer,参与 attention、MLP 和下一 token 预测。

点击 token 查看 8 维 embedding

请选择一个 token。

语义空间二维投影

真实 embedding 可能有数千维,这里是二维投影示意。

Module 4

Positional Encoding:模型如何知道顺序

Self-Attention 本身很擅长比较 token,但如果不给位置线索,它很难区分“狗咬人”和“人咬狗”。

为什么需要位置编码?Transformer 同时看一串向量,并不像 RNN 那样天然按顺序读。如果只给 token embedding,“狗、咬、人”这三个向量换个顺序仍是同一批内容;加入 position embedding 后,每个 token 会带上“我在第几个位置”的信号,模型才能学习主语、宾语、先后关系和长距离依赖。

位置如何编码?

常见做法有固定正弦/余弦编码、可学习 position embedding、RoPE 等。本页用可视化的 position embedding 模拟:位置 0、1、2 会查到不同的位置向量。

最终怎么使用?

最常见的直觉是把 token 向量和位置向量逐维相加,得到带位置信息的输入向量,再送进 Transformer。

它有什么作用?

位置编码让 attention 不只知道“有哪些词”,还知道“谁在前、谁在后、相隔多远”,从而理解顺序敏感的句子。

input_vector[position i] = token_embedding[token] + position_embedding[i]

拖动 token 改变顺序

三种向量相加

Module 5

Self-Attention:模型如何决定关注哪里

Self-Attention 会为“当前 token 看其他 token 的程度”计算一组权重,再用这些权重汇总上下文信息。

具体怎么关注?可以把每个 token 当前的 hidden state 想成一张信息卡。模型先为当前 token 生成 Query,为所有 token 生成 Key 和 Value;用 Query 与每个 Key 做相似度比较,得到一排分数;softmax 把分数变成总和为 1 的权重;最后用这些权重对所有 Value 做加权平均,形成当前 token 的新表示。

1. 比较相关性

当前 token 的 Q 去匹配所有 token 的 K:越匹配,分数越高。

2. 转成权重

softmax 会把原始分数变成比例,例如 30%、13%、5%。这些比例就是热力图里的深浅。

3. 汇总信息

模型不是复制某个词,而是把所有 token 的 V 按权重混合,得到包含上下文的新向量。

点击一个 token

Attention 热力图

关注比例

Module 6

Q / K / V:注意力到底是怎么计算的

QK 相似度决定权重,softmax 把分数变为权重,再加权求和 V。

每个 token 从 hidden state 线性变换出 Q、K、V。Query 可理解为“我想找什么”,Key 是“我能被怎样匹配”,Value 是“我实际传递什么”。这只是比喻,真实含义由训练形成。
score(i,j) = Q_i · K_j / sqrt(d_k)
attention_weights = softmax(scores)
output_i = Σ attention_weight(i,j) · V_j

句子:小猫 坐在 垫子 上

QKV 计算过程

Module 7

Multi-Head Attention:为什么要有多个头

不同 head 并行捕捉语法、指代、位置、主题等关系。

一个 head 只能从一种投影角度看上下文。多头注意力把多个 head 的输出 concat,再经过线性层融合。

句子:我 把 书 放在 桌子 上 因为 它 很 平

合并多头结果

Head 1
Head 2
Head 3
Head 4
→
Concat
→
线性融合 Wo

Module 8

FFN / MLP:为什么 Transformer 里还有前馈网络

Attention 负责信息交换,MLP 对每个 token 自身表示做非线性加工。

FFN 通常是“升维 → 激活函数 → 降维”。非线性让模型能表达更复杂的模式。

MLP 流程

hidden
→
linear up
→
activation
→
linear down

向量变化

Module 9

Residual + LayerNorm:为什么要残差连接和归一化

残差保留原始信息,LayerNorm 让数值分布更稳定。

残差连接让模型在原有信息上添加修改量。LayerNorm 把向量均值和方差拉回稳定范围,帮助深层网络训练。
output = LayerNorm(input + transformation(input))

开关组件

数值稳定性

Module 10

Next Token Prediction:模型如何预测下一个 token

训练时给定前文预测下一个 token,正确 token 概率越高,loss 越低。

模型看到“今天晚上我想吃”,目标 token 是“拉面”。输出 vocabulary 上的概率分布,并用 cross entropy 衡量预测。
loss = -log P(correct token)

上下文 → Transformer → 概率分布

今天晚上我想吃
拉面概率

候选 token 概率

Module 11

Decoding:贪心、temperature、top-k、top-p 的区别

推理时自回归生成,每一步从概率分布中选择一个 token。

temperature 越低越保守,越高越随机;top-k 保留前 k 个;top-p 保留累计概率达到 p 的候选集合。

调节解码参数

temperature
top-k
top-p

过滤后的概率分布

Module 12

KV Cache:为什么聊天时可以加速

历史 token 的 K/V 可以复用,新一步主要计算新 token 的部分。

无缓存时每步重复计算历史 K/V;有缓存时过去 K/V 存起来,只计算新 token 的 Q/K/V 并读取缓存。

生成步数

计算成本方块

蓝色表示历史重复计算,绿色表示新 token 计算。

Module 13

Training:模型是怎么训练出来的

训练通过大量 next-token prediction,反复前向、算 loss、反向传播、更新参数。

模型知识不是单独数据库条目,而是分布在 embedding 表、Wq/Wk/Wv/Wo、MLP、LayerNorm、输出投影矩阵等大量参数中。

训练管线

文本
→
Tokenizer
→
预测任务
→
Forward
→
Loss
→
Backward
→
更新参数

Loss 曲线

Module 14

SFT / RLHF:ChatGPT 为什么不只是基础 LLM

Base 会续写文本,SFT 学会按指令回答,偏好对齐让回答更有用、安全、可控。

ChatGPT 类系统还包括系统提示词、工具调用、检索、安全策略和产品层编排。
Base Model
→
SFT
→
Preference Alignment
→
Chat Assistant
Base LLM
SFT
RLHF / 偏好对齐
Module 15

Limitations:概率模型的边界

LLM 可以很流畅,但不保证事实正确;高流畅度不等于高真实性。

常见局限:幻觉、上下文长度限制、不了解新信息、推理出错、对措辞敏感、不等于可靠事实数据库。

概率预测机器

流畅度 ≠ 真实性

专业场景应把模型输出当作需要验证的候选结论。