<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>RLHF on Khari Z's LogBook</title><link>https://n571e.github.io/tags/rlhf/</link><description>Recent content in RLHF 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/rlhf/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></channel></rss>