<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>LLaMA on Khari Z's LogBook</title><link>https://n571e.github.io/tags/llama/</link><description>Recent content in LLaMA on Khari Z's LogBook</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Sat, 18 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://n571e.github.io/tags/llama/index.xml" rel="self" type="application/rss+xml"/><item><title>从大语言模型到训练闭环：我现在怎样理解 LLM</title><link>https://n571e.github.io/p/happy-llm-llm-to-training-loop/</link><pubDate>Sat, 18 Apr 2026 00:00:00 +0000</pubDate><guid>https://n571e.github.io/p/happy-llm-llm-to-training-loop/</guid><description>&lt;img src="https://n571e.github.io/" alt="Featured image of post 从大语言模型到训练闭环：我现在怎样理解 LLM" /&gt;&lt;p&gt;从 Transformer 模块继续往上看，LLM 可以先当成一个系统来理解：&lt;strong&gt;概率语言模型底座 + 分阶段训练 + 输入输出协议&lt;/strong&gt;。&lt;/p&gt;&#10;&lt;p&gt;这篇文章把两条线接起来：一条是训练目标、能力边界和对齐思路，另一条是 tokenizer、样本构造、loss mask、generate 等实现位置。复习时重点看：每个抽象能力最后落到哪种数据格式、训练信号或推理流程。&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="一先把-llm-的整体框架理顺"&gt;&lt;a href="#%e4%b8%80%e5%85%88%e6%8a%8a-llm-%e7%9a%84%e6%95%b4%e4%bd%93%e6%a1%86%e6%9e%b6%e7%90%86%e9%a1%ba" class="header-anchor"&gt;&lt;/a&gt;一、先把 LLM 的整体框架理顺&#10;&lt;/h2&gt;&lt;p&gt;理解“大语言模型”时，先不要停在“更大、更强”。更清楚的入口是三个问题：底层目标是什么，能力为什么会变化，训练为什么要分阶段。&lt;/p&gt;&#10;&lt;h3 id="11-llm-的本质仍然是语言模型"&gt;&lt;a href="#11-llm-%e7%9a%84%e6%9c%ac%e8%b4%a8%e4%bb%8d%e7%84%b6%e6%98%af%e8%af%ad%e8%a8%80%e6%a8%a1%e5%9e%8b" class="header-anchor"&gt;&lt;/a&gt;1.1 LLM 的本质仍然是语言模型&#10;&lt;/h3&gt;&lt;p&gt;LLM 的底层目标可以先记成一句话：&lt;strong&gt;它仍然是在做 next-token prediction&lt;/strong&gt;。&lt;/p&gt;&#10;&lt;p&gt;如果写成概率形式，就是：&lt;/p&gt;&#10;$$&#10;p(x) = \prod_{t=1}^{T} p(x_t \mid x_{1:t-1})&#10;$$&lt;p&gt;这意味着，无论模型后来表现得多像助手、推理器或知识库，底座训练仍是在学习“给定前文，下一个 token 最可能是什么”。这个目标会直接决定 Pretrain 的数据组织、SFT 的标签构造，以及推理阶段逐 token 生成的方式。&lt;/p&gt;&#10;&lt;h3 id="12-llm-的强来自规模化系统共同作用"&gt;&lt;a href="#12-llm-%e7%9a%84%e5%bc%ba%e6%9d%a5%e8%87%aa%e8%a7%84%e6%a8%a1%e5%8c%96%e7%b3%bb%e7%bb%9f%e5%85%b1%e5%90%8c%e4%bd%9c%e7%94%a8" class="header-anchor"&gt;&lt;/a&gt;1.2 LLM 的强，来自规模化系统共同作用&#10;&lt;/h3&gt;&lt;p&gt;不要把 LLM 简化成“更大的 BERT”或“参数更多的 Transformer”。这样说太省事，也容易漏掉训练系统本身。&lt;/p&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;li&gt;训练策略和数据配比更成熟&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;所以，LLM 的能力提升不能只解释成“网络更深”。更准确的说法是：&lt;strong&gt;规模化训练让语言建模系统在某些规模阈值后表现出新的能力形态。&lt;/strong&gt;&lt;/p&gt;&#10;&lt;h3 id="13-区分涌现上下文学习指令遵循逐步推理"&gt;&lt;a href="#13-%e5%8c%ba%e5%88%86%e6%b6%8c%e7%8e%b0%e4%b8%8a%e4%b8%8b%e6%96%87%e5%ad%a6%e4%b9%a0%e6%8c%87%e4%bb%a4%e9%81%b5%e5%be%aa%e9%80%90%e6%ad%a5%e6%8e%a8%e7%90%86" class="header-anchor"&gt;&lt;/a&gt;1.3 区分“涌现、上下文学习、指令遵循、逐步推理”&#10;&lt;/h3&gt;&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;上下文学习（In-Context Learning）&lt;/strong&gt; 说的是：模型不需要参数更新，只通过 prompt 和 few-shot 示例，就能在当前上下文里临时适配一个任务。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;指令遵循&lt;/strong&gt; 说的是：模型开始学会把输入理解成“用户要求我做什么”，并按要求组织回答。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;逐步推理&lt;/strong&gt; 说的是：模型在处理复杂问题时，能够通过中间步骤把问题拆开，而不是一次性拍出最终答案。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;复习时不要把它们混成一句“模型更聪明了”。看到一个模型表现变好，要继续追问：是知识覆盖更充分、上下文利用更好、指令理解更稳，还是推理步骤更完整？&lt;/p&gt;&#10;&lt;h3 id="14-多语言长上下文多模态是扩展能力幻觉是系统风险"&gt;&lt;a href="#14-%e5%a4%9a%e8%af%ad%e8%a8%80%e9%95%bf%e4%b8%8a%e4%b8%8b%e6%96%87%e5%a4%9a%e6%a8%a1%e6%80%81%e6%98%af%e6%89%a9%e5%b1%95%e8%83%bd%e5%8a%9b%e5%b9%bb%e8%a7%89%e6%98%af%e7%b3%bb%e7%bb%9f%e9%a3%8e%e9%99%a9" class="header-anchor"&gt;&lt;/a&gt;1.4 多语言、长上下文、多模态是扩展能力，幻觉是系统风险&#10;&lt;/h3&gt;&lt;p&gt;还有一个判断要尽早建立：&lt;strong&gt;能力扩展和可靠性不是同一件事。&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;模型可以支持多语言、长上下文，甚至接入图像等多模态输入，但这些能力不等于可靠性。幻觉提醒我们：LLM 仍是概率生成系统，输出流畅并不等于事实正确。&lt;/p&gt;&#10;&lt;p&gt;复习锚点：长上下文不等于稳定推理，助手风格不等于事实可靠，语言流畅性不等于知识正确性。&lt;/p&gt;&#10;&lt;h3 id="15-pretrainsftrlhfdpo-之所以要分开是因为它们在解决不同问题"&gt;&lt;a href="#15-pretrainsftrlhfdpo-%e4%b9%8b%e6%89%80%e4%bb%a5%e8%a6%81%e5%88%86%e5%bc%80%e6%98%af%e5%9b%a0%e4%b8%ba%e5%ae%83%e4%bb%ac%e5%9c%a8%e8%a7%a3%e5%86%b3%e4%b8%8d%e5%90%8c%e9%97%ae%e9%a2%98" class="header-anchor"&gt;&lt;/a&gt;1.5 Pretrain、SFT、RLHF/DPO 之所以要分开，是因为它们在解决不同问题&#10;&lt;/h3&gt;&lt;p&gt;大模型训练要拆成阶段理解，因为每个阶段解决的问题不同。先看粗线条：&lt;/p&gt;&#10;&lt;div align="center"&gt;&#10; &lt;img src="llm-training-three-stages.jpg" alt="训练 LLM 的三个阶段" width="90%" /&gt;&#10; &lt;p&gt;图 1. 训练 LLM 的三个阶段，图片引自 Happy-LLM 原文&lt;/p&gt;&#10;&lt;/div&gt;&#10;&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;&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;Pretrain&lt;/strong&gt;&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;SFT&lt;/strong&gt;&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;RLHF / DPO&lt;/strong&gt;&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;“训练一个 LLM”不是单一动作。Pretrain、SFT 和偏好对齐各自改变不同东西：知识底座、回答行为、偏好边界。只有把阶段分开，后面看代码、数据格式和 loss 才不会混。&lt;/p&gt;&#10;&lt;p&gt;从 ChatGPT 的训练流程看，对齐阶段还能拆成监督微调和偏好优化两层。&lt;code&gt;SFT&lt;/code&gt; 和 &lt;code&gt;RLHF/DPO&lt;/code&gt; 不能混成一步，因为前者主要学习“怎样回答”，后者主要学习“哪种回答更符合偏好和安全要求”。&lt;/p&gt;&#10;&lt;div align="center"&gt;&#10; &lt;img src="chatgpt-training-stages.png" alt="ChatGPT 三阶段训练" width="100%" /&gt;&#10; &lt;p&gt;图 2. ChatGPT 三阶段训练示意，图片引自 Happy-LLM 原文&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="二再把最小训练闭环看清楚"&gt;&lt;a href="#%e4%ba%8c%e5%86%8d%e6%8a%8a%e6%9c%80%e5%b0%8f%e8%ae%ad%e7%bb%83%e9%97%ad%e7%8e%af%e7%9c%8b%e6%b8%85%e6%a5%9a" class="header-anchor"&gt;&lt;/a&gt;二、再把最小训练闭环看清楚&#10;&lt;/h2&gt;&lt;p&gt;前面解释“为什么这样训练”，接下来要看这些目标在代码和流程里落在哪里。最小训练闭环可以整理成：&lt;/p&gt;&#10;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;&lt;strong&gt;tokenizer -&amp;gt; 数据样本构造 -&amp;gt; Decoder-Only 模型 -&amp;gt; loss 计算 -&amp;gt; 训练循环 -&amp;gt; 生成&lt;/strong&gt;&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&lt;p&gt;只要这条链路打通，tokenizer、loss、mask、训练循环和生成就不再是散点概念。&lt;/p&gt;&#10;&lt;h3 id="21-tokenizer-是一整套输入协议"&gt;&lt;a href="#21-tokenizer-%e6%98%af%e4%b8%80%e6%95%b4%e5%a5%97%e8%be%93%e5%85%a5%e5%8d%8f%e8%ae%ae" class="header-anchor"&gt;&lt;/a&gt;2.1 Tokenizer 是一整套输入协议&#10;&lt;/h3&gt;&lt;p&gt;Tokenizer 不只是“把文本切成 token”的工具，它是一套&lt;strong&gt;输入协议&lt;/strong&gt;。&lt;/p&gt;&#10;&lt;p&gt;除了 BPE、ByteLevel、NFKC 这些技术选择，还要关注：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;特殊 token 如何定义&lt;/li&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;chat template 如何把多轮对话拼成单个序列&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;把 tokenizer 理解成协议后，很多问题会变得具体：模型如何知道当前是 user 还是 assistant，哪里应该开始回答，多轮历史怎样保持结构。这些都由特殊 token 和 chat template 规定。&lt;/p&gt;&#10;&lt;h3 id="22-看-decoder-only-模型不要只背模块名"&gt;&lt;a href="#22-%e7%9c%8b-decoder-only-%e6%a8%a1%e5%9e%8b%e4%b8%8d%e8%a6%81%e5%8f%aa%e8%83%8c%e6%a8%a1%e5%9d%97%e5%90%8d" class="header-anchor"&gt;&lt;/a&gt;2.2 看 Decoder-Only 模型，不要只背模块名&#10;&lt;/h3&gt;&lt;p&gt;看 LLaMA 风格模型结构时，不要只背模块名，要问每个模块解决什么问题：&lt;/p&gt;&#10;&lt;p&gt;先看整体结构，再把下面这些设计放回主干：&lt;/p&gt;&#10;&lt;div align="center"&gt;&#10; &lt;img src="llama2-architecture.png" alt="LLaMA2 模型结构" width="100%" /&gt;&#10; &lt;p&gt;图 3. LLaMA2 结构图，图片引自 Happy-LLM 原文&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;RMSNorm&lt;/code&gt;：让深层网络训练更稳定。&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;RoPE&lt;/code&gt;：把位置信息注入注意力计算，常用于相对位置建模。&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;GQA&lt;/code&gt; 和 &lt;code&gt;repeat_kv&lt;/code&gt;：在注意力结构里节省 KV 缓存和推理显存。&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;SwiGLU&lt;/code&gt; 风格的 MLP：增强前馈网络的表达能力。&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;embedding&lt;/code&gt; 和 &lt;code&gt;lm_head&lt;/code&gt; 权重共享：让输入词表表示和输出词表预测共用一套参数。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;复习模型结构时，按“模块 -&amp;gt; 解决的问题 -&amp;gt; 对训练/推理的影响”来记。&lt;/p&gt;&#10;&lt;h3 id="23-pretrain-和-sft-共享-clm-底座差别在监督边界"&gt;&lt;a href="#23-pretrain-%e5%92%8c-sft-%e5%85%b1%e4%ba%ab-clm-%e5%ba%95%e5%ba%a7%e5%b7%ae%e5%88%ab%e5%9c%a8%e7%9b%91%e7%9d%a3%e8%be%b9%e7%95%8c" class="header-anchor"&gt;&lt;/a&gt;2.3 Pretrain 和 SFT 共享 CLM 底座，差别在监督边界&#10;&lt;/h3&gt;&lt;p&gt;无论是预训练数据，还是 SFT 数据，最底层都还是在做自回归建模。也就是说，数据往往还是会被整理成类似这样的形式：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;X = input_ids[:-1]&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;Y = input_ids[1:]&lt;/code&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;所以可以记住：&lt;strong&gt;Pretrain 和 SFT 共享同一个 CLM 底座。&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;它们的差别主要在“哪些 token 参与监督”。预训练通常让整个序列参与语言建模；SFT 会把 system/user/history 作为上下文输入，但只让 assistant 的回答部分承担 loss。&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;loss_mask&lt;/code&gt; 的作用就是把“只塑形回答行为”落到训练信号边界上。&lt;/p&gt;&#10;&lt;h3 id="24-generate-解释了为什么生成是逐-token-进行的"&gt;&lt;a href="#24-generate-%e8%a7%a3%e9%87%8a%e4%ba%86%e4%b8%ba%e4%bb%80%e4%b9%88%e7%94%9f%e6%88%90%e6%98%af%e9%80%90-token-%e8%bf%9b%e8%a1%8c%e7%9a%84" class="header-anchor"&gt;&lt;/a&gt;2.4 generate 解释了为什么生成是逐 token 进行的&#10;&lt;/h3&gt;&lt;p&gt;生成时，模型会在当前上下文上做前向传播，只取最后一个位置的 logits，再根据 &lt;code&gt;temperature&lt;/code&gt;、&lt;code&gt;top_k&lt;/code&gt; 等采样策略决定下一个 token。新 token 会被拼回上下文，进入下一轮循环。&lt;/p&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;模型重复、越说越跑偏、不同采样参数导致结果差异很大，都和这个逐 token 生成循环有关。&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="三把概念和实现一一对应"&gt;&lt;a href="#%e4%b8%89%e6%8a%8a%e6%a6%82%e5%bf%b5%e5%92%8c%e5%ae%9e%e7%8e%b0%e4%b8%80%e4%b8%80%e5%af%b9%e5%ba%94" class="header-anchor"&gt;&lt;/a&gt;三、把概念和实现一一对应&#10;&lt;/h2&gt;&lt;p&gt;复习 LLM 时，最有效的方法是把抽象概念和代码落点对应起来：训练目标对应数据样本，助手行为对应 loss mask，对话能力对应 chat template，长上下文对应位置编码和注意力开销。&lt;/p&gt;&#10;&lt;h3 id="31-从-next-token-prediction-到-xy-shift"&gt;&lt;a href="#31-%e4%bb%8e-next-token-prediction-%e5%88%b0-xy-shift" class="header-anchor"&gt;&lt;/a&gt;3.1 从 next-token prediction 到 X/Y shift&#10;&lt;/h3&gt;&lt;p&gt;&lt;code&gt;next-token prediction&lt;/code&gt; 在代码里会直接变成 &lt;code&gt;X/Y shift&lt;/code&gt;：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;输入看前面的 token&lt;/li&gt;&#10;&lt;li&gt;标签预测后一个 token&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;这就是最基本的 &lt;code&gt;shift&lt;/code&gt; 操作。所谓“语言模型底座”，就是一种会直接决定数据组织方式和 loss 定义的训练协议。&lt;/p&gt;&#10;&lt;h3 id="32-从助手塑形到-loss_mask"&gt;&lt;a href="#32-%e4%bb%8e%e5%8a%a9%e6%89%8b%e5%a1%91%e5%bd%a2%e5%88%b0-loss_mask" class="header-anchor"&gt;&lt;/a&gt;3.2 从“助手塑形”到 loss_mask&#10;&lt;/h3&gt;&lt;p&gt;SFT 的目标是“助手行为塑形”。落实到实现里，问题会收缩成一句话：&lt;/p&gt;&#10;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;哪些 token 应该参与监督，哪些 token 只是上下文条件？&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&lt;p&gt;&lt;code&gt;loss_mask&lt;/code&gt; 把 SFT 的监督边界写进了数据里：用户输入和历史对话提供条件，assistant 的回答部分提供监督信号。这个边界比“做监督微调”这个词本身更重要。&lt;/p&gt;&#10;&lt;h3 id="33-从多轮对话能力到-special-tokens-与-chat-template"&gt;&lt;a href="#33-%e4%bb%8e%e5%a4%9a%e8%bd%ae%e5%af%b9%e8%af%9d%e8%83%bd%e5%8a%9b%e5%88%b0-special-tokens-%e4%b8%8e-chat-template" class="header-anchor"&gt;&lt;/a&gt;3.3 从“多轮对话能力”到 special tokens 与 chat template&#10;&lt;/h3&gt;&lt;p&gt;多轮对话能力也要落到数据格式上。只说它来自 SFT 和对齐还不够，还要看训练数据如何被组织成模型能理解的序列。&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;special tokens&lt;/code&gt; 和 &lt;code&gt;chat_template&lt;/code&gt; 会显式标记：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;一轮对话从哪里开始&lt;/li&gt;&#10;&lt;li&gt;user 和 assistant 的边界在哪里&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;/p&gt;&#10;&lt;h3 id="34-从长上下文与位置感到-rope"&gt;&lt;a href="#34-%e4%bb%8e%e9%95%bf%e4%b8%8a%e4%b8%8b%e6%96%87%e4%b8%8e%e4%bd%8d%e7%bd%ae%e6%84%9f%e5%88%b0-rope" class="header-anchor"&gt;&lt;/a&gt;3.4 从“长上下文与位置感”到 RoPE&#10;&lt;/h3&gt;&lt;p&gt;长上下文也要落到结构和成本上。它不仅是“能放更多文本”，还牵涉位置编码、训练长度、推理缓存和注意力开销。&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;RoPE&lt;/code&gt; 解决的是“位置信息如何进入注意力计算”。长上下文能力不是一句宣传语，背后有位置编码设计、上下文长度外推策略和推理时 KV cache 成本。&lt;/p&gt;&#10;&lt;p&gt;如果把视角进一步缩到注意力层里，这张图就很适合用来理解 &lt;code&gt;RoPE&lt;/code&gt;、&lt;code&gt;GQA&lt;/code&gt; 和 &lt;code&gt;repeat_kv&lt;/code&gt; 为什么总是一起出现：&lt;/p&gt;&#10;&lt;div align="center"&gt;&#10; &lt;img src="llama2-attention.png" alt="LLaMA2 Attention 结构" width="58%" /&gt;&#10; &lt;p&gt;图 4. LLaMA2 Attention 结构图，图片引自 Happy-LLM 原文&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;复习时要把“模型能力”和“结构选择”对应起来，而不是把二者当作独立话题。&lt;/p&gt;&#10;&lt;h3 id="35-从训练阶段到训练闭环"&gt;&lt;a href="#35-%e4%bb%8e%e8%ae%ad%e7%bb%83%e9%98%b6%e6%ae%b5%e5%88%b0%e8%ae%ad%e7%bb%83%e9%97%ad%e7%8e%af" class="header-anchor"&gt;&lt;/a&gt;3.5 从“训练阶段”到“训练闭环”&#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;warmup&lt;/li&gt;&#10;&lt;li&gt;梯度累积&lt;/li&gt;&#10;&lt;li&gt;AMP 混合精度&lt;/li&gt;&#10;&lt;li&gt;梯度裁剪&lt;/li&gt;&#10;&lt;li&gt;checkpoint 保存&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;训练不是只写一个 loss。模型目标、数据格式、mask 设计、优化器设置、训练循环、checkpoint 和生成行为共同构成闭环。缺少其中任意一块，对系统的理解都会变得片面。&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="四这篇先留下哪些结论"&gt;&lt;a href="#%e5%9b%9b%e8%bf%99%e7%af%87%e5%85%88%e7%95%99%e4%b8%8b%e5%93%aa%e4%ba%9b%e7%bb%93%e8%ae%ba" class="header-anchor"&gt;&lt;/a&gt;四、这篇先留下哪些结论&#10;&lt;/h2&gt;&lt;p&gt;复习这篇时，我先保留下面几条。&lt;/p&gt;&#10;&lt;h3 id="41-llm-先是语言模型然后才是助手"&gt;&lt;a href="#41-llm-%e5%85%88%e6%98%af%e8%af%ad%e8%a8%80%e6%a8%a1%e5%9e%8b%e7%84%b6%e5%90%8e%e6%89%8d%e6%98%af%e5%8a%a9%e6%89%8b" class="header-anchor"&gt;&lt;/a&gt;4.1 LLM 先是语言模型，然后才是助手&#10;&lt;/h3&gt;&lt;p&gt;它的根始终在 &lt;code&gt;next-token prediction&lt;/code&gt;。只有先接受这一点，后面关于对齐、助手风格、推理链、工具调用之类的能力，才有一个稳定的起点。&lt;/p&gt;&#10;&lt;h3 id="42-llm-的能力要拆开看不能混成一句它更聪明了"&gt;&lt;a href="#42-llm-%e7%9a%84%e8%83%bd%e5%8a%9b%e8%a6%81%e6%8b%86%e5%bc%80%e7%9c%8b%e4%b8%8d%e8%83%bd%e6%b7%b7%e6%88%90%e4%b8%80%e5%8f%a5%e5%ae%83%e6%9b%b4%e8%81%aa%e6%98%8e%e4%ba%86" class="header-anchor"&gt;&lt;/a&gt;4.2 LLM 的能力要拆开看，不能混成一句“它更聪明了”&#10;&lt;/h3&gt;&lt;p&gt;涌现、上下文学习、指令遵循、逐步推理对应不同类型的能力变化。把这些概念分开，是理解模型行为边界的前提。&lt;/p&gt;&#10;&lt;h3 id="43-三阶段训练对应的是三类不同问题"&gt;&lt;a href="#43-%e4%b8%89%e9%98%b6%e6%ae%b5%e8%ae%ad%e7%bb%83%e5%af%b9%e5%ba%94%e7%9a%84%e6%98%af%e4%b8%89%e7%b1%bb%e4%b8%8d%e5%90%8c%e9%97%ae%e9%a2%98" class="header-anchor"&gt;&lt;/a&gt;4.3 三阶段训练对应的是三类不同问题&#10;&lt;/h3&gt;&lt;p&gt;Pretrain 学的是语言和知识底座，SFT 学的是助手式回答行为，RLHF/DPO 学的是偏好与安全边界。它们对应不同目标。&lt;/p&gt;&#10;&lt;h3 id="44-很多能力最后都会落成训练协议"&gt;&lt;a href="#44-%e5%be%88%e5%a4%9a%e8%83%bd%e5%8a%9b%e6%9c%80%e5%90%8e%e9%83%bd%e4%bc%9a%e8%90%bd%e6%88%90%e8%ae%ad%e7%bb%83%e5%8d%8f%e8%ae%ae" class="header-anchor"&gt;&lt;/a&gt;4.4 很多“能力”最后都会落成训练协议&#10;&lt;/h3&gt;&lt;p&gt;对话能力会落到 &lt;code&gt;special tokens&lt;/code&gt; 和 &lt;code&gt;chat_template&lt;/code&gt;，SFT 会落到 &lt;code&gt;loss_mask&lt;/code&gt;，语言建模目标会落到 &lt;code&gt;X/Y shift&lt;/code&gt;，长上下文能力会落到 &lt;code&gt;RoPE&lt;/code&gt; 与注意力成本。&lt;/p&gt;&#10;&lt;h3 id="45-理解-llm要把概念数据和代码三层接起来"&gt;&lt;a href="#45-%e7%90%86%e8%a7%a3-llm%e8%a6%81%e6%8a%8a%e6%a6%82%e5%bf%b5%e6%95%b0%e6%8d%ae%e5%92%8c%e4%bb%a3%e7%a0%81%e4%b8%89%e5%b1%82%e6%8e%a5%e8%b5%b7%e6%9d%a5" class="header-anchor"&gt;&lt;/a&gt;4.5 理解 LLM，要把概念、数据和代码三层接起来&#10;&lt;/h3&gt;&lt;p&gt;只学概念容易空，只看代码容易碎。要同时问两件事：为什么这样设计，它在实现里长什么样。&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="五写在最后怎样理解-llm"&gt;&lt;a href="#%e4%ba%94%e5%86%99%e5%9c%a8%e6%9c%80%e5%90%8e%e6%80%8e%e6%a0%b7%e7%90%86%e8%a7%a3-llm" class="header-anchor"&gt;&lt;/a&gt;五、写在最后：怎样理解 LLM&#10;&lt;/h2&gt;&lt;p&gt;这篇最后可以整理成一个框架：&lt;/p&gt;&#10;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;&lt;strong&gt;LLM = 概率语言模型底座 + 分阶段训练 + 一整套输入输出协议。&lt;/strong&gt;&lt;/p&gt;&#10;&#10; &lt;/blockquote&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;li&gt;它在实现里最终落到了什么地方？&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;这套检查方式能把“大语言模型为什么这样训练”和“代码为什么这样写”连起来。继续学习 LoRA、QLoRA、DPO 或其他对齐训练时，也可以沿着这条线看：它改的是参数更新方式、监督边界、偏好目标，还是输入输出协议。&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/chapter4/%E7%AC%AC%E5%9B%9B%E7%AB%A0%20%E5%A4%A7%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://github.com/datawhalechina/happy-llm/tree/main/docs/chapter5" 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://github.com/datawhalechina/happy-llm" target="_blank" rel="noopener"&#10; &gt;Datawhale Happy-LLM 仓库&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;</description></item><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>