大模型通识:从 Token、Transformer 到训练与推理
面向没有大模型算法基础的工程师,用一条完整运行链解释 Token、向量、Attention、Transformer、预训练、微调、后训练、推理、KV Cache,以及 Prompt、RAG 与模型参数各自改变了什么。
大模型能续写文章、解释代码、调用工具,底层任务却很朴素:读入一串 Token,计算下一个 Token 的概率,再把选中的 Token 接回输入,继续计算。
这句话解释了生成,却没有解释能力从哪里来。为什么预测下一个 Token 能学会翻译和编程?Attention 在算什么?训练、微调、后训练分别改变了什么?模型回答问题时还会训练吗?上下文窗口和参数量有什么关系?KV Cache 为什么会占用大量显存?
本文给没有算法基础的工程师搭一张地图。数学只保留理解机制所需的部分,不推导梯度和反向传播细节。读完后,你应该能沿着一次请求说清:文字怎样变成 Token,Token 怎样穿过 Transformer,模型如何得到下一个 Token,以及预训练、后训练和推理系统分别在哪一段工作。
一、先把模型、Agent 和应用分开
LLM 是一个根据输入计算输出概率的模型。它接收 Token 序列,输出每个候选 Token 的分数。模型本身不会打开网页、执行命令或永久保存聊天。我们看到的联网、文件操作、Memory 和多轮任务,来自模型外面的应用或 Agent Harness。
聊天产品还会在调用模型前拼装系统指令、历史消息、检索资料和工具定义。模型生成工具调用后,运行时执行真实动作,再把结果作为新消息送回模型。用户感受到的是完整产品,LLM 只是其中负责语言理解和候选动作生成的一层。
区分这几层有助于判断问题应该在哪解决。模型不知道最新新闻,可能要联网检索;它总把某种格式写错,可能适合 Prompt、示例或微调;它声称文件已保存但磁盘没有变化,是 Agent 执行与验证问题;它在很长对话里忘记早期约束,则涉及上下文选择和压缩。
本文集中讲模型层,同时在需要的地方标出它与应用层的接口。把模型的概率计算和应用的确定动作混在一起,会让“模型学会了”“Agent 记住了”“系统执行了”这些说法失去边界。
二、一次请求经历哪几步
假设输入一句话:“Redis 为什么会出现热 Key?”完整路径可以压缩成七步:
文本
→ Tokenizer 切成 Token ID
→ Embedding 把 ID 变成向量
→ 多层 Transformer 更新每个位置的表示
→ 输出层得到候选 Token 的 logits
→ Softmax 与采样策略选出一个 Token
→ 把新 Token 接到序列末尾,重复以上过程
第一轮会同时处理整段问题,通常叫 Prefill。之后每次只生成一个新 Token,叫 Decode。模型在生成“热 Key 是”之后,才继续预测下一个词片段;它不是先在内部写好整篇答案再逐字显示。
服务端还会处理批次、显存、并发、停止符和流式传输。应用层可能在中途识别出工具调用,让数据库或搜索引擎提供信息。无论外围多复杂,每次进入模型的核心仍是一串 Token,每次出来的是下一个 Token 的概率分布或由它选出的 Token。
这条链是后续所有概念的坐标。Tokenization 改变输入序列;Transformer 负责计算表示;预训练与后训练改变参数;Prompt 和 RAG 改变当前输入;KV Cache 与推理引擎降低在线计算成本。
三、Token:模型处理的不是字,也不是单词
计算机先把文本转换成整数 ID。Tokenizer 使用固定词表,把常见片段映射到一个 Token,把少见内容拆成多个 Token。英文中的一个单词可能是一个或几个 Token,中文一个字也不保证对应一个 Token;代码缩进、空格和符号同样会占位置。
直接以完整单词建词表会遇到未登录词和巨大词表,以单个字符为单位又会让序列太长。现代语言模型常使用子词方法,在词表规模与序列长度之间折中。SentencePiece提供了从原始句子直接训练子词模型的语言无关方案,BPE 和 Unigram 则是常见的切分思路。
Tokenizer 决定了三个现实问题。第一,同样长度的中文、英文和代码,Token 数可能不同,因此费用和可容纳信息也不同。第二,模型很难稳定处理逐字符任务,因为它实际看到的是子词 ID。第三,词表一旦随模型训练确定,通常不能随意替换,否则同一个 ID 的含义会变化,已有参数就失去对应关系。
模型还使用特殊 Token 表示消息边界、角色、结束或工具协议。聊天模板会把 system、user、assistant 消息编码成一段具体 Token 序列。两个 API 即使显示相同对话,只要模板或特殊 Token 不同,模型得到的真实输入就可能不同。
四、Embedding:把离散编号放进连续空间
Token ID 只是编号,1024 并不比 17 更“接近”某个概念。Embedding 表像一张可训练的查找表,每个 Token ID 对应一个由许多数值组成的向量。模型训练会调整这些数值,让出现在相似上下文中的 Token 形成可利用的几何关系。
向量可以暂时理解成一排坐标。单个维度通常没有可直接命名的人类含义,信息分布在许多维度及其组合中。进入第一个 Transformer 层的是初始 Token Embedding;经过每一层后,向量会融入前文信息。同一个“苹果”在水果和公司语境里,初始 ID 相同,后续隐藏状态会不同。
序列还需要位置信息。Attention 本身看到一组向量时,不天然知道谁先谁后。原始 Transformer 论文使用正弦位置编码,现代 Decoder-only 模型常使用 RoPE 等方法,把相对位置信息带进注意力计算。上下文扩展方案经常调整的就是这一部分及其训练分布。
Embedding 模型和生成式 LLM 也不要混淆。用于检索的 Embedding 模型把文本压成便于比较的一条向量;生成模型保留每个 Token 的隐藏状态,并逐步预测新 Token。它们都使用向量,但训练目标和输出用途不同。
五、理解 Attention 只需要三个问题
Self-Attention 让序列中每个位置读取其他位置的信息。对当前 Token 来说,它要解决三个问题:我在找什么,其他位置提供什么索引,它们真正携带什么内容。模型用三组线性变换把隐藏状态映射成 Query、Key 和 Value,简称 Q、K、V。
可以把 Query 理解成查询条件,Key 是每条记录用于匹配的索引,Value 是匹配后要取回的内容。当前 Query 与所有 Key 做点积,分数经过缩放和 Softmax 变成一组权重,再对 Value 加权求和:
Attention(Q, K, V) = softmax(QKᵀ / √d) V
点积越大,表示当前 Query 与某个 Key 在模型学到的空间里越匹配。除以 √d 用来控制数值尺度,Softmax 把分数转成总和为 1 的权重。最终输出是许多 Value 的加权组合,不是从原文复制一个词。
生成式模型还会加 Causal Mask:位置 i 只能读取自己和左侧 Token,不能偷看右侧未来答案。训练时整段文本可以并行计算,但每个位置的监督目标仍是它右边的下一个 Token。这既保留了自回归语义,也充分利用了 GPU 的并行能力。
六、Multi-Head 为什么需要多个头
单个 Attention 只产生一种匹配与聚合方式。Multi-Head Attention 把隐藏维度分成多个头,每个头有自己的 Q、K、V 投影,可以学习不同关系。某些头可能更关注局部搭配,某些头能追踪更远的引用,但不能把每个头简单标成固定语法功能;实际表示是分布式的,也会随层和输入变化。
各个头的输出拼接后再经过线性变换,回到模型隐藏维度。头数增加不等于参数和计算无限增加,因为每个头通常使用更小的维度。现代模型还会使用 Multi-Query Attention 或 Grouped-Query Attention,让多个 Query 头共享较少的 K/V 头,主要目的是降低推理时 KV Cache 的体积和内存带宽压力。
Attention 的标准计算随序列长度呈二次增长,因为每个位置都可能和其他位置计算关系。长上下文因此昂贵。FlashAttention没有近似掉标准 Attention,而是通过分块和减少 GPU 高带宽内存读写提高实际速度。它提醒我们,公式里的计算量不是系统性能的全部,数据在显存层级之间怎样移动同样重要。
七、Transformer Block 不只有 Attention
一个典型 Decoder Block 还包含前馈网络、残差连接和归一化。Attention 负责在 Token 位置之间交换信息;前馈网络对每个位置独立做非线性变换,提供更大的表示容量。现代模型常使用 SwiGLU 一类门控结构,具体实现会随模型家族变化。
残差连接把模块输入直接加到输出,让信息和梯度能穿过很深的网络。归一化控制数值尺度,现代 LLM 常见 RMSNorm,原始 Transformer 使用 LayerNorm。Pre-Norm 或 Post-Norm 描述归一化位于子层之前还是之后,也会影响深层训练稳定性。
同一种 Block 重复几十层后,每个 Token 的表示逐渐融合从局部到全局的上下文。最后的输出投影把隐藏向量映射到词表大小,每个候选 Token 得到一个 logit。Logit 是未经归一化的分数;Softmax 之后才是概率。
参数量主要来自 Embedding、Attention 投影和前馈网络中的权重矩阵。所谓 7B、70B,表示可训练参数大约有 70 亿或 700 亿,不是模型保存了同等数量的句子。知识与行为以分布式方式编码在权重中,很难像数据库记录那样精确定位、直接删除或可靠引用来源。
八、原始 Transformer 与今天的 LLM 有什么不同
2017 年的《Attention Is All You Need》面向机器翻译,结构包含 Encoder 和 Decoder。Encoder 双向读取源语言,Decoder 一边读取已生成目标文本,一边通过 Cross-Attention 读取 Encoder 输出。论文的贡献是用 Attention 取代循环与卷积作为主要序列建模机制,并提高训练并行度。
GPT 路线主要使用 Decoder-only Transformer。所有文本放进同一自回归序列,只预测下一个 Token,不再需要单独 Encoder。BERT 则走 Encoder-only 路线,通过遮盖 Token 等目标学习双向表示,更适合理解和分类,不天然用于从左到右长文本生成。
因此“Transformer”“GPT”和“LLM”不是同义词。Transformer 是网络架构家族;GPT 是生成式预训练 Transformer 的一条路线;LLM 描述大规模语言模型,今天多数使用 Transformer,但规模、数据、训练目标和后训练共同决定最终能力。
现代 LLM 还加入 RoPE、RMSNorm、SwiGLU、GQA、Mixture-of-Experts 等改动。通识阶段无需一次记住全部名词,先抓住稳定骨架:Token 向量进入多层 Attention 与前馈网络,输出下一个 Token 分布。后续专题再分析各个部件为何变化。
九、预训练:用海量文本反复做下一词预测
预训练把大量文本切成 Token 序列。对于序列 A B C D,模型学习用 A 预测 B,用 A B 预测 C,用 A B C 预测 D。损失函数会惩罚正确 Token 概率过低,反向传播计算每个参数对误差的影响,优化器沿降低损失的方向更新参数。
单个样本只提供很弱的信号,海量数据上的重复训练让模型逐渐学习语言规律、事实关联、代码模式和任务结构。GPT-3 论文展示了模型规模扩大后更强的 zero-shot、one-shot 和 few-shot 行为,同时也报告了一些自然语言推理和阅读理解任务上的不足。论文里的 in-context learning 没有更新参数,只是把任务说明和示例放进当前输入。
预测下一个 Token 看似没有直接教授“回答问题”。训练数据中却存在问答、教程、对话、代码、推理过程和各种文本变换。为了降低广泛分布上的预测误差,模型需要压缩这些结构。能力是目标、数据、规模和优化共同产生的结果,不能简化成模型在数据库里背下了所有网页。
预训练成本来自数据处理、计算集群、并行策略、优化稳定性和失败恢复。模型并非把数据读一遍就结束,训练过程会按批次运行大量参数更新。数据去重、质量、语言和领域配比会影响模型偏好,版权、隐私和污染也从这里进入系统。
十、预训练模型为什么还不会好好聊天
基础模型学到的是“什么文本可能接在后面”,用户需要的是“理解指令并给出有帮助、安全、格式合适的回答”。网页中既有高质量教程,也有争吵、广告、错误答案和角色扮演。仅靠下一 Token 目标,没有一个天然机制保证模型总选择用户想要的行为。
监督微调(SFT)使用“指令—理想回答”样本继续训练,让模型熟悉对话格式、任务边界和回答风格。数据质量通常比机械堆量更重要,因为这些样本直接定义什么行为被视为示范。SFT 之后的模型更会遵循指令,但仍可能在多个看似合理的答案之间选择不符合人类偏好的那个。
InstructGPT展示了一条经典 RLHF 流程:先收集示范做监督微调,再让标注者比较多个模型回答,训练 Reward Model,最后使用强化学习优化策略,同时限制它不要偏离原模型过远。论文的结论来自其数据与实验设置,不能直接推出任何 RLHF 模型都一定更真实或安全。
DPO进一步把偏好优化改写为分类形式的目标,避免单独训练 Reward Model 和运行复杂的在线强化学习循环。今天“后训练”覆盖的范围很广,包括 SFT、偏好优化、可验证奖励、拒绝采样与安全训练。具体方法会变化,核心问题始终是用什么数据和反馈塑造模型行为。
十一、微调和后训练是什么关系
“微调”描述在预训练权重基础上继续更新参数这个大类;“后训练”更强调基础预训练结束后,为指令遵循、偏好、安全和推理行为进行的一整套训练阶段。SFT、DPO 和部分强化学习都可以看作微调方法,也可以是后训练流水线的一部分。
Full Fine-tuning 更新全部参数,资源需求高,也更容易影响原有能力。Parameter-Efficient Fine-Tuning 只训练少量新增或选定参数。LoRA冻结原权重,在部分线性层加入低秩矩阵,用较少可训练参数完成适配。QLoRA 进一步结合量化底座以降低训练显存,但量化、优化器状态和精度取舍需要单独分析。
微调适合稳定、重复且难靠当前上下文表达的行为或领域分布,不适合当作随时更新事实的数据库。新政策、库存和用户资料频繁变化,更适合检索或工具。训练数据写错后,删除影响也比改一条知识库记录困难。
“给模型加入公司知识”可能指三件完全不同的事:把材料放进 Prompt;运行时通过 RAG 检索;用领域数据更新参数。它们改变的层不同,时效、成本和可审计性也不同。
十二、Prompt、RAG、微调和工具怎样选择
Prompt 改变当前请求中的条件,不改模型参数。它适合任务说明、格式约束和少量示例,更新快、容易检查,但受上下文窗口和指令遵循能力限制。
RAG 在调用前检索外部资料,把命中内容加入 Context。它适合频繁更新、需要来源和权限控制的知识。检索漏掉、召回错误或旧资料冲突时,模型仍会回答错误,因此 RAG 是信息供应机制,不是正确性保证。
微调改变模型参数,适合稳定行为、领域语言或输出习惯。它需要数据、训练资源和回归评测,更新慢,事实来源难追踪。工具让模型查询数据库、执行计算或操作系统,结果可来自当前外部状态,但需要权限、错误处理和验证。
| 方式 | 改变什么 | 适合场景 | 主要限制 |
|---|---|---|---|
| Prompt | 本次输入 | 指令、格式、少量示例 | 窗口有限,可能不遵循 |
| RAG | 本次输入中的外部证据 | 最新知识、私有文档、引用 | 依赖检索与资料质量 |
| 微调 | 模型参数 | 稳定行为、领域表达、任务适配 | 成本高,回滚与溯源较难 |
| 工具 | 外部世界的观察和动作 | 实时查询、计算、执行 | 需要权限、协议和验收 |
很多生产系统会组合四者:Prompt 规定任务,RAG 提供证据,微调改善稳定行为,工具执行可验证动作。选择的依据是变化频率、风险和验收方式,不是哪个名词更新。
十三、推理:参数不再学习,模型开始逐 Token 生成
在线回答通常叫推理。模型加载已经训练好的权重,执行前向计算,不做梯度更新。当前聊天不会自动写回权重;所谓模型“从对话中学习”,常见实现是应用保存历史、Memory 或后续离线收集数据,而非这次推理直接训练了模型。
Prefill 阶段并行处理整个输入,生成每一层的 Key 和 Value;Decode 阶段逐 Token 运行,每一步只为新 Token 计算 Query、Key、Value,并复用前文缓存。Prompt 很长时首 Token 延迟通常受 Prefill 影响,答案很长时生成速度更多受 Decode 和内存带宽影响。
最后的概率分布还要经过解码策略。Greedy 每次取最高概率;Temperature 调整分布尖锐程度;Top-k 只保留概率最高的 k 个候选;Top-p 保留累计概率达到阈值的一组候选。Temperature 为 0 也不意味着答案经过事实验证,只表示选择更确定。
停止条件可以是结束 Token、长度上限或应用定义的字符串。工具调用常用结构化 Token 或约定格式表达,模型生成“调用什么和参数是什么”,Harness 再校验并执行。推理层产生候选,执行权仍在系统层。
十四、KV Cache 为什么能加速,又为什么吃显存
生成第 100 个 Token 时,前 99 个 Token 的 Key 和 Value 与上一轮相同。如果每一步都重新计算全部前文,会浪费大量计算。KV Cache 为每层保存历史 Token 的 K/V,下一步只计算新 Token,并让 Query 读取缓存。
缓存大小大致随层数、序列长度、K/V 头数、头维度、数据精度和并发请求数线性增长。上下文越长、并发越高,显存压力越大。GQA 和 MQA 通过减少 K/V 头降低缓存体积,但会引入模型设计上的质量与容量取舍。
KV Cache 属于当前推理状态,不是长期记忆,也不是模型参数。关闭会话或释放请求后,它通常可以删除;换一段完全不同的前缀也不能直接复用。Prefix Caching 在多个请求共享相同 Token 前缀时复用部分缓存,需要严格匹配 Token 和模型配置。
PagedAttention借鉴虚拟内存分页管理动态增长的 KV Cache,减少连续大块分配造成的碎片,并支持更灵活的共享。它主要改进服务系统的内存利用,不改变模型注意力学到的知识。
十五、上下文窗口、参数和显存不要混为一谈
参数量表示模型中可训练权重的数量,影响模型文件大小、矩阵计算量和表示容量。上下文窗口表示一次推理最多处理多少 Token,包括系统提示、历史、检索资料、工具结果和待生成内容。窗口更长不会自动增加参数,也不会把输入永久写进模型。
显存通常要容纳模型权重、KV Cache、临时激活和推理框架开销。训练还要保存梯度、优化器状态和更多中间激活,所以训练同一模型通常比纯推理需要更多显存。量化可降低权重存储与带宽,但不同位宽和量化方法会影响精度、速度和硬件兼容。
长上下文也不等于模型能同等可靠地使用每个位置。训练长度、位置编码、注意力分布和任务结构都会影响长文表现。应用仍需要选择信息、建立层次和验证引用,不能把“放得进去”当成“理解并正确使用”。
十六、为什么模型会一本正经地说错
语言模型优化的是训练分布上的 Token 预测和后训练目标,不是连接一个保证真实的事实数据库。一个陈述语言流畅、与上下文形式匹配,就可能获得较高概率,即使现实中不存在。缺少信息时,模型也不天然知道自己应该停下。
幻觉来源不止一个。参数里的事实可能过期或混杂;Prompt 缺少关键条件;RAG 提供了错误片段;解码选择了低概率分支;多步推理的早期错误被后文继续使用;工具失败后应用又把空结果包装成正常信息。只说“模型幻觉”会掩盖具体故障层。
降低错误需要匹配问题来源:需要最新事实时检索;需要精确计算时调用程序;需要引用时保存来源并检查陈述;需要固定格式时使用 Schema;高风险结论用外部规则、测试或人工批准。让模型再读一遍自己的回答能发现一部分问题,但执行者自评不能替代独立证据。
十七、一次完整例子:模型怎样回答技术问题
继续用“Redis 为什么会出现热 Key?”作为输入。聊天应用先根据模板加入 system 指令和历史,Tokenizer 把整段文本变成 Token ID。Embedding 与位置表示进入 Decoder,Prefill 计算每层隐藏状态并建立 KV Cache。
最后位置的隐藏状态经过输出层,得到词表上所有 Token 的 logits。解码器选择“热”或其他子词作为第一个输出,再进入 Decode。每次新 Token 都会向已有 KV Cache 追加一小段状态,模型逐渐生成解释。
如果应用启用了 RAG,它可能在调用前检索 Redis 文档,把分片、访问频率和大 Key 资料放进输入。如果启用了搜索工具,模型也可能先生成工具调用,Harness 获取结果后开启下一轮推理。模型参数没有在这次问答中更新;变化的是 Context、KV Cache 和外部工具状态。
验收答案时,可以检查它是否区分“访问集中”和“容量倾斜”,是否给出可观察指标,是否引用当前 Redis 版本资料。模型只负责生成候选解释,事实与操作建议仍要通过文档、监控和实验确认。
这个例子把不同层串了起来:Tokenizer 决定输入长度,Transformer 产生表示,后训练让回答更符合指令,RAG 提供当前证据,KV Cache 加速连续生成,应用负责工具与验证。任一层出错,都可能在最终文字里表现成“模型答错了”。
十八、读懂大模型需要多少数学
通识阶段先掌握四个对象,不必马上完成严格推导。标量是一个数,例如某个 Token 的分数;向量是一组数,例如一个 Token 的隐藏状态;矩阵可以看成许多向量组成的表,也可以看成把一条向量转换成另一条向量的函数;张量是更高维的数据容器,Batch、Token、Head 和 Hidden Dimension 经常构成它的不同维度。
线性层通常写成 y = Wx + b。输入向量 x 乘权重矩阵 W,得到新的表示 y。Q、K、V 都来自不同的线性投影,前馈网络也主要由更大的矩阵乘法组成。GPU 适合并行执行这类计算,因此模型架构、数据形状和硬件利用率紧密相关。
点积把两个等长向量变成一个数,可以粗略理解为方向相似度与长度的组合。Attention 用 Query 和 Key 的点积产生匹配分数。Softmax 把一组任意实数转成非负、总和为 1 的分布;输出层也用它把 logits 转成词表概率。指数运算会放大分数差距,所以要注意数值稳定和缩放。
训练中的 Loss 是一个衡量预测与目标差距的标量。语言模型常用交叉熵:正确 Token 得到的概率越低,损失越高。梯度描述参数发生微小变化时 Loss 会朝哪个方向变化,反向传播从输出向前高效计算这些梯度,优化器再更新权重。训练一轮并不是“记住一篇文章”,而是许多样本共同推动大量参数发生细小变化。
概率还需要一个观念:模型输出的是条件分布 P(下一个 Token | 已有 Token)。它给候选排序,不声明现实世界中的真假。高概率表示在模型当前参数和 Context 下更符合分布。事实验证、权限和动作结果来自模型外部,这也是生成概率和系统可靠性必须分开设计的原因。
如果要深入模型训练,再系统补线性代数、概率统计、微积分和优化;若重点是 Agent 与应用,能读懂张量形状、矩阵乘法、Softmax、Loss 和推理链已经足以理解大量工程资料。遇到公式时先标注每个变量的形状和生命周期,往往比一开始追求完整证明更有效。
十九、怎样理解模型评测
训练日志里的 Loss 只能说明模型在给定数据和目标上的拟合情况。Perplexity(困惑度)由语言模型损失换算而来,可以理解为模型面对下一个 Token 时的平均不确定程度;同一 Tokenizer、数据和设置下,数值更低通常表示预测更好。跨词表、跨数据集直接比较困惑度容易产生误导。
Benchmark 把能力拆成知识、数学、代码、长上下文、工具使用或安全等任务。一个总分会掩盖题目分布、提示模板、采样参数和评分器差异。公开测试还可能进入训练数据,形成污染;选择题得分也不能直接代表开放式任务与真实软件工程能力。
生成式任务难以完全依靠字符串匹配,常用人工评价或 LLM Judge。Judge 能扩大评测规模,也会受顺序、长度、措辞和自身模型偏好影响。更可靠的做法是给出明确评分规则,随机交换答案顺序,用多个评审或人工抽查,并保留失败样本,而不是只公布平均分。
业务评测需要从真实任务取样。客服模型要检查事实、引用、拒答和用户问题是否解决;代码模型要在隔离仓库运行测试并审查改动范围;RAG 要分开测召回、答案忠实度和端到端成功;Agent 还要记录工具错误、越权、成本和任务是否可恢复。同一个模型在通用榜单领先,不保证在你的数据、Prompt 和工具环境里最好。
性能也属于评测。常见指标包括首 Token 延迟、每 Token 延迟、吞吐、并发、显存和单次请求成本。长 Context、量化或更激进的批处理可能提高一项指标、损害另一项。报告模型质量时应同时固定推理参数和服务配置,否则模型差异与系统差异会混在一起。
对于刚开始学习的人,最有用的评测练习是建立十到二十条自己能判断对错的固定问题,覆盖事实、解释、代码、长文本和拒答。每次改 Prompt、RAG、模型或采样设置都重跑,保存输入、输出和证据。这个小集合不能替代正式评测,却能把“感觉模型更聪明”变成可复查的具体变化。
二十、怎样开始学习,才不会被名词淹没
第一阶段先掌握一条 Token 运行链:Tokenizer、Embedding、Attention、Transformer Block、logits 和采样。能用自己的话解释一轮 Prefill 和一轮 Decode,就已经有了阅读大多数模型资料的坐标。
第二阶段再看训练链:预训练的下一 Token 目标,SFT 的示范数据,偏好优化的数据形态,以及 LoRA 为什么只更新少量参数。这里先关心每个阶段改变什么,不急着推导所有损失函数。
第三阶段进入推理工程:KV Cache、显存构成、批处理、量化、FlashAttention 和 PagedAttention。把一次 API 调用对应到 GPU 上的 Prefill、Decode 和缓存,许多成本与延迟问题会变得具体。
最后再按需求深入。做 RAG 要重点学习 Embedding、检索和评测;做模型训练要补线性代数、概率、优化和分布式计算;做 Agent 要理解模型接口与 Harness 边界;做推理平台要关注显存、调度和内核。没有必要先学完全部数学才能开始,但每深入一层,都应该回到可运行例子验证理解。
这个专栏后续会依次拆解 Attention 原论文、现代 Decoder、Tokenization、KV Cache、预训练、LoRA、后训练与推理优化。本文是它们共享的地图。读专题时如果被公式或系统细节卡住,可以回到这里确认它位于输入、参数更新还是在线推理阶段。
参考资料
- Attention Is All You Need
- SentencePiece: A simple and language independent subword tokenizer and detokenizer
- Language Models are Few-Shot Learners
- Training language models to follow instructions with human feedback
- Direct Preference Optimization
- LoRA: Low-Rank Adaptation of Large Language Models
- FlashAttention
- Efficient Memory Management for Large Language Model Serving with PagedAttention
如果这篇文章对你有帮助