从 LLaMA 3.2 框架解析大语言模型推理流程
模型推理架构图

LLaMA 3.2 架构
前言
这篇学习笔记以 LLaMA 3.2 6B 模型的架构图为例,通过梳理单个上下文序列(Context Sequence,不包含 Batch 处理)的输入处理流程,来解析现代大语言模型的推理框架。
建议阅读本文的读者对 Encoder、Tokenizer、Attention 等基础概念有初步的了解,这有助于更顺畅地理解文中的数据流转逻辑与架构设计初衷。
LLaMA 3.2 推理流程
预处理阶段
预处理阶段的核心目的,是将自然语言这种属于人类的非结构化信息,转换为计算机能够理解和处理的张量数据形式。

Chat Template
模型在接收文本序列后,会根据预设的聊天模板对文本进行包装,添加特定的控制字符以区分角色和对话轮次。不同的模型通常采用不同的模板结构。经过此阶段,原始文本被拼接为包含结构化指令的完整字符串。
大语言模型本质上是一个文本续写引擎。为了让它具备“对话”的能力,我们需要人为地添加一些特定的控制字符(如代表系统提示、人类用户、AI 助手的标签)。这些模板结构为模型提供了角色边界和回合切换的上下文线索,引导模型以对话的格式进行输出。
Tokenlization
在文本包装完成后,分词器(Tokenizer)将字符串切分为基础的词元(Token),并映射为词表中的整数索引(Token ID)。常见的 BPE (Byte Pair Encoding) 算法通过统计语料库中相邻字符对的共现频次,迭代合并高频词组,从而实现信息的初步压缩与表示。在此阶段,字符串转化为一维的整型数组。
“分词”与“词表”是必须掌握的前置知识,这里作简要的背景解释:
在计算机系统中,底层信息均以二进制串表示。计算机处理文本的本质,是对传入信息转化后的数字序列进行算术与逻辑运算,运算结果再经由解释层还原为人类可理解的信息。因此,对文本序列进行“分词”,本质上是建立一套文本与数字的映射关系表,以便模型程序对输入信息进行深度的数学处理。同时,优秀的分词算法(如广泛使用的 BPE,Byte Pair Encoding)还能在这一阶段实现信息的初步压缩,提前捕捉并存储高频的词间信息。
**“词表”则是在给定语料库的条件下,通过选定的分词算法训练生成的一张映射清单。**它规定了如何切分一段未知的文本序列,以及切分出的每个 Token 对应的整数数值是多少。以常见的 BPE 算法为例:它首先将语料库中的所有单词拆分为基础的单字符,并保留每个单词的词频。随后,算法开始统计所有相邻字符对共同出现的频次(将词频计入权重),找出频次最高的那一对字符,将其合并为一个新的“子词”并正式录入词表。算法会不断重复“统计相邻对频次 → 合并最高频对”这一迭代过程,直到词表中记录的 Token 数量达到预设的目标规模。
Embedding
模型通过查询词嵌入表(Embedding Table),将一维的整型数组映射为连续的高维向量表示。
在此阶段,数据转化为形状为 [Sequence_Length, Hidden_Dimension] 的二维张量(隐藏状态)。
词嵌入表是模型训练过程中不断迭代产生的一张向量映射表,里面存储着每一个 Token 在向量空间中对应的位置,用于实现 Token ID 到 Token Vector(词向量)的转换。
这里也需要对词向量的背景作一个解释,以便更好地理解后续的推理阶段:
大语言模型的本质是一个概率预测模型,它通过核心的注意力机制,预测词表中哪一个词作为“下一个词”出现的概率。这种预测机制与人脑的思维方式有一定的相似之处。人类思考的底层逻辑之一,就是根据已有的经验联系,预测个人经验中下一个可能发生的事件。而科学预测的前提,建立在掌握不同事物(或 Token)之间相似度的经验之上。
对于人类而言,我们依靠神经元来存储记忆、保存事件之间的经验;而对于大模型而言,同样需要一个结构来表示和存储 Token 之间的固有关系。高维向量空间恰好符合这个要求。模型将 Token 映射为高维空间中的向量,利用不同的维度来存储 Token 细粒度的语义细节。越相似的 Token,在向量空间中的物理位置就越近,模型借此便能通过点积运算直接计算出 Token 向量之间的相似程度。可以说,词嵌入表(Embedding Layer)就像是存储模型先验知识的“大脑”,而模型的训练过程,本质上就是对这个“大脑”中的经验进行不断刻画与纠正的过程。
推理阶段
在这个阶段,模型通过堆叠多个 Transformer Decoder Block(隐藏层),重复执行注意力机制与前馈网络,逐步提取和重构序列的深层上下文语义。
需要注意的是,“隐藏状态”(Hidden States)与“隐藏层”(Hidden Layers)是不同的概念,初学者往往难以区分。隐藏状态指随模型层级流动的数据张量,其数值在每一层都会更新;隐藏层则是执行计算的物理结构模块,在 LLaMA 3.2 中由 RMSNorm、GQA (Grouped-Query Attention) 以及 FFN 模块组合而成。
延伸思考:为什么Transformer架构中隐藏层又被称为解码层(Decode Layer)?
我们可以延续前文“大脑思考”的类比,换一个认知视角来探讨 Decoder 的本质。大脑的思考过程,可以抽象为将当前发生的事件与神经元中存储的先验经验进行比对,从而推断下一步行动的机制。
这一机制在运作时面临一个核心问题:面对海量的经验储备,大脑如何精准检索并激活合适的记忆?剖析这一过程可以发现,大脑的潜在处理流是分层且递进的:首先对当前事件进行特征提取,总结出核心要素;随后,基于这些要素在记忆库中进行相似度匹配;最后,在匹配到的经验中做出最终决策。
举一个具体的现实案例:当你在校园场景中遇到一只橘猫,并考虑是否进行物理接触时,大脑的运算链路如下。首先,大脑提取基础实体要素:校园、橘猫、接触动作。接着,视觉系统进一步捕捉更深层的局部特征:猫的毛发呈凌乱状态、爪部处于外露的防备姿态。基于这些物理细节,大脑逻辑推理出该动物当前可能具备较高的攻击倾向。通过整合这些多维度的环境特征,大脑成功在记忆网络中匹配到了“流浪动物伤人”的历史经验,最终输出了“放弃接触”的行为指令。
这种不断从复杂环境中提取特征要素,逐步凝练出包含完整语境的综合语义,再将其与底层知识库进行比对并生成最终决策输出的动态过程,在计算机科学的视角下,正是大语言模型“解码(Decoding)”的真正物理意义。
此外,鉴于单次特征提取在处理高维复杂信息时往往存在抽象深度的局限,难以捕捉深层且隐蔽的细节关联,大模型因此通过堆叠多个解码器层(Decoder Block)来重复执行这一过程。这种逐层递进的特征重构与逻辑整合,使得模型能够更为全面地提取并刻画出输入序列中蕴含的深层语义特征。
RMSNorm 1
由于多个解码层的存在,隐藏状态会经历庞大的矩阵连乘,极易发生数值溢出或梯度消失。为此,LLaMA 3.2 在核心计算模块(MQA以及FFN)前引入了 RMSNorm 进行前置归一化。它通过均方根约束张量的数值尺度,保障了极端算力下的运算稳定性:
整个推理阶段由于大量矩阵计算存在,隐藏状态很容易产生数值溢出。为了解决这个问题,LLaMA 3.2 在 MQA 与 Feed Forward 前都添加了一层 RSMNorm,用以保证数值运算稳定性。RMSNorm 公式如下:
其中
Masked Grouped-Query Attention
该模块首先将输入的隐藏状态矩阵

