LLM到底怎么工作的?从Token到下一Token预测的完整链路拆解

admin 2026-06-18 05:33:37 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文解析大语言模型基于Transformer的核心链路。涵盖分词、嵌入及位置编码原理,阐述注意力机制的信息交互与多头优势,揭示前馈网络的记忆作用。同时探讨残差流、归一化对训练的影响及预测机制。指出理解基础组件是掌握模型原理的关键。 综合评分: 85 文章分类: AI安全


cover_image

LLM到底怎么工作的?从Token到下一Token预测的完整链路拆解

原创

ladon ladon

306Safe

2026年6月16日 08:44 北京

在小说阅读器读本章

去阅读

大语言模型(LLM)到底是怎么工作的?从ChatGPT到Claude,从LLaMA到Qwen,它们都共享同一套Transformer家族骨架。理解这套机制,你就能读懂几乎所有现代LLM的论文和模型卡。

本文基于0xkato的技术长文「How LLMs Actually Work」整理优化,覆盖从文本输入到下一个Token预测的完整链路,不堆数学公式,但每个环节都讲透原理。

Transformer整体流程:从文本输入到下一Token预测

一、分词(Tokenization):文本如何变成数字

模型不直接读文本,它读的是整数ID。分词器(Tokenizer)把你的输入文本转换成一个整数序列,每个整数指向固定词表(Vocabulary)中的一个条目。现代LLM的词表通常有几万到几十万条。

Token通常不是完整的词,而是子词片段(subword piece)。比如「tokenization」可能被拆成[「token」, 「ization」],「running」可能被拆成[「run」, 「ning」]。这是效率与泛化的折中:整词词表太大且无法处理新词,字符级词表太小且让模型从零学最简单的模式,子词分词取其中——高频片段成独立Token,罕见或新词由更小的片段组合而成。

这个折中会在意想不到的地方暴露出问题。经典例子:问LLM「strawberry」里有几个r?LLM曾经答错。这不是模型不会数数,而是模型操作的单元是Token ID而非字母,而「strawberry」的字母和Token的切分并不对齐。

不同模型家族用不同的分词器。GPT系列用Byte Pair Encoding(BPE)变体,LLaMA系列常用SentencePiece。选择影响计算量(Token越少,计算越少)和多语言覆盖,但基本形状相同:文本进,整数出。

分词过程:文本被切分为子词片段并映射为整数ID

二、嵌入(Embedding):整数如何获得语义

Token ID只是一个行索引,本身没有意义。赋予它意义的是嵌入矩阵(Embedding Matrix)——一个巨大的查找表,每个词表条目对应一行,每行是一个长向量。7B级模型通常是4096维,更大的模型用更宽的向量。当分词器给模型一个整数,模型就在嵌入矩阵中查找对应的行向量,用这个向量替代整数。这个向量就是Token的嵌入——模型对「这个Token意味着什么」的表示,在训练中学到。

嵌入空间有一个有趣的性质:语义相似的Token,向量在空间中彼此接近。「king」的向量靠近「queen」,「Paris」的向量靠近「France」。这不是人为编码的,而是从足够多的文本训练中涌现出来的——模型学到这些位置,因为这样能更好地预测文本。

你甚至可以对嵌入做算术,经典例子:king − man + woman ≈ queen。嵌入空间的几何结构承载了真实的语义关系。

但注意:此时的嵌入完全不知道Token在序列中的位置。「dog」无论出现在第1个位置还是第5个位置,向量都一样。这就是位置编码要解决的问题。

嵌入空间:语义相近的Token在高维空间中彼此接近

三、位置编码(Positional Encoding):模型如何感知顺序

自注意力机制本身没有内置的词序表示。如果没有位置信号,模型无法区分「dog bites man」和「man bites dog」。词序改变意义,所以模型需要一种方式把位置信息注入计算。

原始Transformer论文(Vaswani et al. 2017)的做法是给每个位置一个独特的数值模式,直接加到Token的嵌入上。位置1有一个模式,位置5有另一个,位置100又不同。这些模式来自不同频率的正弦和余弦函数。这样,位置1的「dog」和位置5的「dog」嵌入不同,仅仅因为叠加的位置模式不同。

