<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>GPT on Khari Z's LogBook</title><link>https://n571e.github.io/tags/gpt/</link><description>Recent content in GPT on Khari Z's LogBook</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Tue, 14 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://n571e.github.io/tags/gpt/index.xml" rel="self" type="application/rss+xml"/><item><title>预训练语言模型复习：BERT、T5、GPT/LLaMA 各走了哪条路</title><link>https://n571e.github.io/p/happy-llm-pretrained-language-models/</link><pubDate>Tue, 14 Apr 2026 00:00:00 +0000</pubDate><guid>https://n571e.github.io/p/happy-llm-pretrained-language-models/</guid><description>&lt;img src="https://n571e.github.io/" alt="Featured image of post 预训练语言模型复习：BERT、T5、GPT/LLaMA 各走了哪条路" /&gt;&lt;p&gt;从 Transformer 的实现细节往上看，预训练语言模型的分化主要由三件事决定：&lt;strong&gt;目标函数、信息流方式、工程可扩展性&lt;/strong&gt;。&lt;/p&gt;&#10;&lt;p&gt;这篇文章主要回答三个问题：BERT 为什么适合理解任务，T5 为什么适合统一的 text-to-text 任务，GPT/LLaMA 为什么在大模型阶段更常见。复习时先抓住一个判断框架：&lt;strong&gt;模型能看见什么信息、被训练去预测什么、能否高效扩展&lt;/strong&gt;。&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="一在比较模型之前先把三个底层件讲清楚"&gt;&lt;a href="#%e4%b8%80%e5%9c%a8%e6%af%94%e8%be%83%e6%a8%a1%e5%9e%8b%e4%b9%8b%e5%89%8d%e5%85%88%e6%8a%8a%e4%b8%89%e4%b8%aa%e5%ba%95%e5%b1%82%e4%bb%b6%e8%ae%b2%e6%b8%85%e6%a5%9a" class="header-anchor"&gt;&lt;/a&gt;一、在比较模型之前，先把三个底层件讲清楚&#10;&lt;/h2&gt;&lt;h3 id="11-tokenizer-是文本到-token-的输入协议"&gt;&lt;a href="#11-tokenizer-%e6%98%af%e6%96%87%e6%9c%ac%e5%88%b0-token-%e7%9a%84%e8%be%93%e5%85%a5%e5%8d%8f%e8%ae%ae" class="header-anchor"&gt;&lt;/a&gt;1.1 Tokenizer 是文本到 token 的输入协议&#10;&lt;/h3&gt;&lt;p&gt;无论 BERT、T5 还是 GPT，第一步都是先把文本稳定地映射为离散 token ID。这个过程通常包括：&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;文本规范化&lt;/li&gt;&#10;&lt;li&gt;预切分&lt;/li&gt;&#10;&lt;li&gt;子词切分&lt;/li&gt;&#10;&lt;li&gt;映射到词表 ID&lt;/li&gt;&#10;&lt;li&gt;加入特殊 token&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;Tokenizer 要在 &lt;strong&gt;词表规模、未登录词覆盖率、序列长度、训练与推理成本&lt;/strong&gt; 之间做平衡。&lt;br&gt;&#10;这也是为什么 BERT 会用 WordPiece，RoBERTa 更偏向 byte-level BPE，而 LLaMA 又会在 tokenizer 设计上继续优化编码效率。&lt;/p&gt;&#10;&lt;h3 id="12-embedding-的本质是一个可学习的查表矩阵"&gt;&lt;a href="#12-embedding-%e7%9a%84%e6%9c%ac%e8%b4%a8%e6%98%af%e4%b8%80%e4%b8%aa%e5%8f%af%e5%ad%a6%e4%b9%a0%e7%9a%84%e6%9f%a5%e8%a1%a8%e7%9f%a9%e9%98%b5" class="header-anchor"&gt;&lt;/a&gt;1.2 Embedding 的本质，是一个可学习的查表矩阵&#10;&lt;/h3&gt;&lt;p&gt;Embedding 层本质上是一个可训练的查表矩阵：&lt;/p&gt;&#10;$$&#10;E \in \mathbb{R}^{V \times d}&#10;$$&lt;p&gt;其中 $V$ 是词表大小，$d$ 是隐层维度。输入一个 token ID，本质上就是从矩阵里取出对应的一行向量。&lt;br&gt;&#10;如果写成 one-hot 形式，它等价于：&lt;/p&gt;&#10;$$&#10;e = x^\top E&#10;$$&lt;p&gt;也正因为如此，词表一旦变大，Embedding 参数会迅速膨胀，这正是 ALBERT 要做 Embedding 分解的直接背景。&lt;/p&gt;&#10;&lt;h3 id="13-预训练目标往往比模型名字更能决定能力边界"&gt;&lt;a href="#13-%e9%a2%84%e8%ae%ad%e7%bb%83%e7%9b%ae%e6%a0%87%e5%be%80%e5%be%80%e6%af%94%e6%a8%a1%e5%9e%8b%e5%90%8d%e5%ad%97%e6%9b%b4%e8%83%bd%e5%86%b3%e5%ae%9a%e8%83%bd%e5%8a%9b%e8%be%b9%e7%95%8c" class="header-anchor"&gt;&lt;/a&gt;1.3 预训练目标，往往比“模型名字”更能决定能力边界&#10;&lt;/h3&gt;&lt;p&gt;同样是 Transformer，不同预训练目标会强烈影响模型最终擅长什么：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;MLM&lt;/strong&gt;：更适合理解和表征学习&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;span corruption&lt;/strong&gt;：适合条件生成和统一任务接口&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;CLM&lt;/strong&gt;：最贴近真实生成过程，训练目标与推理过程一致&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;所以比较预训练模型时，不要只记模型名字，要先看它的预训练目标。目标函数会决定模型更偏理解、条件生成，还是开放式续写。&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="二三条路线分别解决三类问题"&gt;&lt;a href="#%e4%ba%8c%e4%b8%89%e6%9d%a1%e8%b7%af%e7%ba%bf%e5%88%86%e5%88%ab%e8%a7%a3%e5%86%b3%e4%b8%89%e7%b1%bb%e9%97%ae%e9%a2%98" class="header-anchor"&gt;&lt;/a&gt;二、三条路线：分别解决三类问题&#10;&lt;/h2&gt;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;架构&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;代表模型&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;预训练目标&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;注意力可见性&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;更擅长的任务&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Encoder-Only&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;BERT / RoBERTa / ALBERT&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;MLM（+ NSP / SOP）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;双向&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;分类、匹配、检索、序列标注&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Encoder-Decoder&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;T5&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;span corruption / 去噪重建&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Encoder 双向，Decoder 因果，并带 Cross-Attention&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;翻译、摘要、问答、条件生成&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Decoder-Only&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;GPT / LLaMA&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;CLM&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;因果单向&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;开放生成、对话、代码、长文本续写&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;这张表给出一个复习判断：&lt;/p&gt;&#10;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;&lt;strong&gt;模型结构和“它想看见什么信息、又想预测什么目标”强耦合。&lt;/strong&gt;&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="三bert-路线为什么它能统治预训练模型时代的-nlu"&gt;&lt;a href="#%e4%b8%89bert-%e8%b7%af%e7%ba%bf%e4%b8%ba%e4%bb%80%e4%b9%88%e5%ae%83%e8%83%bd%e7%bb%9f%e6%b2%bb%e9%a2%84%e8%ae%ad%e7%bb%83%e6%a8%a1%e5%9e%8b%e6%97%b6%e4%bb%a3%e7%9a%84-nlu" class="header-anchor"&gt;&lt;/a&gt;三、BERT 路线：为什么它能统治预训练模型时代的 NLU&#10;&lt;/h2&gt;&lt;p&gt;BERT 把 &lt;strong&gt;预训练 + 微调&lt;/strong&gt; 这条路推成了 NLP 的主范式：模型先在大规模语料上学习通用表征，再到具体任务数据上微调。&lt;/p&gt;&#10;&lt;div align="center"&gt;&#10; &lt;img src="bert-architecture.png" alt="BERT 模型结构" width="100%" /&gt;&#10; &lt;p&gt;图 1. BERT 架构图，图片引自 Happy-LLM 原文&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;h3 id="31-bert-为什么天然适合理解任务"&gt;&lt;a href="#31-bert-%e4%b8%ba%e4%bb%80%e4%b9%88%e5%a4%a9%e7%84%b6%e9%80%82%e5%90%88%e7%90%86%e8%a7%a3%e4%bb%bb%e5%8a%a1" class="header-anchor"&gt;&lt;/a&gt;3.1 BERT 为什么天然适合理解任务&#10;&lt;/h3&gt;&lt;p&gt;BERT 本质上是把 Transformer 的 &lt;strong&gt;Encoder&lt;/strong&gt; 堆起来。&lt;br&gt;&#10;这里要记两个特点：&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;双向自注意力&lt;/strong&gt;：每个 token 都能同时看到左边和右边上下文。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;输出的是上下文化表示&lt;/strong&gt;：它更适合作为文本编码器，而不是直接生成器。&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;这意味着 BERT 很擅长回答这类问题：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;这句话表达的是正面还是负面？&lt;/li&gt;&#10;&lt;li&gt;这两个句子是不是语义相近？&lt;/li&gt;&#10;&lt;li&gt;这个 token 在句子里应该被标成什么类别？&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;这些都属于“先理解，再判别”的任务。&lt;/p&gt;&#10;&lt;h3 id="32-mlm--nspbert-当时怎么做预训练"&gt;&lt;a href="#32-mlm--nspbert-%e5%bd%93%e6%97%b6%e6%80%8e%e4%b9%88%e5%81%9a%e9%a2%84%e8%ae%ad%e7%bb%83" class="header-anchor"&gt;&lt;/a&gt;3.2 MLM + NSP：BERT 当时怎么做预训练&#10;&lt;/h3&gt;&lt;p&gt;BERT 最有代表性的预训练任务是 &lt;strong&gt;MLM + NSP&lt;/strong&gt;。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;MLM（Masked Language Model）&lt;/strong&gt; 的核心是“完形填空”：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;随机选取 15% token 做预测目标&lt;/li&gt;&#10;&lt;li&gt;其中 80% 替换成 &lt;code&gt;&amp;lt;MASK&amp;gt;&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;10% 随机替换&lt;/li&gt;&#10;&lt;li&gt;10% 保持不变&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;这个设计很巧。它既让模型学习双向上下文，又尽量缓和了“预训练时看见 &lt;code&gt;&amp;lt;MASK&amp;gt;&lt;/code&gt;，下游使用时看不见 &lt;code&gt;&amp;lt;MASK&amp;gt;&lt;/code&gt;”的分布落差。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;NSP（Next Sentence Prediction）&lt;/strong&gt; 则让模型学习句间关系。&lt;br&gt;&#10;虽然这个任务后来被广泛质疑，但在 BERT 当时的设计里，它表达的是另一个训练诉求：模型不只学 token 级语义，也要学句级关系。&lt;/p&gt;&#10;&lt;h3 id="33-bert-之后大家主要在优化什么"&gt;&lt;a href="#33-bert-%e4%b9%8b%e5%90%8e%e5%a4%a7%e5%ae%b6%e4%b8%bb%e8%a6%81%e5%9c%a8%e4%bc%98%e5%8c%96%e4%bb%80%e4%b9%88" class="header-anchor"&gt;&lt;/a&gt;3.3 BERT 之后，大家主要在优化什么&#10;&lt;/h3&gt;&lt;p&gt;BERT 之后的改进，主要围绕两个瓶颈展开：训练是否充分，以及参数是否冗余。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;RoBERTa&lt;/strong&gt; 的改进方向是“训练得更充分”：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;去掉 NSP，只保留 MLM&lt;/li&gt;&#10;&lt;li&gt;用动态 masking 替代静态 masking&lt;/li&gt;&#10;&lt;li&gt;训练更多 token、更大 batch、更长步数&lt;/li&gt;&#10;&lt;li&gt;使用更大的 BPE 词表&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;它传达出的信号非常明确：&lt;strong&gt;很多时候，问题出在训练规模还没打满。&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;ALBERT&lt;/strong&gt; 的改进方向则是“把参数做轻”：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Embedding 分解：把 $V \times H$ 变成 $V \times E + E \times H$&lt;/li&gt;&#10;&lt;li&gt;跨层参数共享：多层重复计算，但共享同一层参数&lt;/li&gt;&#10;&lt;li&gt;用 SOP 替换 NSP，强化句序关系建模&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;ALBERT 的复习要点是：&lt;strong&gt;参数量减少，不等于计算量按比例下降。&lt;/strong&gt;&#10;它主要减少存储和参数冗余，不等于计算量也会按同样比例下降。&lt;/p&gt;&#10;&lt;h3 id="34-bert-路线的边界也很清楚"&gt;&lt;a href="#34-bert-%e8%b7%af%e7%ba%bf%e7%9a%84%e8%be%b9%e7%95%8c%e4%b9%9f%e5%be%88%e6%b8%85%e6%a5%9a" class="header-anchor"&gt;&lt;/a&gt;3.4 BERT 路线的边界也很清楚&#10;&lt;/h3&gt;&lt;p&gt;BERT 直到今天依然非常有用，尤其是在：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;标注数据比较充分的分类任务&lt;/li&gt;&#10;&lt;li&gt;高吞吐、低延迟的判别式场景&lt;/li&gt;&#10;&lt;li&gt;检索、排序、匹配、序列标注&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;但它的短板同样明显：&lt;strong&gt;它不是为原生生成设计的。&lt;/strong&gt;&lt;br&gt;&#10;如果任务目标是开放式生成，BERT 通常就不再是最自然的选择。&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="四t5-路线把任务统一成-text-to-text"&gt;&lt;a href="#%e5%9b%9bt5-%e8%b7%af%e7%ba%bf%e6%8a%8a%e4%bb%bb%e5%8a%a1%e7%bb%9f%e4%b8%80%e6%88%90-text-to-text" class="header-anchor"&gt;&lt;/a&gt;四、T5 路线：把任务统一成 text-to-text&#10;&lt;/h2&gt;&lt;p&gt;如果说 BERT 偏表征学习，GPT 偏自回归生成，那么 T5 的做法是：&lt;strong&gt;把所有任务都表述成 text-to-text。&lt;/strong&gt;&lt;/p&gt;&#10;&lt;div align="center"&gt;&#10; &lt;img src="t5-architecture.png" alt="T5 模型结构" width="100%" /&gt;&#10; &lt;p&gt;图 2. T5 架构图，图片引自 Happy-LLM 原文&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;h3 id="41-为什么-encoder-decoder-结构这么自然"&gt;&lt;a href="#41-%e4%b8%ba%e4%bb%80%e4%b9%88-encoder-decoder-%e7%bb%93%e6%9e%84%e8%bf%99%e4%b9%88%e8%87%aa%e7%84%b6" class="header-anchor"&gt;&lt;/a&gt;4.1 为什么 Encoder-Decoder 结构这么自然&#10;&lt;/h3&gt;&lt;p&gt;T5 保留了完整的 Encoder 和 Decoder：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Encoder&lt;/strong&gt; 负责把输入“读懂”&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Decoder&lt;/strong&gt; 负责在因果约束下逐步生成输出&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Cross-Attention&lt;/strong&gt; 负责让 Decoder 在每一步都能“按需查询” Encoder 的结果&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;这套结构非常适合翻译、摘要、生成式问答这类任务，因为它们天然就是：&lt;/p&gt;&#10;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;输入一段文本，输出另一段文本&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&lt;p&gt;这和 Seq2Seq 任务的形式完全匹配。&lt;/p&gt;&#10;&lt;h3 id="42-t5-真正想统一的是任务接口"&gt;&lt;a href="#42-t5-%e7%9c%9f%e6%ad%a3%e6%83%b3%e7%bb%9f%e4%b8%80%e7%9a%84%e6%98%af%e4%bb%bb%e5%8a%a1%e6%8e%a5%e5%8f%a3" class="header-anchor"&gt;&lt;/a&gt;4.2 T5 真正想统一的是任务接口&#10;&lt;/h3&gt;&lt;p&gt;T5 的基本想法是：&lt;strong&gt;所有 NLP 任务都写成文本到文本。&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;例如：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;情感分类：&lt;code&gt;classify: 这是一个很好的产品&lt;/code&gt; -&amp;gt; &lt;code&gt;positive&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;摘要：&lt;code&gt;summarize: ...&lt;/code&gt; -&amp;gt; 摘要文本&lt;/li&gt;&#10;&lt;li&gt;翻译：&lt;code&gt;translate English to German: ...&lt;/code&gt; -&amp;gt; 德文结果&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;这种设计把原本碎片化的任务接口统一成同一种输入输出形式：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;不需要为每个任务单独设计输出头&lt;/li&gt;&#10;&lt;li&gt;不需要为不同任务维护完全不同的输入输出形式&lt;/li&gt;&#10;&lt;li&gt;多任务训练和迁移更容易组织&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;复习 T5 时要记住：它不只是一个 Encoder-Decoder 模型，也是在标准化任务表达方式。&lt;/p&gt;&#10;&lt;h3 id="43-span-corruption-为什么比逐-token-mask-更合理"&gt;&lt;a href="#43-span-corruption-%e4%b8%ba%e4%bb%80%e4%b9%88%e6%af%94%e9%80%90-token-mask-%e6%9b%b4%e5%90%88%e7%90%86" class="header-anchor"&gt;&lt;/a&gt;4.3 span corruption 为什么比逐 token mask 更合理&#10;&lt;/h3&gt;&lt;p&gt;T5 的预训练采用 &lt;strong&gt;span corruption&lt;/strong&gt;：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;随机遮蔽连续文本片段&lt;/li&gt;&#10;&lt;li&gt;用哨兵 token（如 &lt;code&gt;&amp;lt;extra_id_0&amp;gt;&lt;/code&gt;）占位&lt;/li&gt;&#10;&lt;li&gt;让 Decoder 重建被遮蔽的原始 span&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;这比逐 token mask 更贴近自然语言中的“片段恢复”，也更符合 Encoder-Decoder 的生成机制。&lt;/p&gt;&#10;&lt;h3 id="44-t5-为什么没有成为今天-llm-的绝对主流"&gt;&lt;a href="#44-t5-%e4%b8%ba%e4%bb%80%e4%b9%88%e6%b2%a1%e6%9c%89%e6%88%90%e4%b8%ba%e4%bb%8a%e5%a4%a9-llm-%e7%9a%84%e7%bb%9d%e5%af%b9%e4%b8%bb%e6%b5%81" class="header-anchor"&gt;&lt;/a&gt;4.4 T5 为什么没有成为今天 LLM 的绝对主流&#10;&lt;/h3&gt;&lt;p&gt;T5 很适合条件生成，但在超大规模时代没有成为最主流基座，主要受工程链路影响：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;架构比 Decoder-Only 更复杂&lt;/li&gt;&#10;&lt;li&gt;推理链路更长&lt;/li&gt;&#10;&lt;li&gt;部署和时延成本通常更高&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;可以这样记：&lt;strong&gt;T5 的优势是任务表达统一；Decoder-Only 的优势是生成链路更简洁、更容易扩展。&lt;/strong&gt;&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="五gpt-路线为什么大模型时代最终收敛到-decoder-only"&gt;&lt;a href="#%e4%ba%94gpt-%e8%b7%af%e7%ba%bf%e4%b8%ba%e4%bb%80%e4%b9%88%e5%a4%a7%e6%a8%a1%e5%9e%8b%e6%97%b6%e4%bb%a3%e6%9c%80%e7%bb%88%e6%94%b6%e6%95%9b%e5%88%b0-decoder-only" class="header-anchor"&gt;&lt;/a&gt;五、GPT 路线：为什么大模型时代最终收敛到 Decoder-Only&#10;&lt;/h2&gt;&lt;p&gt;如果说 BERT 代表预训练模型时代的理解路线，GPT 则代表大模型时代的自回归生成路线。&lt;/p&gt;&#10;&lt;div align="center"&gt;&#10; &lt;img src="gpt-architecture.png" alt="GPT 模型结构" width="100%" /&gt;&#10; &lt;p&gt;图 3. GPT 架构图，图片引自 Happy-LLM 原文&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;h3 id="51-gpt-的设计到底解决了什么问题"&gt;&lt;a href="#51-gpt-%e7%9a%84%e8%ae%be%e8%ae%a1%e5%88%b0%e5%ba%95%e8%a7%a3%e5%86%b3%e4%ba%86%e4%bb%80%e4%b9%88%e9%97%ae%e9%a2%98" class="header-anchor"&gt;&lt;/a&gt;5.1 GPT 的设计到底解决了什么问题&#10;&lt;/h3&gt;&lt;p&gt;GPT 采用 &lt;strong&gt;Decoder-Only + CLM&lt;/strong&gt; 的组合，本质上是在做自回归建模：&lt;/p&gt;&#10;$$&#10;p(x) = \prod_{t=1}^{T} p(x_t \mid x_{1:t-1})&#10;$$&lt;p&gt;这意味着模型在第 $t$ 个位置只能看到历史 token，不能看到未来 token，所以必须使用 &lt;strong&gt;causal mask&lt;/strong&gt;。&lt;/p&gt;&#10;&lt;p&gt;这个设计带来几个直接结果：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;任务高度匹配&lt;/strong&gt;：天然就是为生成服务&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;训练和推理一致&lt;/strong&gt;：训练时预测下一个 token，推理时也生成下一个 token&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;结构更简洁&lt;/strong&gt;：不需要 Encoder，也不需要 Cross-Attention&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;更容易做大规模扩展&lt;/strong&gt;：训练、部署、推理链路都更直接&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;复习 GPT 时要抓住一句话：&lt;strong&gt;Decoder-Only + CLM 把训练目标、推理方式和工程扩展统一到了“预测下一个 token”上。&lt;/strong&gt;&lt;/p&gt;&#10;&lt;h3 id="52-一个很容易混淆的点clm-训练并不慢在逐-token"&gt;&lt;a href="#52-%e4%b8%80%e4%b8%aa%e5%be%88%e5%ae%b9%e6%98%93%e6%b7%b7%e6%b7%86%e7%9a%84%e7%82%b9clm-%e8%ae%ad%e7%bb%83%e5%b9%b6%e4%b8%8d%e6%85%a2%e5%9c%a8%e9%80%90-token" class="header-anchor"&gt;&lt;/a&gt;5.2 一个很容易混淆的点：CLM 训练并不慢在“逐 token”&#10;&lt;/h3&gt;&lt;p&gt;很多人第一次接触 GPT 会以为：既然是自回归，那训练是不是也要一个 token 一个 token 地慢慢跑？&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;训练阶段&lt;/strong&gt;：常用 teacher forcing，可以一次前向并行计算所有位置的损失&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;推理阶段&lt;/strong&gt;：需要逐 token 自回归生成，因为每一步都依赖上一步生成的新 token&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;所以 causal mask 限制的是“信息可见性”，不等于训练时完全失去并行性。&lt;/p&gt;&#10;&lt;h3 id="53-gpt-1-到-gpt-3-验证了什么"&gt;&lt;a href="#53-gpt-1-%e5%88%b0-gpt-3-%e9%aa%8c%e8%af%81%e4%ba%86%e4%bb%80%e4%b9%88" class="header-anchor"&gt;&lt;/a&gt;5.3 GPT-1 到 GPT-3 验证了什么&#10;&lt;/h3&gt;&lt;p&gt;从 GPT-1 到 GPT-3，最重要的是一个路线被连续验证了：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;模型规模继续增大&lt;/li&gt;&#10;&lt;li&gt;预训练数据继续增大&lt;/li&gt;&#10;&lt;li&gt;训练工程继续增强&lt;/li&gt;&#10;&lt;li&gt;zero-shot / few-shot 开始明显展现价值&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;这条路线验证了一件事：&lt;strong&gt;当 CLM 配上足够大的模型和数据时，模型不只会生成文本，也会在很多理解任务上表现出泛化能力。&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;这也是为什么后来 LLM 逐步从“预训练 + 微调”范式，走向了“预训练 + 指令跟随 + 上下文学习”的新范式。&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="六llamadecoder-only-路线走向工程成熟的代表"&gt;&lt;a href="#%e5%85%adllamadecoder-only-%e8%b7%af%e7%ba%bf%e8%b5%b0%e5%90%91%e5%b7%a5%e7%a8%8b%e6%88%90%e7%86%9f%e7%9a%84%e4%bb%a3%e8%a1%a8" class="header-anchor"&gt;&lt;/a&gt;六、LLaMA：Decoder-Only 路线走向工程成熟的代表&#10;&lt;/h2&gt;&lt;p&gt;LLaMA 没有推翻 GPT 的基本方向，而是在 Decoder-Only + CLM 路线上做了更工程化、更容易复用的实现。&lt;/p&gt;&#10;&lt;div align="center"&gt;&#10; &lt;img src="llama-architecture.png" alt="LLaMA 模型结构" width="100%" /&gt;&#10; &lt;p&gt;图 4. LLaMA 架构图，图片引自 Happy-LLM 原文&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;h3 id="61-llama-继承了什么"&gt;&lt;a href="#61-llama-%e7%bb%a7%e6%89%bf%e4%ba%86%e4%bb%80%e4%b9%88" class="header-anchor"&gt;&lt;/a&gt;6.1 LLaMA 继承了什么&#10;&lt;/h3&gt;&lt;p&gt;LLaMA 继续采用 Decoder-Only 主干，因此保留了 GPT 路线的几个优点：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;单栈解码器，结构清晰&lt;/li&gt;&#10;&lt;li&gt;因果建模，目标直接&lt;/li&gt;&#10;&lt;li&gt;易于扩展到更大参数量与更长上下文&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="62-llama-又优化了什么"&gt;&lt;a href="#62-llama-%e5%8f%88%e4%bc%98%e5%8c%96%e4%ba%86%e4%bb%80%e4%b9%88" class="header-anchor"&gt;&lt;/a&gt;6.2 LLaMA 又优化了什么&#10;&lt;/h3&gt;&lt;p&gt;按这部分学习材料，LLaMA 系列的代表性优化包括：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;使用 &lt;strong&gt;RoPE&lt;/strong&gt; 注入位置信息，增强相对位置建模能力&lt;/li&gt;&#10;&lt;li&gt;在更大版本上引入 &lt;strong&gt;GQA&lt;/strong&gt; 等注意力优化&lt;/li&gt;&#10;&lt;li&gt;使用更高质量、更大规模的预训练语料&lt;/li&gt;&#10;&lt;li&gt;持续优化 tokenizer 与训练配方&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;这些改动单看都不是“换范式”，但合在一起，会让同样的 Decoder-Only 路线更稳，也更适合真实应用。&lt;/p&gt;&#10;&lt;h3 id="63-为什么今天很多-llm-都接近-llama-路线"&gt;&lt;a href="#63-%e4%b8%ba%e4%bb%80%e4%b9%88%e4%bb%8a%e5%a4%a9%e5%be%88%e5%a4%9a-llm-%e9%83%bd%e6%8e%a5%e8%bf%91-llama-%e8%b7%af%e7%ba%bf" class="header-anchor"&gt;&lt;/a&gt;6.3 为什么今天很多 LLM 都接近 LLaMA 路线&#10;&lt;/h3&gt;&lt;p&gt;进入大模型阶段，基座模型需要同时满足这些条件：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;能不能稳定训练到很大&lt;/li&gt;&#10;&lt;li&gt;能不能高效推理&lt;/li&gt;&#10;&lt;li&gt;能不能方便做指令微调和对齐&lt;/li&gt;&#10;&lt;li&gt;能不能作为通用基座支撑聊天、代码、Agent、工具调用&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;在这几个指标上，Decoder-Only 路线很占便宜。&lt;br&gt;&#10;所以从历史上看，&lt;strong&gt;LLaMA 的流行，更像是 GPT 路线进一步工程化后的结果。&lt;/strong&gt;&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="七glm一条很有启发性的融合路线"&gt;&lt;a href="#%e4%b8%83glm%e4%b8%80%e6%9d%a1%e5%be%88%e6%9c%89%e5%90%af%e5%8f%91%e6%80%a7%e7%9a%84%e8%9e%8d%e5%90%88%e8%b7%af%e7%ba%bf" class="header-anchor"&gt;&lt;/a&gt;七、GLM：一条很有启发性的“融合路线”&#10;&lt;/h2&gt;&lt;p&gt;GLM 这条路线特别有意思，因为它尝试把 &lt;strong&gt;MLM 的双向理解能力&lt;/strong&gt; 和 &lt;strong&gt;CLM 的自回归生成能力&lt;/strong&gt; 合在一起。&lt;/p&gt;&#10;&lt;p&gt;它的几个设计点包括：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;blank infilling 式预训练&lt;/li&gt;&#10;&lt;li&gt;特殊 attention mask&lt;/li&gt;&#10;&lt;li&gt;二维位置编码&lt;/li&gt;&#10;&lt;li&gt;在被遮蔽片段内部按自回归顺序生成&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;这条路线想做的事很直接：&lt;strong&gt;既要理解，也要生成。&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;从今天回头看，GLM 没有成为超大规模基座的主流，但它并不“失败”。&lt;br&gt;&#10;更准确地说，GLM 留下了一个路线判断：&lt;/p&gt;&#10;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;在预训练模型时代，融合式目标很有吸引力；但到超大规模 LLM 阶段，工程可扩展性和训练稳定性会把很多选择重新拉回 CLM 主线。&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&lt;p&gt;这也是为什么后续 ChatGLM 系列在大方向上逐渐回归更经典的 CLM 路线。&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="八这部分内容的三个复习结论"&gt;&lt;a href="#%e5%85%ab%e8%bf%99%e9%83%a8%e5%88%86%e5%86%85%e5%ae%b9%e7%9a%84%e4%b8%89%e4%b8%aa%e5%a4%8d%e4%b9%a0%e7%bb%93%e8%ae%ba" class="header-anchor"&gt;&lt;/a&gt;八、这部分内容的三个复习结论&#10;&lt;/h2&gt;&lt;h3 id="81-架构和目标函数是强绑定的"&gt;&lt;a href="#81-%e6%9e%b6%e6%9e%84%e5%92%8c%e7%9b%ae%e6%a0%87%e5%87%bd%e6%95%b0%e6%98%af%e5%bc%ba%e7%bb%91%e5%ae%9a%e7%9a%84" class="header-anchor"&gt;&lt;/a&gt;8.1 架构和目标函数是强绑定的&#10;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;BERT 的强项来自双向表征学习&lt;/li&gt;&#10;&lt;li&gt;T5 的强项来自 Encoder-Decoder 的条件生成&lt;/li&gt;&#10;&lt;li&gt;GPT/LLaMA 的强项来自 CLM 的一致性和扩展性&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="82-预训练模型时代和大模型时代最优解不一定相同"&gt;&lt;a href="#82-%e9%a2%84%e8%ae%ad%e7%bb%83%e6%a8%a1%e5%9e%8b%e6%97%b6%e4%bb%a3%e5%92%8c%e5%a4%a7%e6%a8%a1%e5%9e%8b%e6%97%b6%e4%bb%a3%e6%9c%80%e4%bc%98%e8%a7%a3%e4%b8%8d%e4%b8%80%e5%ae%9a%e7%9b%b8%e5%90%8c" class="header-anchor"&gt;&lt;/a&gt;8.2 预训练模型时代和大模型时代，最优解不一定相同&#10;&lt;/h3&gt;&lt;p&gt;在 PLM 时代，BERT 这样的 Encoder-Only 模型完全可以统治 NLU。&lt;br&gt;&#10;但到了 LLM 时代，随着模型和数据规模继续放大，Decoder-Only 开始在综合能力上占据主导。&lt;/p&gt;&#10;&lt;h3 id="83-实现细节背后都有取舍"&gt;&lt;a href="#83-%e5%ae%9e%e7%8e%b0%e7%bb%86%e8%8a%82%e8%83%8c%e5%90%8e%e9%83%bd%e6%9c%89%e5%8f%96%e8%88%8d" class="header-anchor"&gt;&lt;/a&gt;8.3 实现细节背后都有取舍&#10;&lt;/h3&gt;&lt;p&gt;Tokenizer、Embedding、mask、位置编码、参数共享，这些看似实现细节的设计，都对应具体的建模取舍。复习时要能回答：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;它为什么要这样看信息？&lt;/li&gt;&#10;&lt;li&gt;它为什么要这样定义训练目标？&lt;/li&gt;&#10;&lt;li&gt;它为什么在那个时代有效，又为什么在另一个时代失势？&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="九写在最后模型路线的认知框架"&gt;&lt;a href="#%e4%b9%9d%e5%86%99%e5%9c%a8%e6%9c%80%e5%90%8e%e6%a8%a1%e5%9e%8b%e8%b7%af%e7%ba%bf%e7%9a%84%e8%ae%a4%e7%9f%a5%e6%a1%86%e6%9e%b6" class="header-anchor"&gt;&lt;/a&gt;九、写在最后：模型路线的认知框架&#10;&lt;/h2&gt;&lt;p&gt;如果前面对 Transformer 的学习主要回答“模型是怎么工作的”，那么这一篇要回答的是：&lt;strong&gt;为什么不同阶段会偏向不同架构。&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;BERT 的优势来自双向理解，T5 的优势来自 text-to-text 统一接口，GPT/LLaMA 的优势来自简单一致的生成目标和更直接的规模化路径。GLM 则提醒我：融合式目标很有启发，但路线能不能走远，还要看工程上能不能稳定放大。&lt;/p&gt;&#10;&lt;p&gt;继续往下看时，可以重点追问一个问题：&#10;&lt;strong&gt;为什么一旦进入 LLM 时代，Decoder-Only + CLM 会从“其中一条路线”变成“几乎默认路线”？&lt;/strong&gt;&lt;br&gt;&#10;有了目标函数、信息流和扩展性这三个维度，这个问题就可以具体分析，而不只是凭感觉判断。&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="参考资料"&gt;&lt;a href="#%e5%8f%82%e8%80%83%e8%b5%84%e6%96%99" class="header-anchor"&gt;&lt;/a&gt;参考资料&#10;&lt;/h2&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;a class="link" href="https://github.com/datawhalechina/happy-llm/blob/main/docs/chapter3/%E7%AC%AC%E4%B8%89%E7%AB%A0%20%E9%A2%84%E8%AE%AD%E7%BB%83%E8%AF%AD%E8%A8%80%E6%A8%A1%E5%9E%8B.md" target="_blank" rel="noopener"&#10; &gt;Datawhale. Happy-LLM：第三章《预训练语言模型》&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a class="link" href="https://arxiv.org/abs/1810.04805" target="_blank" rel="noopener"&#10; &gt;Jacob Devlin et al. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a class="link" href="https://arxiv.org/abs/1907.11692" target="_blank" rel="noopener"&#10; &gt;Yinhan Liu et al. RoBERTa: A Robustly Optimized BERT Pretraining Approach&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a class="link" href="https://arxiv.org/abs/1909.11942" target="_blank" rel="noopener"&#10; &gt;Zhenzhong Lan et al. ALBERT: A Lite BERT for Self-supervised Learning of Language Representations&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a class="link" href="https://arxiv.org/abs/1910.10683" target="_blank" rel="noopener"&#10; &gt;Colin Raffel et al. Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a class="link" href="https://cdn.openai.com/research-covers/language-unsupervised/language_understanding_paper.pdf" target="_blank" rel="noopener"&#10; &gt;Alec Radford et al. Improving Language Understanding by Generative Pre-Training&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a class="link" href="https://arxiv.org/abs/2005.14165" target="_blank" rel="noopener"&#10; &gt;Tom B. Brown et al. Language Models are Few-Shot Learners&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a class="link" href="https://arxiv.org/abs/2103.10360" target="_blank" rel="noopener"&#10; &gt;Zhengxiao Du et al. GLM: General Language Model Pretraining with Autoregressive Blank Infilling&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;</description></item></channel></rss>