原文How LLMs Actually Work[1]作者 0xkato。本报告忠实还原原文的论述结构和核心内容不做超出原文的扩展个别处补充的背景说明会明确标注。TL;DR这篇文章用九个环节把一个 transformer-based LLM 从输入到输出拆了一遍分词、嵌入、位置编码、注意力、多头注意力、前馈网络、残差流与归一化、下一词预测循环最后落在架构 vs 权重的辨析上。作者刻意避开数学推导但没有为了通俗牺牲准确性——文中纠正了几个流传很广的错误理解比如多头注意力的切片误读还把 induction heads、ROME、speculative decoding 这些研究前沿织进了入门叙事里。它的核心论点是现代 LLM 共享同一套 transformer 家族骨架模型之间的差异来自训练数据、配置规模和后训练读懂这套骨架就能读懂大部分模型论文和 model card。一、这篇文章讲什么为什么值得读市面上讲 transformer 的文章很多大部分要么是论文复述满屏公式劝退非研究者要么是过度简化的比喻读完仍然不知道模型里到底发生了什么。这篇文章选了中间路线不写公式但每个机制都讲到为什么需要它、它解决了什么问题、现代模型怎么改进了它这一层。作者在开头就把目标说清楚了——读完之后你应该能打开任何一篇现代 LLM 论文或 model card知道每一节在讲架构的哪个部件。文章另一个特点是穿插了大量 “Tiny explainer”微型解释框把 token ID、向量、softmax 这些术语随用随解释让没有 ML 背景的读者也能跟上。本报告按原文九个环节的顺序展开。二、分词Tokenization模型读的是整数不是文字模型不直接读文本它读的是整数 ID。把你的 prompt 转换成整数序列的步骤叫分词tokenizer 接收一个字符串输出一串整数每个整数指向一个固定词表里的条目。现代 LLM 的词表通常有几万到几十万个条目。token 通常不是完整的单词而是子词片段。“tokenization” 可能被切成 [“token”, “ization”]“running” 可能切成 [“run”, “ning”]。这么做是出于效率权衡整词词表太大而且对没见过的新词无能为力字符级词表又太小逼着模型从零学习最简单的拼写模式。子词分词取中间值——最常见的片段成为单个 token罕见词和新词由更小的片段拼出来。这个权衡会在意想不到的地方暴露出来。经典例子是问 LLM “strawberry 里有几个 R”早期模型经常答错。原文特意澄清这不是模型不会数数而是模型根本不在字母层面操作——它看到的只是 token ID而这些 ID 恰好拼出了一个人类会逐字母拆开的词。不同模型家族用不同的 tokenizer。GPT 系用 BPEByte Pair Encoding变体LLaMA 系常用 SentencePiece。tokenizer 的选择影响计算量token 越少计算越省和多语言覆盖但基本形态一致文本进整数出。三、嵌入Embeddings整数如何获得意义token ID 比如1024只是一个行号本身没有任何含义。赋予它意义的是一张巨大的查找表——嵌入矩阵。每个模型都有一张词表里每个条目对应一行每行是一个长长的数字向量。向量的长度就是模型的 hidden size在很多 7B 级模型里是 4096 个数字更大的模型用更宽的向量。tokenizer 把整数交给模型后模型查出对应的那一行之后就用这个向量代替整数参与所有计算。这个向量就是 token 的嵌入是模型在训练中学到的这个 token 意味着什么的表示。嵌入有个有意思的性质语义相近的 token 最终会得到相近的向量。“king” 的向量在空间中靠近 “queen”“Paris” 靠近 “France”。这些位置关系没有任何人去硬编码它们是模型在海量文本上训练时自发涌现的——因为这样的几何结构有助于预测文本。你甚至可以对嵌入做算术有时候真的成立最著名的例子是king − man woman ≈ queen。但原文在这一节末尾点出了一个关键缺口嵌入只编码了 token 是什么完全不知道 token 在序列里的位置。“dog” 排在 prompt 第一个词还是第五个词它的嵌入向量一模一样。这是个问题需要下一个部件来填补。四、位置编码从正弦波到 RoPE朴素的自注意力机制没有内建的词序概念。没有位置信号的话模型无法直接知道 “dog” 在 “bites” 前面还是后面——而词序决定句意谁咬谁完全不同。2017 年的原始 transformer 论文Vaswani et al.的做法是给每个位置分配一套独有的数字模式直接加到该位置 token 的嵌入上。位置 1 一种模式位置 5 另一种位置 100 又一种模式来自不同频率的正弦和余弦波。这样 “dog” 在位置 1 和位置 5 的最终向量就不一样了。选正弦编码的部分原因是它能外推到训练时没见过的序列长度。但这种加法式方案在模型规模化之后暴露出两个问题。其一嵌入向量得在同一组数字里同时承载语义和位置容量有限。其二学习式的绝对位置嵌入泛化得不干净——如果训练时 prompt 最长 2048 个 token位置 5000 的嵌入就从来没被正经学过。现代模型大多改用旋转位置编码RoPESu et al. 2021LLaMA、Mistral、Gemma、Qwen 等主流开放权重家族全在用。它的直觉是不再往 token 向量里加位置信息而是按 token 的位置把 Query 和 Key 向量旋转一个角度——位置 1 转一小下位置 100 转一大圈。之后做注意力比较时真正起作用的是两个 token 旋转角度的差值这个差值恰好编码了它们相距多远。RoPE 的实际优势有三点天然编码相对位置这更接近注意力真正需要的东西、对长上下文泛化更好、不增加任何参数。即便有了好的位置编码原文也提醒读者现代 LLM 仍有被文献记录的 “lost in the middle” 问题Liu et al. 2023——长 prompt 开头和结尾的信息被利用得比中间的可靠。这就是为什么重要上下文放前面关键信息在结尾重复一遍这类 prompt 工程技巧真的有效模型并没有均匀地利用你 prompt 的每个部分。五、注意力Q、K、V 与因果掩码这是给整个架构命名的机制。在每个 transformer 层里注意力只做一件事让每个 token 查看它被允许看到的其他 token并决定哪些对接下来的预测重要。实现方式是让每个 token 同时扮演三个角色被变换成三个新向量Query、Key、Value。Query 问我在找什么Key 答我能提供什么给来找我的 tokenValue 携带匹配成功时真正被传递的信息。同一个 token 同时扮演全部三个角色而 Q、K、V 的变换矩阵是学出来的所以模型在训练中自己摸索出每个 token 该找什么、该提供什么。匹配通过相似度打分完成每个 token 的 Query 和它能看到的所有 token 的 Key 做缩放点积直觉上衡量两个向量的对齐程度缩放是为了让数值在 softmax 前保持稳定。然后 softmax 把这些分数变成总和为 1 的权重权重再用来对 Value 向量做加权平均。原文用了一个很清晰的例子。句子 “The cat that I saw yesterday was sleeping”模型处理到 “was” 时需要搞清楚是什么在睡觉。“was” 的 Query 和各 token 的 Key 比较和 “cat” 的点积高——因为模型学到了 “was” 这类动词需要主语而 “cat” 这类主语产生的 Key 恰好和它对得上和 “yesterday” 的点积低。softmax 之后 “cat” 拿到高权重加权求和时 “cat” 的 Value 主导了结果。于是 “was” 的新表示主要由 “cat” 塑造——隔了好几个位置的 token 就这样成了指代对象。GPT 式语言模型有个特有约束从左到右生成。位置 5 的 token 只能注意位置 1 到 5不能看 6、7、8——那些还没生成。这叫因果掩码causal masking实现很简单把未来 token 的匹配分数压到极低softmax 之后权重实际为零。这一节还提到了可解释性研究里最有意思的发现之一induction headsAnthropic2022。这类特化的注意力头学会了识别 prompt 中 “A B … A” 形态的模式并预测 B 接着出现——第二次看到 A 时induction head 回看 A 上次出现的位置看它后面跟了什么然后照抄。它们是 in-context learning模型从你的 prompt 里现学模式并续写的能力目前已知最清晰的机制之一。注意力有一个大代价完整注意力中每个 token 要和所有可见 token 比较prompt 长度翻倍计算量大约翻四倍。这就是长 prompt 贵的原因也是 FlashAttention、稀疏注意力、线性注意力这些效率研究的动机。六、多头注意力多个视角以及 GQA单次注意力只给模型一种哪些 token 对哪些 token 重要的判断方式。这不够——语言里同时发生着多种关系主谓一致、代词与其指代的名字、跨句的长程引用、词序和局部短语。多头注意力的解法是并行跑很多次注意力每个并行通道称为一个头在自己的小空间里运算。原文在这里专门纠正了一个连许多教程都讲错的细节每个头拿到的不是原始 token 向量的一个字面切片。每个头有自己学出来的投影矩阵把完整的 token 向量映射到属于它自己的更小的 Q、K、V 向量。如果模型每个 token 4096 维、有 32 个头每个头通常在 128 维空间里工作——但这 128 个数字是对完整 4096 维的学习式投影不是固定切块。是同一个 token 的不同视角不是不同碎块。每个头独立跑完注意力后所有头的输出拼接起来再过一个最终的线性层混合回完整尺寸的向量这个混合层也是学出来的。有趣的是不同的头经常发展出部分特化——没人告诉每个头该干什么特化在训练中自然涌现。研究者发现过追踪语法的头把动词连到宾语、冠词连到名词、分辨代词指代的头、追踪位置模式的头、induction heads 等等。一层可能 32 个头前沿模型几十层所以一个典型 LLM 总共有数千个注意力头各自贡献一种学到的视角。这一节最后落在一个实际成本问题上它推动了近年的一次架构变化。每个头需要为所有已生成的 token 保留 Key 和 Value 向量这样生成新 token 时不必从头重算一遍——这就是 KV cache长上下文推理的主要内存开销。现代 decoder-only LLM 大多用 Grouped-Query AttentionGQA变体不是每个头都有自己的 K/V而是多组 query 头共享同一套 key/value 头。LLaMA-2 70B 有 64 个 query 头但只有 8 个 KV 头Mistral 7B 是 32 比 8。效果是精度几乎不损失但内存压力和推理成本大幅下降。七、前馈网络参数最多、存事实的地方注意力让 token 之间交换完信息后每一层还有第二个步骤讨论度远不如注意力但同样重要前馈网络FFN。如果说注意力是 token 之间互相交谈FFN 就是每个 token 独自做深加工——它在每个 token 的向量上独立运行没有任何跨 token 的混合。FFN 按顺序做三件事先把 token 向量扩张到更大尺寸原始 transformer 用 4 倍现代 SwiGLU 模型的扩张比例各有不同然后施加一个非线性函数最后压缩回原始尺寸。中间那个非线性步骤值得专门理解非线性是把输入掰弯的函数最简单的 ReLU 把负数归零、正数原样通过。没有它FFN 就只是两个线性层叠在一起——而纯线性运算的堆叠会坍缩两个线性层在数学上等价于一个一百个也还是等价于一个。非线性阻止了这种坍缩是 FFN 能做出比单次矩阵乘法更丰富计算的原因。原始 transformer 用 ReLUGPT 和 BERT 换成 GELULLaMA、Mistral、PaLM 这代用 SwiGLU——扩张再压缩的结构没变迭代的一直是中间的非线性。稠密 transformer 的大部分参数住在 FFN 里不在注意力里。而且这些参数不是泛泛的——模型存储的事实和语义结构有相当部分就在这里。研究者发现 FFN 内部某些神经元和特定概念或事实强关联一个神经元对埃菲尔铁塔相关文本强烈激活另一个对编程语言还有的对过去式动词。模型知道巴黎是法国首都这个事实就表示在特定层的 FFN 权重和激活里。这个存储记忆的性质有个有趣的推论可以不重训模型、直接编辑某些事实。ROMERank-One Model Editing这类方法能通过对特定 FFN 权重矩阵做一次有针对性的低秩修改把埃菲尔铁塔在巴黎改成埃菲尔铁塔在罗马之后模型生成的文本倾向于和被编辑后的关联保持一致。这一节最后讲了 MoEMixture of Experts。一些现代前沿模型开始把稠密 FFN 换成多个并行的 FFN称为专家由一个很小的路由网络决定每个 token 交给哪几个专家处理。Mixtral 8x7B 每层 8 个专家每个 token 只激活 2 个总参数 46.7B但每个 token 只用约 12.9B。总参数量大幅上升但每 token 的计算量增长慢得多——这就是在不让推理成本同比例膨胀的前提下继续扩大参数规模的办法。八、残差流与层归一化:深层网络训得动的原因残差流是让模型做加法而不是做替换的机制。注意力或 FFN 跑完之后结果通常不会替换掉 token 原来的向量而是加到它上面逐位置相加新向量 旧向量 子块输出。跨越三十层、五十层、一百层每层的贡献是累加的而不是覆盖的。这个运行中的累加和就叫残差流它有个奇特的性质最初的输入嵌入始终有一条直达深层的加法通路和沿途每个子块的贡献混在一起。残差连接不是为 transformer 发明的它来自 ResNetHe et al. 2015最初用于图像识别。当时的动机是深层网络根本训不动——训练信号反向传播穿过太多层之后变得太弱有时太强模型没法从自己的错误中学习。加一条捷径让信号能从输出直接流回输入突然之间几百层的网络就能训了。transformer 继承了同一个技巧。在现代可解释性研究里残差流已经成为核心研究对象每个组件——每个注意力头、每个 FFN、甚至最后的 unembedding 步骤——都从残差流读取再写回残差流。第二个部件层归一化的存在理由要实际得多没有它残差流不稳定。数字流过几十次加法后倾向于要么爆炸要么塌缩到零两种情况训练都会失败。层归一化在子块之间把每个 token 的向量拉回受控范围。这里有两个演进值得记下。一是归一化的位置2017 年原始 transformer 在每个子块之后归一化post-norm浅模型没问题深了就难训现代 transformerGPT-2 起LLaMA、Mistral普遍改在子块之前pre-norm这是让超深 transformer 变得好训的改动之一。二是函数本身很多现代开放模型LLaMA、Mistral、Gemma、Phi用更简单的 RMSNorm——原始层归一化做两件事先把向量移向零点再缩放大小RMSNorm 砍掉移动只留缩放经验上缩放承担了大部分收益计算还更便宜。原文给这一节的收尾很准确这是整个架构里最不光鲜的机械部件。没有残差连接极深的模型几乎训不动没有层归一化累加和会爆炸或塌缩。两者都有才有几百层深的模型。九、下一词预测循环本身所有层的注意力和 FFN 处理结束后序列里每个 token 都有了一个最终向量。生成时预测下一个词只取最后一个 token 的最终向量。这个向量被转换成每个候选 token 一个分数——词表 10 万就有 10 万个数字。这些数字叫 logits还不是概率可正可负、大小不限。softmax 把 logits 变成对下一个 token 的概率分布——还是之前那个 softmax只是用在了模型的不同位置。模型通常不会每次都选概率最高的那个 token。解码参数控制输出的确定性和多样性temperature 调整分布的尖锐程度top-k 和 top-p 把候选限制在最合理的范围内。这就是同一个模型在某些设置下显得精确、另一些设置下更有创造性的原因。选出一个 token 之后它被追加到输入末尾模型在更长的序列上跑下一步——通常复用 KV cache不必从头重算整个前缀。新 token 的新注意力、新 FFN、新最终向量、新预测。循环持续到模型吐出终止符或撞到长度上限。一整段文字就是这个循环一次一个 token 跑出来的。原文在这里强调了一个容易被忽略的事实预测下一个 token 这个单一目标就是 base LLM 的全部训练信号。base 模型不直接针对事实准确性、对话能力、推理或写代码训练它只在海量文本上训练预测下一个 token。指令遵循、偏好对齐、安全行为这些是后训练在 base 之上调出来的。这一节还介绍了一个重要的效率创新speculative decoding投机解码。一个小而快的草稿模型先往前猜若干个 token大模型并行验证。猜中的在大模型概率下可接受的直接采纳猜错的回退到大模型自己算。做对了的话输出分布和单独跑大模型完全一致但循环可以快得多。十、架构 vs 训练权重GPT、Claude、Gemini 到底差在哪走完九个环节之后原文回答开篇的问题GPT、Claude、Gemini、LLaMA 之间到底什么不同公开细节有限专有模型不会公布每个架构选择但在这篇文章覆盖的层面上它们大体坐落在同一个 transformer 家族设计空间里分词、嵌入、位置编码、堆叠的 transformer 层每层多头注意力 FFN、残差流、层归一化、下一词预测。模型之间真正变化的是三样东西训练出来的权重本身不同数据、不同规模学出来的数字配置层数、词表大小、头数、参数量、MoE 还是稠密后训练指令微调、人类反馈、安全控制。原文还给出了一个值得记住的观察2023–2025 年的现代 transformer技术栈在众多前沿和开放权重模型之间收敛到了一组共同选择——pre-norm、RMSNorm、RoPE、SwiGLU、GQA最大的那些模型加上 MoE——尽管不同团队是各自独立走到这些选择的。这些东西不是一次发明的是在 2017 年原始设计之上经过约五年的打磨逐渐累积下来的。十一、未来走向与本文评价原文最后一节指出围绕 transformer 家族的收敛在机器学习历史上是反常的。这个领域过去的常态是每个问题一种专门网络图像一种、语言一种、音频又一种视觉团队和语言团队几乎不共享方法。现在 transformer 式模型横跨语言、视觉、音频和多模态系统吸收了这个领域的一大块。这种局面可能改变。Mamba 等状态空间模型是可信的替代方案尤其在超长序列上混合架构在探索中MoE 已经改变了前沿架构一词的含义——放在五年前会被认为是异类。但作者认为本文讲的核心机制token、嵌入、位置编码、注意力、FFN、残差流与归一化、下一词预测是耐久的部分即便架构换代这些是任何序列模型都必须以某种形式解决的问题。从调研者的角度做个简短评价这部分是本报告的补充不属于原文这篇文章最大的价值在于它的机制 演进双线写法——每讲一个部件既讲 2017 年原始 transformer 的做法也讲现代模型LLaMA / Mistral / Mixtral 这一代改成了什么、为什么改。正弦位置编码 → RoPE、ReLU → GELU → SwiGLU、post-norm → pre-norm、LayerNorm → RMSNorm、MHA → GQA、稠密 FFN → MoE这六条演进线索串起来正好就是原文说的那个五年收敛的具体内容。文中引用的事实Mixtral 8x7B 总参数 46.7B / 每 token 约 12.9B、LLaMA-2 70B 的 64:8 头配比、induction heads 出自 Anthropic 2022 年的工作、lost in the middle 出自 Liu et al. 2023与公开资料一致作为入门读物准确度相当高。学AI大模型的正确顺序千万不要搞错了2026年AI风口已来各行各业的AI渗透肉眼可见超多公司要么转型做AI相关产品要么高薪挖AI技术人才机遇直接摆在眼前有往AI方向发展或者本身有后端编程基础的朋友直接冲AI大模型应用开发转岗超合适就算暂时不打算转岗了解大模型、RAG、Prompt、Agent这些热门概念能上手做简单项目也绝对是求职加分王给大家整理了超全最新的AI大模型应用开发学习清单和资料手把手帮你快速入门学习路线:✅大模型基础认知—大模型核心原理、发展历程、主流模型GPT、文心一言等特点解析✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑✅开发基础能力—Python进阶、API接口调用、大模型开发框架LangChain等实操✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经以上6大模块看似清晰好上手实则每个部分都有扎实的核心内容需要吃透我把大模型的学习全流程已经整理好了抓住AI时代风口轻松解锁职业新可能希望大家都能把握机遇实现薪资/职业跃迁这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
How LLMs Actually Work:一篇值得精读的 LLM 内部机制长文
发布时间:2026/6/13 4:25:10
原文How LLMs Actually Work[1]作者 0xkato。本报告忠实还原原文的论述结构和核心内容不做超出原文的扩展个别处补充的背景说明会明确标注。TL;DR这篇文章用九个环节把一个 transformer-based LLM 从输入到输出拆了一遍分词、嵌入、位置编码、注意力、多头注意力、前馈网络、残差流与归一化、下一词预测循环最后落在架构 vs 权重的辨析上。作者刻意避开数学推导但没有为了通俗牺牲准确性——文中纠正了几个流传很广的错误理解比如多头注意力的切片误读还把 induction heads、ROME、speculative decoding 这些研究前沿织进了入门叙事里。它的核心论点是现代 LLM 共享同一套 transformer 家族骨架模型之间的差异来自训练数据、配置规模和后训练读懂这套骨架就能读懂大部分模型论文和 model card。一、这篇文章讲什么为什么值得读市面上讲 transformer 的文章很多大部分要么是论文复述满屏公式劝退非研究者要么是过度简化的比喻读完仍然不知道模型里到底发生了什么。这篇文章选了中间路线不写公式但每个机制都讲到为什么需要它、它解决了什么问题、现代模型怎么改进了它这一层。作者在开头就把目标说清楚了——读完之后你应该能打开任何一篇现代 LLM 论文或 model card知道每一节在讲架构的哪个部件。文章另一个特点是穿插了大量 “Tiny explainer”微型解释框把 token ID、向量、softmax 这些术语随用随解释让没有 ML 背景的读者也能跟上。本报告按原文九个环节的顺序展开。二、分词Tokenization模型读的是整数不是文字模型不直接读文本它读的是整数 ID。把你的 prompt 转换成整数序列的步骤叫分词tokenizer 接收一个字符串输出一串整数每个整数指向一个固定词表里的条目。现代 LLM 的词表通常有几万到几十万个条目。token 通常不是完整的单词而是子词片段。“tokenization” 可能被切成 [“token”, “ization”]“running” 可能切成 [“run”, “ning”]。这么做是出于效率权衡整词词表太大而且对没见过的新词无能为力字符级词表又太小逼着模型从零学习最简单的拼写模式。子词分词取中间值——最常见的片段成为单个 token罕见词和新词由更小的片段拼出来。这个权衡会在意想不到的地方暴露出来。经典例子是问 LLM “strawberry 里有几个 R”早期模型经常答错。原文特意澄清这不是模型不会数数而是模型根本不在字母层面操作——它看到的只是 token ID而这些 ID 恰好拼出了一个人类会逐字母拆开的词。不同模型家族用不同的 tokenizer。GPT 系用 BPEByte Pair Encoding变体LLaMA 系常用 SentencePiece。tokenizer 的选择影响计算量token 越少计算越省和多语言覆盖但基本形态一致文本进整数出。三、嵌入Embeddings整数如何获得意义token ID 比如1024只是一个行号本身没有任何含义。赋予它意义的是一张巨大的查找表——嵌入矩阵。每个模型都有一张词表里每个条目对应一行每行是一个长长的数字向量。向量的长度就是模型的 hidden size在很多 7B 级模型里是 4096 个数字更大的模型用更宽的向量。tokenizer 把整数交给模型后模型查出对应的那一行之后就用这个向量代替整数参与所有计算。这个向量就是 token 的嵌入是模型在训练中学到的这个 token 意味着什么的表示。嵌入有个有意思的性质语义相近的 token 最终会得到相近的向量。“king” 的向量在空间中靠近 “queen”“Paris” 靠近 “France”。这些位置关系没有任何人去硬编码它们是模型在海量文本上训练时自发涌现的——因为这样的几何结构有助于预测文本。你甚至可以对嵌入做算术有时候真的成立最著名的例子是king − man woman ≈ queen。但原文在这一节末尾点出了一个关键缺口嵌入只编码了 token 是什么完全不知道 token 在序列里的位置。“dog” 排在 prompt 第一个词还是第五个词它的嵌入向量一模一样。这是个问题需要下一个部件来填补。四、位置编码从正弦波到 RoPE朴素的自注意力机制没有内建的词序概念。没有位置信号的话模型无法直接知道 “dog” 在 “bites” 前面还是后面——而词序决定句意谁咬谁完全不同。2017 年的原始 transformer 论文Vaswani et al.的做法是给每个位置分配一套独有的数字模式直接加到该位置 token 的嵌入上。位置 1 一种模式位置 5 另一种位置 100 又一种模式来自不同频率的正弦和余弦波。这样 “dog” 在位置 1 和位置 5 的最终向量就不一样了。选正弦编码的部分原因是它能外推到训练时没见过的序列长度。但这种加法式方案在模型规模化之后暴露出两个问题。其一嵌入向量得在同一组数字里同时承载语义和位置容量有限。其二学习式的绝对位置嵌入泛化得不干净——如果训练时 prompt 最长 2048 个 token位置 5000 的嵌入就从来没被正经学过。现代模型大多改用旋转位置编码RoPESu et al. 2021LLaMA、Mistral、Gemma、Qwen 等主流开放权重家族全在用。它的直觉是不再往 token 向量里加位置信息而是按 token 的位置把 Query 和 Key 向量旋转一个角度——位置 1 转一小下位置 100 转一大圈。之后做注意力比较时真正起作用的是两个 token 旋转角度的差值这个差值恰好编码了它们相距多远。RoPE 的实际优势有三点天然编码相对位置这更接近注意力真正需要的东西、对长上下文泛化更好、不增加任何参数。即便有了好的位置编码原文也提醒读者现代 LLM 仍有被文献记录的 “lost in the middle” 问题Liu et al. 2023——长 prompt 开头和结尾的信息被利用得比中间的可靠。这就是为什么重要上下文放前面关键信息在结尾重复一遍这类 prompt 工程技巧真的有效模型并没有均匀地利用你 prompt 的每个部分。五、注意力Q、K、V 与因果掩码这是给整个架构命名的机制。在每个 transformer 层里注意力只做一件事让每个 token 查看它被允许看到的其他 token并决定哪些对接下来的预测重要。实现方式是让每个 token 同时扮演三个角色被变换成三个新向量Query、Key、Value。Query 问我在找什么Key 答我能提供什么给来找我的 tokenValue 携带匹配成功时真正被传递的信息。同一个 token 同时扮演全部三个角色而 Q、K、V 的变换矩阵是学出来的所以模型在训练中自己摸索出每个 token 该找什么、该提供什么。匹配通过相似度打分完成每个 token 的 Query 和它能看到的所有 token 的 Key 做缩放点积直觉上衡量两个向量的对齐程度缩放是为了让数值在 softmax 前保持稳定。然后 softmax 把这些分数变成总和为 1 的权重权重再用来对 Value 向量做加权平均。原文用了一个很清晰的例子。句子 “The cat that I saw yesterday was sleeping”模型处理到 “was” 时需要搞清楚是什么在睡觉。“was” 的 Query 和各 token 的 Key 比较和 “cat” 的点积高——因为模型学到了 “was” 这类动词需要主语而 “cat” 这类主语产生的 Key 恰好和它对得上和 “yesterday” 的点积低。softmax 之后 “cat” 拿到高权重加权求和时 “cat” 的 Value 主导了结果。于是 “was” 的新表示主要由 “cat” 塑造——隔了好几个位置的 token 就这样成了指代对象。GPT 式语言模型有个特有约束从左到右生成。位置 5 的 token 只能注意位置 1 到 5不能看 6、7、8——那些还没生成。这叫因果掩码causal masking实现很简单把未来 token 的匹配分数压到极低softmax 之后权重实际为零。这一节还提到了可解释性研究里最有意思的发现之一induction headsAnthropic2022。这类特化的注意力头学会了识别 prompt 中 “A B … A” 形态的模式并预测 B 接着出现——第二次看到 A 时induction head 回看 A 上次出现的位置看它后面跟了什么然后照抄。它们是 in-context learning模型从你的 prompt 里现学模式并续写的能力目前已知最清晰的机制之一。注意力有一个大代价完整注意力中每个 token 要和所有可见 token 比较prompt 长度翻倍计算量大约翻四倍。这就是长 prompt 贵的原因也是 FlashAttention、稀疏注意力、线性注意力这些效率研究的动机。六、多头注意力多个视角以及 GQA单次注意力只给模型一种哪些 token 对哪些 token 重要的判断方式。这不够——语言里同时发生着多种关系主谓一致、代词与其指代的名字、跨句的长程引用、词序和局部短语。多头注意力的解法是并行跑很多次注意力每个并行通道称为一个头在自己的小空间里运算。原文在这里专门纠正了一个连许多教程都讲错的细节每个头拿到的不是原始 token 向量的一个字面切片。每个头有自己学出来的投影矩阵把完整的 token 向量映射到属于它自己的更小的 Q、K、V 向量。如果模型每个 token 4096 维、有 32 个头每个头通常在 128 维空间里工作——但这 128 个数字是对完整 4096 维的学习式投影不是固定切块。是同一个 token 的不同视角不是不同碎块。每个头独立跑完注意力后所有头的输出拼接起来再过一个最终的线性层混合回完整尺寸的向量这个混合层也是学出来的。有趣的是不同的头经常发展出部分特化——没人告诉每个头该干什么特化在训练中自然涌现。研究者发现过追踪语法的头把动词连到宾语、冠词连到名词、分辨代词指代的头、追踪位置模式的头、induction heads 等等。一层可能 32 个头前沿模型几十层所以一个典型 LLM 总共有数千个注意力头各自贡献一种学到的视角。这一节最后落在一个实际成本问题上它推动了近年的一次架构变化。每个头需要为所有已生成的 token 保留 Key 和 Value 向量这样生成新 token 时不必从头重算一遍——这就是 KV cache长上下文推理的主要内存开销。现代 decoder-only LLM 大多用 Grouped-Query AttentionGQA变体不是每个头都有自己的 K/V而是多组 query 头共享同一套 key/value 头。LLaMA-2 70B 有 64 个 query 头但只有 8 个 KV 头Mistral 7B 是 32 比 8。效果是精度几乎不损失但内存压力和推理成本大幅下降。七、前馈网络参数最多、存事实的地方注意力让 token 之间交换完信息后每一层还有第二个步骤讨论度远不如注意力但同样重要前馈网络FFN。如果说注意力是 token 之间互相交谈FFN 就是每个 token 独自做深加工——它在每个 token 的向量上独立运行没有任何跨 token 的混合。FFN 按顺序做三件事先把 token 向量扩张到更大尺寸原始 transformer 用 4 倍现代 SwiGLU 模型的扩张比例各有不同然后施加一个非线性函数最后压缩回原始尺寸。中间那个非线性步骤值得专门理解非线性是把输入掰弯的函数最简单的 ReLU 把负数归零、正数原样通过。没有它FFN 就只是两个线性层叠在一起——而纯线性运算的堆叠会坍缩两个线性层在数学上等价于一个一百个也还是等价于一个。非线性阻止了这种坍缩是 FFN 能做出比单次矩阵乘法更丰富计算的原因。原始 transformer 用 ReLUGPT 和 BERT 换成 GELULLaMA、Mistral、PaLM 这代用 SwiGLU——扩张再压缩的结构没变迭代的一直是中间的非线性。稠密 transformer 的大部分参数住在 FFN 里不在注意力里。而且这些参数不是泛泛的——模型存储的事实和语义结构有相当部分就在这里。研究者发现 FFN 内部某些神经元和特定概念或事实强关联一个神经元对埃菲尔铁塔相关文本强烈激活另一个对编程语言还有的对过去式动词。模型知道巴黎是法国首都这个事实就表示在特定层的 FFN 权重和激活里。这个存储记忆的性质有个有趣的推论可以不重训模型、直接编辑某些事实。ROMERank-One Model Editing这类方法能通过对特定 FFN 权重矩阵做一次有针对性的低秩修改把埃菲尔铁塔在巴黎改成埃菲尔铁塔在罗马之后模型生成的文本倾向于和被编辑后的关联保持一致。这一节最后讲了 MoEMixture of Experts。一些现代前沿模型开始把稠密 FFN 换成多个并行的 FFN称为专家由一个很小的路由网络决定每个 token 交给哪几个专家处理。Mixtral 8x7B 每层 8 个专家每个 token 只激活 2 个总参数 46.7B但每个 token 只用约 12.9B。总参数量大幅上升但每 token 的计算量增长慢得多——这就是在不让推理成本同比例膨胀的前提下继续扩大参数规模的办法。八、残差流与层归一化:深层网络训得动的原因残差流是让模型做加法而不是做替换的机制。注意力或 FFN 跑完之后结果通常不会替换掉 token 原来的向量而是加到它上面逐位置相加新向量 旧向量 子块输出。跨越三十层、五十层、一百层每层的贡献是累加的而不是覆盖的。这个运行中的累加和就叫残差流它有个奇特的性质最初的输入嵌入始终有一条直达深层的加法通路和沿途每个子块的贡献混在一起。残差连接不是为 transformer 发明的它来自 ResNetHe et al. 2015最初用于图像识别。当时的动机是深层网络根本训不动——训练信号反向传播穿过太多层之后变得太弱有时太强模型没法从自己的错误中学习。加一条捷径让信号能从输出直接流回输入突然之间几百层的网络就能训了。transformer 继承了同一个技巧。在现代可解释性研究里残差流已经成为核心研究对象每个组件——每个注意力头、每个 FFN、甚至最后的 unembedding 步骤——都从残差流读取再写回残差流。第二个部件层归一化的存在理由要实际得多没有它残差流不稳定。数字流过几十次加法后倾向于要么爆炸要么塌缩到零两种情况训练都会失败。层归一化在子块之间把每个 token 的向量拉回受控范围。这里有两个演进值得记下。一是归一化的位置2017 年原始 transformer 在每个子块之后归一化post-norm浅模型没问题深了就难训现代 transformerGPT-2 起LLaMA、Mistral普遍改在子块之前pre-norm这是让超深 transformer 变得好训的改动之一。二是函数本身很多现代开放模型LLaMA、Mistral、Gemma、Phi用更简单的 RMSNorm——原始层归一化做两件事先把向量移向零点再缩放大小RMSNorm 砍掉移动只留缩放经验上缩放承担了大部分收益计算还更便宜。原文给这一节的收尾很准确这是整个架构里最不光鲜的机械部件。没有残差连接极深的模型几乎训不动没有层归一化累加和会爆炸或塌缩。两者都有才有几百层深的模型。九、下一词预测循环本身所有层的注意力和 FFN 处理结束后序列里每个 token 都有了一个最终向量。生成时预测下一个词只取最后一个 token 的最终向量。这个向量被转换成每个候选 token 一个分数——词表 10 万就有 10 万个数字。这些数字叫 logits还不是概率可正可负、大小不限。softmax 把 logits 变成对下一个 token 的概率分布——还是之前那个 softmax只是用在了模型的不同位置。模型通常不会每次都选概率最高的那个 token。解码参数控制输出的确定性和多样性temperature 调整分布的尖锐程度top-k 和 top-p 把候选限制在最合理的范围内。这就是同一个模型在某些设置下显得精确、另一些设置下更有创造性的原因。选出一个 token 之后它被追加到输入末尾模型在更长的序列上跑下一步——通常复用 KV cache不必从头重算整个前缀。新 token 的新注意力、新 FFN、新最终向量、新预测。循环持续到模型吐出终止符或撞到长度上限。一整段文字就是这个循环一次一个 token 跑出来的。原文在这里强调了一个容易被忽略的事实预测下一个 token 这个单一目标就是 base LLM 的全部训练信号。base 模型不直接针对事实准确性、对话能力、推理或写代码训练它只在海量文本上训练预测下一个 token。指令遵循、偏好对齐、安全行为这些是后训练在 base 之上调出来的。这一节还介绍了一个重要的效率创新speculative decoding投机解码。一个小而快的草稿模型先往前猜若干个 token大模型并行验证。猜中的在大模型概率下可接受的直接采纳猜错的回退到大模型自己算。做对了的话输出分布和单独跑大模型完全一致但循环可以快得多。十、架构 vs 训练权重GPT、Claude、Gemini 到底差在哪走完九个环节之后原文回答开篇的问题GPT、Claude、Gemini、LLaMA 之间到底什么不同公开细节有限专有模型不会公布每个架构选择但在这篇文章覆盖的层面上它们大体坐落在同一个 transformer 家族设计空间里分词、嵌入、位置编码、堆叠的 transformer 层每层多头注意力 FFN、残差流、层归一化、下一词预测。模型之间真正变化的是三样东西训练出来的权重本身不同数据、不同规模学出来的数字配置层数、词表大小、头数、参数量、MoE 还是稠密后训练指令微调、人类反馈、安全控制。原文还给出了一个值得记住的观察2023–2025 年的现代 transformer技术栈在众多前沿和开放权重模型之间收敛到了一组共同选择——pre-norm、RMSNorm、RoPE、SwiGLU、GQA最大的那些模型加上 MoE——尽管不同团队是各自独立走到这些选择的。这些东西不是一次发明的是在 2017 年原始设计之上经过约五年的打磨逐渐累积下来的。十一、未来走向与本文评价原文最后一节指出围绕 transformer 家族的收敛在机器学习历史上是反常的。这个领域过去的常态是每个问题一种专门网络图像一种、语言一种、音频又一种视觉团队和语言团队几乎不共享方法。现在 transformer 式模型横跨语言、视觉、音频和多模态系统吸收了这个领域的一大块。这种局面可能改变。Mamba 等状态空间模型是可信的替代方案尤其在超长序列上混合架构在探索中MoE 已经改变了前沿架构一词的含义——放在五年前会被认为是异类。但作者认为本文讲的核心机制token、嵌入、位置编码、注意力、FFN、残差流与归一化、下一词预测是耐久的部分即便架构换代这些是任何序列模型都必须以某种形式解决的问题。从调研者的角度做个简短评价这部分是本报告的补充不属于原文这篇文章最大的价值在于它的机制 演进双线写法——每讲一个部件既讲 2017 年原始 transformer 的做法也讲现代模型LLaMA / Mistral / Mixtral 这一代改成了什么、为什么改。正弦位置编码 → RoPE、ReLU → GELU → SwiGLU、post-norm → pre-norm、LayerNorm → RMSNorm、MHA → GQA、稠密 FFN → MoE这六条演进线索串起来正好就是原文说的那个五年收敛的具体内容。文中引用的事实Mixtral 8x7B 总参数 46.7B / 每 token 约 12.9B、LLaMA-2 70B 的 64:8 头配比、induction heads 出自 Anthropic 2022 年的工作、lost in the middle 出自 Liu et al. 2023与公开资料一致作为入门读物准确度相当高。学AI大模型的正确顺序千万不要搞错了2026年AI风口已来各行各业的AI渗透肉眼可见超多公司要么转型做AI相关产品要么高薪挖AI技术人才机遇直接摆在眼前有往AI方向发展或者本身有后端编程基础的朋友直接冲AI大模型应用开发转岗超合适就算暂时不打算转岗了解大模型、RAG、Prompt、Agent这些热门概念能上手做简单项目也绝对是求职加分王给大家整理了超全最新的AI大模型应用开发学习清单和资料手把手帮你快速入门学习路线:✅大模型基础认知—大模型核心原理、发展历程、主流模型GPT、文心一言等特点解析✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑✅开发基础能力—Python进阶、API接口调用、大模型开发框架LangChain等实操✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经以上6大模块看似清晰好上手实则每个部分都有扎实的核心内容需要吃透我把大模型的学习全流程已经整理好了抓住AI时代风口轻松解锁职业新可能希望大家都能把握机遇实现薪资/职业跃迁这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】