但加性位置编码有两个问题随着模型规模增大变得重要:第一,嵌入必须同时承载语义和位置信息,容量有限;第二,学到的绝对位置嵌入不能很好地泛化——如果训练时只见过2048长度,位置5000的嵌入就没有被充分学习。

现代模型大多使用旋转位置编码(RoPE,Rotary Position Embeddings),由Su等人2021年提出,现已被LLaMA、Mistral、Gemma、Qwen等主流开源家族采用。核心思想:不再给Token向量加位置信息,而是根据Token的位置旋转Query和Key向量——位置1转一个小角度,位置100转一个大角度。当两个Token在注意力中被比较时,起作用的是它们旋转角度的差值,编码了相对距离。

RoPE的优势:自然地编码相对位置(更接近注意力真正需要的),更好地泛化到更长的上下文,且不增加模型参数。

即便有好的位置编码,现代LLM也有一个已记录的「迷失在中间」(Lost in the Middle)问题(Liu et al. 2023):对长提示的开头和末尾信息利用更可靠,中间的信息容易被忽略。这就是为什么「把重要信息放在前面」或「在末尾重复关键信息」这类提示工程技巧确实有效。

四、注意力(Attention):Token之间如何交换信息

这是让架构得名的机制。在每一个Transformer层中,注意力做一件事:让每个Token看它被允许看到的其他Token,决定哪些对接下来更重要。

每个Token同时扮演三个角色,被转换为三个新向量——Query(Q)、Key(K)、Value(V):

  • Query:「我在找什么?」  – Key:「我能提供什么给来找我的Token?」  – Value:「匹配发生时,传递什么信息?」

匹配通过相似度评分实现:每个Token的Query与它能看到的所有Token的Key做缩放点积(Scaled Dot Product),衡量两个向量的对齐程度。缩放保持数值在softmax前稳定。匹配分数经softmax转化为权重——高分的Token获得高权重,然后用这些权重对Value向量做加权平均。

举个例子。句子「The cat that I saw yesterday was sleeping.」当模型处理「was」时,需要确定谁在睡觉。「was」的Query向量与它能看到的Token的Key向量比较——与「cat」的点积高(因为模型学到了动词需要主语,主语类Token的Key向量与动词的Query向量对齐好),与「yesterday」的点积低。Softmax将这些分数转化为权重,「cat」获得高权重,「yesterday」获得低权重。最终「was」的新表示主要由「cat」的Value主导。

GPT式的语言模型有一个约束:从左到右生成,位置5的Token只能关注位置1到5,不能看到位置6及以后。这叫因果掩码(Causal Masking)——未来Token的匹配分数被设为极低值,softmax后权重趋近于零。

可解释性研究中一个重要发现是归纳头(Induction Head),由Anthropic在2022年发现。这些注意力头学会了识别提示中「A B … A」形式的模式,并预测后面跟着B。当模型第二次看到A时,归纳头回溯到A第一次出现的位置,看到后面跟了什么,然后复制过来。这是上下文学习(In-context Learning)最清晰的已知机制之一。

注意力的代价:全注意力中,每个Token要和它能看到的所有Token比较,提示长度翻倍,计算量约翻四倍。这就是长提示昂贵的根本原因,也是FlashAttention、稀疏注意力、线性注意力等高效注意力研究的驱动力。

注意力机制:Query与Key匹配,加权聚合Value信息

五、多头注意力(Multi-head Attention):同时追踪多种关系

单次注意力只给模型一种判断哪些Token重要的视角。不够。语言中同时存在多种关系:主谓一致、代词指代、跨句引用、词序和局部短语。

多头注意力通过并行运行多次注意力解决这个问题,每次并行称为一个头(Head),在自己的更小空间中操作。关键细节常被描述错:每个头不是获得原始Token向量的一个切片,而是有自己的学习投影矩阵,将完整的Token向量投影到自己的更小Q、K、V空间。所以4096维的Token向量、32个头的情况下,每个头在128维空间中工作,但这128个数是完整4096维的学习投影,不是固定切片。同一Token的不同「视角」,不是不同「碎片」。