随后,通过缩放点积注意力公式计算当前 Token 与上下文中其他 Token 的相关性权重,并聚合信息:
在这个阶段,数据还是以向量数组的形式存在,但每个 Token 的向量表示均融合了序列中前置 Token 的语义信息。

Attention模块的提出算是大模型发展的里程碑事件,其在推理过程中的地位也十分重要,因此有必要深入了解一下Attention的计算细节以及涉及到的变量所对应可能的功能含义。不过,为了控制本篇篇幅,就不在这里进行展开,具体内容见后面新来的解释部分
RoPE (Rotary Positional Embeddings)
在传统的 Attention 计算中,纯粹的点积运算仅能感知词汇的共现(Co-occurrence),却无法识别词汇的先后语序。为了解决这一“位置失明”的困境,LLaMA 引入了旋转位置编码。RoPE 仅作用于注意力机制中的 Query (q) 和 Key (k) 向量,它巧妙地通过几何旋转操作,将绝对与相对位置信息统一注入到模型中。
对于一个 2D 向量对
对于维度为
其中
RoPE 的精妙之处在于它实现了一种优雅的数学转换:通过“旋转”来刻画绝对位置,但在进行点积运算时,其结果却自然受制于两个向量之间的“相对位置”。
我们可以用“时钟表盘与指针”来客观类比这一机制:假设每个 Token 都是一根指向 12 点的初始指针。RoPE 会根据 Token 在句子中的绝对序列号,将指针拨动特定的角度(如第 1 个词拨动 10 度,第 5 个词拨动 50 度)。当这两个词在 Attention 阶段进行交互时,它们实际上是在测量两根指针之间的夹角(30 度)。这意味着,无论这两个词出现在句首还是句尾,只要它们之间的相对距离恒定,其指针的夹角就永远一致。这种机制使得模型能够建立起跨越绝对序列长度的、稳定且泛化的相对距离感知。
此外,在支持超长上下文的现代大模型架构中,RoPE 展现出了高维空间的扩展优势。正如公式所示,随着向量维度 i 的加深,旋转基频呈指数级衰减。前排高频维度旋转较快,专门捕捉近距离的强逻辑关系;深层低频维度旋转极慢,用于维系跨越长文本的宏观语境连贯性。通过调整 Base 值(如 LLaMA 3 将其显著扩大),模型能够有效放慢低频区的旋转速度,从而在不破坏短文本理解的前提下,大幅扩展其支持的上下文视界。
Residual 1
残差连接在矩阵层面仅表现为一次简单的加法运算(输入与输出相加),但其对于Transform架构非常重要。
GQA 的输入代表 Token 的“固有本意”,输出代表“上下文语境”。残差连接确保了在融入复杂语境的同时,模型不会丢失原有的主干信息。如果没有残差连接,经历数十次非线性变换后的语义极易走向发散与崩塌。
RMSNorm 2
在进入下一阶段前,数据再次经过 RMSNorm,完成新一轮的数值尺度收束。
FFN(Feed-Forward Network)
Attention 模块主要负责构建 Token 间的“横向”全局关联,其本质是基于上下文的特征聚合,整体偏向于线性的信息混合。而 FFN 则在此基础上,负责对这些初步融合的隐藏状态进行“纵向”的深度挖掘。它将低维张量投射到极高维的参数空间中,调用模型在预训练阶段固化的先验经验,对 Token 自身的特征进行复杂的非线性重构。
为了增强模型拟合现实世界复杂规律的能力,LLaMA 3.2 的 FFN 层摒弃了传统的单通道设计,采用了 SwiGLU 门控架构。隐藏状态输入后,被平行为两个独立的高维映射分支:一支经过 SiLU 激活函数处理,生成非线性的“门控”权重;另一支则进行单纯的线性投影,承载候选的深层经验信息。随后,两者的结果在高维度上进行逐元素相乘,实现特征的高效筛选与逻辑解耦,最终提炼出的核心语义再通过降维矩阵投射回原始的特征空间。

