How LLMs Actually Work(翻译)

📅 2026/6/29 2:50:12
How LLMs Actually Work(翻译)
写在前面现代主流大语言模型LLM几乎都是把同一种结构——Transformer block——一层一层堆起来的。所以只要把一个 Transformer 内部的几个零件理解透就能看懂绝大部分主流 LLM 的论文和 model card。模型与模型之间的区别主要在于三件事用什么数据训练模型规模与超参层数、宽度、注意力头数等后训练阶段做了什么SFT、RLHF、DPO……。下面按 9 个主题把 LLM 的内部机器从输入到输出走一遍。1. Tokenization把文字变成整数模型并不直接读文字它读的是整数 ID。把字符串切成整数序列的过程叫tokenization分词 / 切分 token。Token ID词表里每一项对应一个整数。模型只认这个整数不认字符本身。Vocabulary词表分词器固定的小积木清单。现代 LLM 词表通常在几万到几十万条之间。token 通常不是完整单词而是子词subword片段tokenization可能会切成[token, ization]running可能会切成[run, ning]为什么用子词整词词表太大、对新词不泛化字符级太小模型连最简单的拼写规律都得从头学子词介于两者之间常见片段直接是一个 token罕见词由小片段拼出来。经典坑问 LLM strawberry 里有几个 r早期模型常答错。不是模型不会数数而是它根本看不到字母——它看到的是几个 token IDstrawberry 也许只是 12 个 token里面的字母被打包了。不同家族用不同分词器GPT 系列用BPEByte Pair Encoding的变体LLaMA 系常用SentencePiece。算力消耗、多语种覆盖会受影响但本质都是文字进整数出。2. Embeddings让整数有了意思1024这样一个 token ID 本身没有任何含义它只是一个行号。让它有意义的是一张巨大的查找表——embedding matrix词嵌入矩阵。每一行对应词表里的一个 token每一行是一个长向量长度等于模型的隐藏维度hidden size。7B 量级的模型常见隐藏维度是 4096更大的模型用更宽的向量。Vector向量就是一串数字。Transformer 内部一切运算都是向量与矩阵的乘法。模型拿到 token ID 后会去 embedding 表里查出对应的那一行后面的所有计算都用这个向量进行。有趣的性质训练完成后语义相似的 token 在向量空间里也接近。king 和 queen 的向量距离很近Paris 和 France 的向量距离也很近著名的近似等式king − man woman ≈ queen。这种几何结构没人手写过是模型为了把下一个 token 预测做好自己把它学出来的。⚠️ 注意到这一步每个 token 已经变成向量了但向量本身不带位置信息。dog无论排在第 1 个还是第 5 个查表得到的是同一个向量。这就需要下一步的位置编码来补上。3. Positional Encoding告诉模型谁先谁后纯粹的 self-attention天生不区分顺序需要额外注入位置信号否则模型分不清是 dog bites man 还是 man bites dog。3.1 经典做法正弦余弦位置编码Vaswani et al., 2017给每个位置一组固定的数字不同频率的 sin/cos 组合直接加到token 的 embedding 上。位置 1 加一个模式位置 5 加另一个模式。优点可以外推到训练时没见过的更长序列。但随着模型变大加性方案有两个问题embedding 既要装语义又要装位置容量受限学习版的绝对位置编码在长上下文上外推不稳——训练只见过 2048 长度到 5000 时就不行了。3.2 现代主流RoPERotary Position EmbeddingsSu et al. 2021 提出目前 LLaMA、Mistral、Gemma、Qwen 等几乎所有开源模型都用它。直觉不再加位置向量而是按位置旋转Query 和 Key 向量。位置 1 的 token 转一个小角度位置 100 的 token 转一个大角度注意力打分时真正起作用的是两个 token 旋转角度的差——也就是它们的相对距离。优点天然编码相对位置更贴合 attention 的需求长上下文外推更平滑不引入新参数。3.3 Lost in the Middle 现象Liu et al. 2023 报告即使位置编码足够好LLM 在长 prompt 中对开头和结尾的信息利用得更好对中间的反而会忘。这也是重要内容放开头/结尾这条 prompt 工程经验的科学依据——模型并不是均匀使用你的 prompt 的每一部分。4. Attentiontoken 之间互相看Attention注意力是 Transformer 名字的来源也是它最核心的机制。每一层 Transformer 里attention 做一件事让每个 token 看一眼它被允许看到的其他 token决定哪些对自己接下来的表示更重要。为此每个 token 同时扮演三个角色被映射成三个新向量角色含义Query (Q)我想从别的 token 那里找什么Key (K)我能给别的 token 提供什么标签用来匹配Value (V)一旦匹配上我会传出去什么内容Q、K、V 是同一个 token 经过三个不同的、可学习的线性变换得到的。4.1 匹配过程每个 token 的 Query 与所有可见 token 的 Key 做点积dot product点积越大表示越对得上。点积分数除以 √d_k 做缩放防止 softmax 饱和。用softmax把分数变成和为 1 的权重。用这些权重对 Value 做加权求和——就是这个 token 在本层的新表示。Dot product衡量两个向量对齐程度的最简单方式。Softmax把任意一组分数变成像概率一样、加起来等于 1 的权重。4.2 一个例子句子The cat that I saw yesterday was sleeping.模型处理was时要搞清楚是谁在 sleeping。was的 Query 与所有可见 token 的 Key 做点积与cat的点积很高动词需要主语cat这种主语恰好提供匹配的 Key与yesterday的点积很低softmax 后cat拿到大权重yesterday拿到小权重was的新向量主要由cat的 Value 决定——这就是指代在数学上是怎么实现的。4.3 Causal Masking因果遮罩GPT 类模型是从左到右生成的所以位置 5 的 token只能看到位置 15不能看到 6、7、8那些还没生成出来。做法很简单把未来位置的匹配分数设成极小的负数softmax 之后权重几乎为 0。4.4 Induction Heads归纳头Anthropic 在 2022 年发现的一类专门化注意力头会识别 prompt 里A B … A这种模式遇到第二个A时回头看上一次A后面跟的是B于是预测下一个就是B。这是目前已知最清晰的in-context learning上下文学习机制之一——为什么你在 prompt 里给几个示例模型就能照着续写。4.5 Attention 的代价完整 attention 中每个 token 要和所有可见 token 比较因此 prompt 长度翻倍计算量大约翻 4 倍O(n²)。这就是长 prompt 又慢又贵的根因也是 FlashAttention、稀疏注意力、线性注意力等优化方向的存在意义。5. Multi-Head Attention多视角看同一段话一次 attention 只能给模型一种谁该关注谁的判断。但语言里同时存在很多种关系主谓一致、代词指代、跨句长程引用、局部短语……一种视角不够。多头注意力并行跑多次 attention每次走自己一小块空间叫一个head头。一个常见误解很多教程说把 token 向量切成几段每段一个头——错的。正确做法是每个头有自己一套可学习的投影矩阵把完整的 token 向量投影到自己的小空间里得到 Q、K、V。例如模型 hidden409632 个头每个头的工作空间是 128 维。但这 128 维是从完整 4096 维投影出来的不是固定的某 128 个分量。所以每个头是同一个 token 的不同视角不是它的碎片。