每个头独立运行注意力,然后所有头的输出拼接起来,通过一个最终的线性层混合回全尺寸向量。有趣的是,不同头经常出现部分专门化——模型从未被告知每个头该做什么,专门化是训练中自然涌现的。研究者发现了追踪语法的头(连接动词和宾语、冠词和名词)、解析代词指代的头、追踪位置模式的头、归纳头等。一个Transformer层可能有32个头,现代前沿模型有几十层,所以一个典型的LLM总共有数千个注意力头。

实际成本考量推动了GQA(Grouped-Query Attention)的采用。每个头需要为已生成的Token保存Key和Value向量(KV缓存),这是长上下文推理的主要内存开销。GQA让多组Query头共享更少的Key/Value头——LLaMA-2 70B有64个Query头但只有8个Key/Value头,Mistral 7B有32个Query头和8个Key/Value头。精度接近全多头注意力,但KV缓存内存和推理开销大幅降低。

六、前馈网络(Feed-forward Network):模型的记忆住在哪里

注意力是Token之间交流,前馈网络则是每个Token独立做进一步处理,没有跨Token混合。三步走:先扩展向量到更大尺寸(原始Transformer用4倍),然后施加非线性函数,再压缩回原始尺寸。

非线性步骤至关重要。没有它,前馈网络只是两个线性层堆叠,数学上等价于一个线性层——一百个线性层叠在一起仍然等价于一个。非线性阻止了这种坍缩,使前馈网络能做比单次矩阵乘法更丰富的事。

原始Transformer用ReLU,GPT和BERT转向GELU,现代模型如LLaMA、Mistral、PaLM用SwiGLU。扩展再压缩的结构不变,迭代的是非线性函数本身。

关键事实:稠密Transformer模型的大部分参数在前馈网络而非注意力中。而且这些参数不是泛化的——大量模型的存储事实和语义结构就住在FFN权重里。研究者发现FFN中的某些神经元与特定概念或事实强相关:一个神经元在埃菲尔铁塔相关文本上强烈激活,另一个在编程语言上,另一个在过去时动词上。当模型「知道」巴黎是法国首都时,这个事实就表示在特定层的FFN权重和激活中。

这个存储属性有一个有趣的推论:研究者已经找到了直接编辑已训练模型中某些事实的方法,无需重新训练。ROME(Rank-One Model Editing)等方法可以通过对特定FFN权重矩阵做低秩修改,把「埃菲尔铁塔在巴黎」改成「埃菲尔铁塔在罗马」,模型随后会生成与修改后关联一致的文本。

部分现代前沿模型开始用混合专家(MoE, Mixture of Experts)替代密集FFN。每层不再是单个前馈网络,而是多个并行FFN(专家),一个微型路由网络选择哪些专家处理每个Token。Mixtral 8x7B每层8个专家,任何给定Token只激活2个。总参数量大幅增加,但每个Token的计算量增长慢得多——这就是如何在不按比例增加推理成本的情况下扩展参数量。

七、残差流与层归一化:深层堆叠为什么能训练

残差流让模型变成「叠加」而非「替换」。注意力或前馈网络运行后的结果通常不替代Token的原向量,而是加到上面。横跨三五十甚至一百层,每层的贡献不断累积而不是简单覆盖前一层向量。这个流动的累加和就叫残差流(Residual Stream)——原始输入嵌入对深层仍有直接的加性通路,与沿途所有子块的贡献混合在一起。

残差流:每层贡献叠加而非覆盖,原始信号直达深层

残差连接并非为Transformer发明,源自ResNet(He et al. 2015),原本用于图像识别。动机是深层网络无法训练——训练信号穿过很多层后太弱(或有时太强),模型实际上学不到自己的错误。添加捷径路径让信号直接从输出流回输入,突然可以训练几百层的网络了。Transformer继承了这个技巧。

在现代可解释性研究中,残差流已成为中心对象:每个组件(每个注意力头、每个前馈网络、甚至最后的反嵌入步骤)都从残差流读取并写回残差流。