我们可以继续延续“大脑思考”的类比来探讨 FFN 的本质。如果说 Attention 机制主要负责在外部环境中进行“横向”的信息观察与要素联结,例如发现“橘猫”和“凌乱的毛发”同时存在,那么 FFN 层则是在大脑的深层皮层中进行“纵向”的知识提取与逻辑加工。Attention 层本身并不产生新的知识,它仅执行加权求和,将相关的环境特征混合在一起。当这个融合了全局语境的特征向量流入 FFN 时,真正的“深度认知”才正式开始。在多项前沿研究中,FFN 的高维矩阵被证明起到了类似“键值对记忆(Key-Value Memory)”的作用。大脑在确认了外部环境特征后,需要调用长期记忆来判断其含义;与之对应,FFN 的升维矩阵就如同一个庞大的模式匹配器,它在极其高维的空间中检索当前特征是否符合某种已知的内在规律或预训练阶段固化的经验组合,从而完成先验知识的提取。
在知识提取的基础上,LLaMA 3.2 采用的 SwiGLU 门控架构相当于在大脑中进一步引入了一套高级的“双通道审核机制”。在这一架构下,信息分支负责将所有相关的候选经验全部调取并铺展开来;而门控分支则结合当前的具体语境,客观评估这些经验的必要性与可靠性,并生成相应的审核权重。随后,这两个分支的结论在最终的逐元素相乘操作中发生交互。只有那些被门控机制认定为高度相关的深层特征才会被放行,并精准注入到 Token 的语义表示中,其余的无关噪声则被严格抑制。通过这种“横向联结”与“纵向调阅审核”的交替堆叠,模型不仅理清了字词间的表层结构,更在底层数学空间中完成了复杂逻辑链条的深度拟合。
Residual 2
同理,模型在结束 FFN 的激进映射后,再次进行残差相加,由此完成了一个完整隐藏层的计算闭环
预测阶段
在对隐藏层进行多次处理后,模型得到最终浓缩抽象语义的一行向量。该向量随后会进入LM Head(通常是一个线性映射层),与词表权重矩阵相乘,得出每一个候选词汇的原始匹配得分(Logits)。后续模型通过Softmax,将Logits分数转化为Token的出现概率,最后通过一定的算法选取最终输出Token。
Temperature
得到了词汇表中每个词汇的 Logits 后,模型需要将其转化为概率。但在执行这一步之前,现代大模型引入了一个极其重要的缩放超参数——Temperature (T)。
从数学上看,它的操作是在应用 Softmax 函数之前,将所有的 Logits 除以 T:
其中,
这个看似简单的标量除法,让我们可以自由控制模型的“创造能力”:
降温状态 (T < 1):Logits 之间的数值差距会被显著放大。此时,即使原始得分仅有微弱优势的候选词,其最终概率也会向 100% 聚拢。模型变得极其“笃定”和“保守”,通常只输出最优解,非常适合代码生成、数学计算等要求严谨的事实性任务。
标准状态 (T = 1):不改变原始 Logits 的相对分布,反映模型最原生的置信度估计。
升温状态 (T > 1):Logits 之间的数值差距被压缩。原本得分较低(排在后面)的词汇获得了更高的被选中概率。模型表现得更具“发散性”和“随机性”,适合文学创作、头脑风暴等需要打破常规的场景。
最终,经过 Temperature 缩放的 Logits 会被送入 Softmax 函数,严格转化为总和为 1 的规范概率分布。模型随后结合特定的采样算法(如贪婪采样 Greedy Search、Top-p 或 Top-k),从这个概率分布中抽取,正式输出下一个预测词。