精读《LLM 的 3 种架构》(知乎)+ llm-master 架构文档 | 扫读《六大主流大模型架构》(百度开发者)
2 篇精读 + 1 篇扫读 净阅读 ≈ 30 分钟 目标:能判断"这个任务该用哪类架构"
看不懂术语?先读配套的《零基础术语课》。
→ 大模型架构-零基础术语课.html(同一目录,点开即可)
里面把 token、向量、注意力、Q/K/V、掩码、编码器/解码器、自回归、预训练 这 8 个词用生活类比讲了一遍,并标明了哪些词你现在可以完全不看。先花 20 分钟读完它,再回来读这一页,会顺很多。
读完这三篇,你只需要拿走一件事:架构差别不在"谁更高级",而在注意力能看见什么——看见全部(双向)→ 擅长判断;只看见前文(单向掩码)→ 擅长续写;先看全再边看边写(交叉注意力)→ 擅长转换。
任务选型的口诀就一句:判断用 Encoder-only,续写用 Decoder-only,转换用 Encoder-Decoder。剩下的内容都是这句话的展开和证据。
三篇都在讲同一件事的三种切面。先用一张图把"注意力看得见什么"钉死,后面读原文就不会被术语带着跑。
你手上那份导读整体判断是对的(精读哪篇、扫读哪段都对),但有三处需要修正,否则会带进笔记里:
精读约 15 分钟 2023-07-11 | 约 1600 字 | 作者未署名(个人专栏)
它解决什么问题:告诉你"三种架构在训练方式上到底差在哪"——尤其是 encoder-only 为什么没有自回归。这是另外两篇都没讲透的点。
别当背景故事读,这两段是在给你三层定义:编码器"负责理解和提取输入文本中的相关信息",输出是对输入的连续表示/嵌入;解码器"根据从编码器接收到的嵌入来生成翻译后的文本"。抓这句就够——记住 encoder 的产物是"向量",不是"文字",这是它天生不适合直接输出的原因。
"encoder-only 类型的 LLM 不像 decoder-only 和 encoder-decoder 那些有自回归,encoder-only 集中于理解输入的内容,并做针对特定任务的输出" —— 这段是三种架构的分水岭:有无自回归
紧接着那句是全文最凝练的任务定位,建议原样记进笔记:
"encoder-only 类型的更擅长做分类;encoder-decoder 类型的擅长输出强烈依赖输入的,比如翻译和文本总结,而其他类型的就用 decoder-only,如各种 Q&A。" —— 注意这里的 Q&A 归到了 decoder-only,与百度那篇冲突,第 5 节专门处理
这段作者讲了 BERT 的两个预训练任务:NSP 和 MLM(15% 随机遮挡,其中 80% 换成 [MASK]、10% 换随机词、10% 不动)。这组 80/10/10 的数字值得记,是 BERT 最常被考的点。
顺带讲了 RoBERTa 的三处升级:更大 batch、更多数据、去掉 NSP。
[CLS] Toast... [SEP] It's often served... 判断顺序对错)其实是对的,只是前面那句归纳说岔了。结论按例子记,别按那句话记。
这段在解释:生成第 i 个位置时,只能依赖 i 之前的已知输出。作者的落点是"用掩码技术,阻止模型关注位置 i 之后的位置"。
这段和 llm-master 那篇的 causal mask 讲的是同一件事,两篇对照读,你会立刻明白"下三角矩阵"是什么——就是本文开头那张图的第②格。
"decoder-only 模型在分析分类上也和 encoder-only 的 LLM 一样有效。"—— 这句别漏,它是理解"为什么最后大家只用一种架构"的伏笔
只留一句判断标准:这类架构擅长"输入和输出序列之间存在复杂映射关系的任务"。作者给了两篇论文:BART(1910.13461)、T5(1910.10683)。论文不用去下,记住 T5 的核心口号"Text-to-Text"就行——把所有任务都改写成"文本进、文本出"。
精读约 12 分钟 代码随想录 youngyangyang04 的 LLM 教程 | 约 1200 字 + 1 张表 + 3 张图 | 三篇里最"干净"的一篇
它解决什么问题:把三篇里散落的信息收成一张可直接用的对比表,并正面回答"为什么偏偏是 Decoder-only 成了主流"——这是面试高频题,也是三篇里唯一给出完整答案的。
"这种架构更擅长'理解输入',所以其主要应用场景为文本分类、情感分析、信息抽取、命名实体识别等。注意力矩阵采用双向注意力计算,即每个字都能看到上下文得所有信息。"
抓"双向 = 每个字都能看到上下文所有信息"。知乎那篇没解释"双向"是什么样,这篇一句话说清了,还配了注意力矩阵图(上三角也亮着)。
作者先用一个生活化比喻切入:"就像我们人说话,也是一个字一个字从前往后说的,这种设计模拟了人类思维的因果性"。然后给关键机制:
"当生成到'苹果'这个词时,'树'这个词是不应该被'看见'的……在 Decoder-only 架构中,会通过 causal mask 把'未来位置'遮住,这样便可以使大模型在生成前文时'看不到'后文。"
这句是全文的"钉子"。它同时解释了两件你可能没连起来的事:① 为什么大模型是"一个字一个字吐"(token by token);② 为什么"下三角/上三角"这个图会反复出现。
"适合序列到序列,文本到文本的转换任务,比如翻译、摘要、问答生成。"
注意它对 Decoder 阶段两种注意力的拆分,这是本段唯一的技术点:
对应开头那张图的第③格:左栅格全亮(原文全可见),右栅格下三角(译文只看已生成部分),中间两支橙色箭头就是交叉注意力。
原文表格(已校对,可直接用于作业):
| 架构类型 | 注意力特征 | 核心"超能力" | 代表模型 | 适用场景 |
|---|---|---|---|---|
| Encoder-only | 双向注意力,无遮挡 | 深刻理解输入 | BERT、RoBERTa | 情感分析、文本分类、命名实体识别、关键词提取 |
| Decoder-only | 单向掩码注意力 | 生成与推理 | GPT 系列、Llama、DeepSeek、Claude | 聊天机器人、创意写作、逻辑推理、代码生成 |
| Encoder-Decoder | 混合(编码双向 + 解码掩码 + 交叉) | 翻译与转换 | T5、BART、原始 Transformer | 机器翻译、长文本摘要、纠错改写 |
来源:llm-master / docs/llm/transformer/transformer_base_encoder_decoder.md(表格文字与原表一致,仅把"超能力"列做了省略)
扫读约 4 分钟 作者"半吊子全栈工匠",2025-10-30 | 全文较长,但只有一小段对你有用
先明确它的真实身份:这不是"三种架构"的讲解,而是六个具体型号(Llama / Qwen / DeepSeek / GPT / PaLM / Falcon)的工程对比。全文六节,你只需要第二节第 1 小节的最后三行。
位置:二、Transformer 核心架构的改进方向 → 1. 基础结构对比,末尾的"实用建议":
"若任务以生成为主(如对话、写作),优先选择纯解码器架构;若需处理双向上下文(如问答、摘要),可考虑混合结构。" —— 和你的任务正好对上:写作/对话 → 纯解码器
这段的价值不在信息量(两篇精读已经讲了),而在于它把结论翻译成了选型动作:不问"哪种先进",只问"你的任务是生成还是双向理解"。读完这篇,你要带走的就是这个提问方式。
| 章节 | 处理 | 理由 |
|---|---|---|
| 二.2 注意力机制优化(稀疏/滑动窗口) | 跳过 | 讲的是"同一架构内怎么省算力",不涉及架构选型。含伪代码,对带读笔记无增量。 |
| 三 并行计算策略与硬件适配 | 跳过 | 训练工程问题(张量/流水线/专家并行),与"提示词怎么写"零关系。 |
| 三.2 量化与压缩技术 | 跳过 | 部署侧话题。两张对比表的数字无出处,不可引用。 |
| 四 场景分类与选型因素 | 扫标题 | 与第二节"实用建议"重复,只多一句"生成任务优先纯解码器,理解任务考虑混合结构"。 |
| 五、六 趋势与结论 | 跳过 | 泛泛的趋势判断,无可验证信息。 |
① "PaLM 架构:结合编码器-解码器的混合结构,在需要双向上下文的任务(如翻译)中表现突出。"
错。PaLM 是纯解码器(decoder-only)模型,540B 稠密参数,2022 年 Google 发布的标准自回归架构。这条错误很关键——它正好把本文"混合结构适合翻译"的论据撑在了假例子上。
② "DeepSeek 通过局部敏感哈希(LSH)将注意力限制在相似 token 之间。"
错。LSH 稀疏注意力是 Reformer 的方案。DeepSeek 系列用的是 MLA(多头潜在注意力)+ MoE。这条属于把不同论文的机制张冠李戴。
③ "GPT 架构……其位置编码采用旋转位置嵌入(RoPE)。"
存疑。GPT-3 用的是可学习位置编码;RoPE 是 RoFormer 提出、由 Llama 等开源模型带火的;GPT-4 及之后的结构 OpenAI 未公开。这句不能当事实。
三篇对"问答"和"摘要"的归属不一致。这不是谁写错了,而是"问答"是个歧义词。把下面这张表读明白,你的笔记就比三篇原文都清楚。
| 任务 | 知乎 | llm-master | 百度 | 为什么不一样 |
|---|---|---|---|---|
| 问答 | 归 Decoder-only "各种 Q&A" |
归 Encoder-Decoder "问答生成" |
归 混合结构 "需双向上下文(如问答)" |
"问答"至少三种含义:① 开放域聊天式问答(ChatGPT 那种)→ 本质是续写 → Decoder-only;② 阅读理解/抽取式问答(给一段材料,问答案在第几句)→ 要双向读全文 → Encoder-only/Encoder-Decoder;③ 问答生成(给定材料生成一段回答)→ Encoder-Decoder。 |
| 摘要 | 归 Encoder-Decoder "文本总结" |
归 Encoder-Decoder "摘要" |
归 混合结构 "需双向上下文(如摘要)" |
三篇其实一致(都指向"先读全、再产出")。百度的"混合结构"和另两篇的"Encoder-Decoder"是同一个意思的不同叫法。这里没有冲突。 |
| 分类 / 情感分析 | 归 Encoder-only | 归 Encoder-only | 未提(该篇不讨论) | 无冲突。这一类是三篇里唯一口径完全统一的。 |
| 翻译 | 归 Encoder-Decoder | 归 Encoder-Decoder | 举例时挂在 PaLM(混合)名下 | 前两篇一致;百度的例子错了(PaLM 实为 Decoder-only),但结论"翻译适合编码-解码"本身仍成立。 |
把三篇的信息压成一张你能直接用的表。左边是你要做的判断,右边是依据——依据栏才是这张表的价值,因为它让你不靠记忆、靠推理就能得出答案。
| 你的任务长什么样 | 选哪类 | 依据(机制层) | 典型代表 |
|---|---|---|---|
| 给一批文案打标签:过/不过、主题分类、情感正负 | Encoder-only | 需要同时看前后文才能判断("不错"是褒是贬,看后一句);输出是短标签,不需要逐字生成 | BERT、RoBERTa |
| 从文本里抽实体、找关键信息、做关键词 | Encoder-only | 同上:判断型任务,双向上下文是刚需 | BERT 系 |
| 写稿、改写、对话、代码、推理 | Decoder-only | 输出是"往前续"的,天然匹配"预测下一个 token";且所有通用任务都能改写成续写 | GPT、Llama、Qwen、DeepSeek |
| 翻译、长文摘要、按材料生成回答 | Encoder-Decoder | 输出与原文有强对齐关系,需要"编码器读全 + 解码器边看边写(交叉注意力)" | T5、BART、原始 Transformer |
| 要"读得准"又要"写得顺",且预算充足 | 混合/组合 | 用 Encoder 做理解、Decoder 做产出;代价是结构复杂、训练成本高 | BART 类、检索+生成组合 |
注:现实中"用哪类架构"多半由你能否训得动决定——你调 API 时,99% 用的是 Decoder-only。所以这张表的真实用途是判断"这个任务该不该交给大模型",而不是"我该自研哪种架构"。
你最近在做《团宣图文收集》的系统提示词,用的是五段式 + 关键指令放头尾 + 评分五维度 + XML 隔离。这些技巧不是"经验玄学",在 Decoder-only 的机制上都有对应解释——下面这几条连接,能让你的项目文档从"照做"升级到"知道为什么"。
| 架构事实(三篇原文) | 对应的提示词技巧 | 为什么成立 |
|---|---|---|
| 单向前文 + causal mask,不能回看后文 | 身份、红线、输出格式放开头;关键禁令末尾再压一遍 | 生成是单向推进的:开头定下的"轨道"会约束后面每一个 token;末尾重申利用的是"最近的内容权重更高"。它没法像人那样"读完全文再回头改开头"。 |
| 逐 token 生成,没有全局重写 | 输出格式钉死(评分表、四区块、固定字段) | 每一步只在上一步基础上往前挪一格。给出表格骨架,等于把"每一步该填什么"提前限定,模型只需局部填空,不需要一次生成整篇结构。结构越具体,逐 token 走偏的概率越低。 |
| 训练目标就是"给定上下文预测下一个 token" | 少样本示例(3 个入选/淘汰样本)特别有效 | 示例本质上是在给"上下文",让模型接着这个模式往下续。这正好落在它被训练了几万亿次的那个动作上,所以比抽象描述更管用。 |
| "大多数通用场景都能转成给定上下文继续生成"(易扩展) | 把"请评估质量"改写成"按这五个维度逐项打分,最后给总分" | "评估"是抽象指令,"逐项打分"是可续写的具体序列。能被改写成续写任务的指令,模型执行得最稳。这也是你 V2 那轮把"相似度 10 分"改成五维度加权,效果突然变好的机制层原因。 |
| 上下文窗口有限,且内容越长、注意力越被摊薄 | 另做一版精简版 System Prompt | 不是"省 token 省钱"这么简单:长上下文里,中段指令容易被稀释。精简版的意义是把"关键约束"从长文里救出来。 |
诚实标注:上面"为什么成立"一栏是基于 causal mask / 自回归这两个机制做的合理推断,属于工程经验层面的因果解释,不是论文里的实验结论。写进文档时建议用"机制上可以这样理解",不要写成"研究证明"。
1. 三种架构最根本的分野是什么?(一句话)
有没有自回归 + 注意力能看见多远:双向看全部 → 判断;单向看前文 → 续写;先看全再边看边写 → 转换。
2. causal mask 遮住的是哪一半?为什么必须遮?
遮住"未来位置"(常见画法是上三角被涂灰)。因为训练目标是"用前文预测下一个词",如果允许看到答案,模型会直接抄,学不到任何东西。
3. Encoder-Decoder 的解码器有两种注意力,分别管什么?
掩码自注意力 → 管"已经生成的译文"(自己);交叉注意力 → 管"编码器输出的原文"(别人)。这是它区别于另外两种的关键结构。
4. 为什么 Decoder-only 成了主流?三条理由。
① masked self-attention 保证只看前文,符合因果;② 架构与"预测下一个 token"的训练目标天然一致,无需改造;③ 任何任务都能改写成"给上下文继续生成",扩展性最好。
5. 有人问"问答该用哪种架构",你怎么答才不算错?
先反问是哪种问答:聊天式问答 → Decoder-only;读材料抽答案(阅读理解)→ 需要双向,Encoder-only 或 Encoder-Decoder;按材料生成回答 → Encoder-Decoder。直接给一个答案都会被抓漏洞。
6. BERT 预训练里 15% 被遮挡的 token,80/10/10 分别是什么?
80% 换成 [MASK]、10% 换成随机词、10% 保持不变。后两者是为了缓解"预训练时有 [MASK]、微调时没有"的不一致。
三篇读下来,真正需要记住的只有一格:attention 能看见谁,决定了它擅长什么。看见全部 → 判断;只看见前文 → 续写;先看全再对着写 → 转换。
至于"为什么只剩 Decoder-only"——因为把一切任务都包装成"续写"最省事,而它恰好又能干得不错。