层归一化(Layer Normalization)则解决一个更实际的问题:没有它,残差流的数值穿过几十次加法后会爆炸或坍缩到零,训练都会失败。层归一化在每个子块之间将Token向量重新缩放到可控范围。

原始2017年Transformer在每个子块之后做归一化(Post-norm),浅层模型可行但深层越来越难训练。现代Transformer(GPT-2起、LLaMA、Mistral)普遍在每个子块之前做归一化(Pre-norm),这是让极深Transformer更容易训练的关键改动之一。

归一化函数本身也在进化。LLaMA、Mistral、Gemma、Phi等现代开源模型用更简单的变体RMSNorm——原始层归一化同时做两件事:把向量向零偏移,然后缩放数值大小。RMSNorm去掉了偏移步骤,只保留缩放。经验上,缩放承载了大部分收益,计算也更便宜。

八、下一Token预测:模型输出什么

所有层处理完毕后,模型为序列中每个Token都有一个向量。生成时,预测下一个词只用最后一个Token的最终向量。这个向量被转换为每个可能下一Token对应一个数字,词表大小10万就有10万个数字,称为logits——还不是概率,可以是任意大小的正负数。Softmax将logits转化为模型对可能下一Token的概率分布。

模型通常不会每次都选概率最高的Token。解码设置控制输出的确定性或多样性:Temperature改变分布的尖锐程度,Top-k和Top-p将选择限制在最合理的候选Token内。同一个模型在不同设置下可以感觉精确或更有创造力。

Token选定后被加入输入,模型在更长的序列上运行下一步,通常复用KV缓存避免从头重算整个前缀。新的注意力、新的前馈、新的最终向量、新的预测——循环继续,直到模型输出结束序列Token或达到长度限制。一整段文字就是这样一个Token一个Token的循环。

这个单一目标——预测下一Token——就是基础LLM的核心训练信号。基础模型不是直接在事实准确性、对话能力、推理或编程上训练的,而是在海量文本上训练预测下一Token。后续的后训练(Post-training)再针对指令遵循、偏好、安全和对话行为进行微调。

值得了解的效率创新:推测解码(Speculative Decoding)。一个小型快速模型提议未来几个Token,大模型并行验证——提议的Token在大模型概率下被接受就保留,否则回退到大模型的结果。正确实现时,输出分布与单独运行大模型完全一致,但循环可以快得多。

九、架构 vs 训练权重:模型的骨架与血肉

那么GPT、Claude、Gemini、LLaMA之间到底有什么不同?在本文覆盖的层面上,它们大致位于同一个Transformer家族设计空间中。大多数现代基于Transformer的LLM共享相同的宏观结构:分词、嵌入、位置编码、堆叠的Transformer层(每层含多头注意力和前馈网络)、残差流、层归一化、下一Token预测。

真正不同的是:训练权重本身(从不同训练数据、不同规模学到)、配置选择(层数、词表大小、头数、参数量、MoE或稠密)、后训练(指令微调、人类反馈学习、安全控制)。

2023-2025年的「现代Transformer」栈收敛于一组共同选择:Pre-norm、RMSNorm、RoPE、SwiGLU、GQA、大规模模型中的MoE。这些不是一次发明的,而是在原始2017设计上约五年的持续改进中累积形成的。

十、走向何方

Transformer家族架构的收敛在机器学习史上是罕见的。该领域大部分历史中,每个问题有自己的专用网络——图像识别用一种,语言用另一种,音频用第三种。现在Transformer式模型出现在语言、视觉、音频和多模态系统中,吸收了该领域的巨大份额。

但这可能改变。Mamba等状态空间模型是可信的替代方案,尤其对于超长序列。混合架构正在被探索。MoE已经改变了前沿「架构」的含义——在五年前这会被认为太另类了。

但本文的核心机制——分词、嵌入、位置编码、注意力、前馈网络、残差流与归一化、下一Token预测——是持久的部分。即使架构改变,任何序列模型都必须以某种形式解决这些问题。理解它们,你就能读懂几乎所有现代Transformer论文或模型卡,知道每一节在谈论架构的哪个部件。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:306Safe ladon ladon《LLM到底怎么工作的?从Token到下一Token预测的完整链路拆解》

评论:0   参与:  0