从 Transformer 到现代 LLM:大模型架构的“减法”美学

写在推理引擎之前:说明 Transformer 到现代 LLM 的演进过程

如果说 2017 年的《Attention Is All You Need》是现代自然语言处理的“创世神话”,那么到了 2024 年,当我们拆开 GPT-4、Llama 3、Qwen 等千亿参数巨兽的引擎盖时,你会发现:它们早就不长当年那个样子了。

随着模型参数量从亿级(BERT)飙升到万亿级,原版 Transformer 架构在 “显存开销”、“长文本处理”和“深层训练稳定性”上面临着巨大的物理灾难。

现代大模型的发展史,本质上是一场 “工程向算力妥协”的减法美学。这篇博客主要盘点:现在的 LLM,到底对 Transformer 做了哪些改进?


第一篇:GPT 系列演化与“三阶段”开发范式

当 2022 年 11 月 ChatGPT 掀起全球大模型技术狂潮时,很多人惊叹于它的“横空出世”。但事实上,这是一场长达四年的技术演进的必然结果。

从 2018 年初代 GPT-1 诞生开始,OpenAI 就坚定地在一条技术路线上持续迭代。这期间,模型能力上限的不断突破,得益于四个核心维度的进化:模型规模(Scaling Law)训练语料网络架构以及训练范式

这四大维度的突破,不仅构筑了 ChatGPT 的技术基石,更标志着大语言模型正式跨越了学术研究与实际应用之间的鸿沟。今天,我们就来系统梳理 GPT 家族的发展脉络,探寻大模型“智能涌现”背后的核心机制。

GPT-1

概述

GPT-1(Generative Pre-trained Transformer-1)是 OpenAI 于 2018 年 6 月 发布的首个生成式预训练语言模型,其研究成果发表于论文《Improving Language Understanding by Generative Pre-Training》。

GPT-1 系统化地验证并推广了“预训练(Pre-training)+ 微调(Fine-tuning)”的训练范式:模型先在大规模无标注语料上进行语言建模预训练,再利用少量有监督数据在特定任务上微调。该方法显著提升了模型的迁移能力,使单一预训练模型能够适配多种自然语言任务。

架构

总体架构

GPT-1 采用了 Transformer Decoder-only 结构,也就是说只保留了 Transformer 模型的解码器(Decoder)部分,并在此基础上进行了适配性调整。

具体结构如下图所示,整个模型可分为输入层、Transformer Block层与输出层三个部分:

![[Pasted image 20260417195251.png]]

  • 输入层(Text & Position Embedding)

    将文本序列映射为词向量,并加入位置嵌入,用于表示词序信息。

  • Transformer Block

    每个Transformer Block包含 Masked Multi-Head Self-Attention 和 Feed Forward Network 两个核心子层,并通过 LayerNorm 与残差连接保持稳定的梯度传播。

  • 输出层

    Text Prediction用于在预训练阶段输出下一个词的概率分布;Task Classifier用于在微调阶段适配下游任务。

架构创新
  • Decoder-only 结构

    从 Encoder-Decoder 架构简化为Decoder-only 结构,以适配自回归生成任务。

  • 可学习位置嵌入

    使用可学习位置嵌入,取代正弦位置编码,使模型能够在训练过程中自适应地学习词序关系。

  • 权重共享机制

    输入嵌入层与输出词表权重共享,减少参数量并提升训练稳定性。

主要参数
参数项数值
模型层数(Layers**)**12
隐藏维度(Hidden Size**)**768
注意力头数(Attention Heads**)**12
前馈层维度(FFN Size**)**3072
参数总量1.17 亿

训练

GPT-1 的训练采用了“预训练(Pre-training) +微调(Fine-tuning)”的两阶段范式。

  • 预训练阶段

    在预训练阶段(Pre-training),使用高质量英文语料 BooksCorpus(约 7,000 本小说,约 8 亿词)作为训练数据,以“给定前文预测下一个词(Next-Token Prediction)”为目标,在长篇连续文本中捕捉句法结构、词汇共现和语义依赖等特征,从而获得通用的语言建模能力。这一阶段让模型具备了理解与生成自然语言的基础能力。

  • 微调阶段

    微调阶段(Fine-tuning),通过在模型顶部加入轻量的任务分类层(Task Classifier),并在少量标注数据上进行有监督训练,模型能够快速适应不同任务场景。结果表明,微调后的 GPT-1 在多个 NLP 任务上显著优于从零训练的传统模型,验证了“预训练—微调”范式的有效性与通用性。

GPT-2

概述

GPT-2是 OpenAI 于 2019 年发布的第二代生成式预训练语言模型,相关研究发表于论文《Language Models are Unsupervised Multitask Learners》。

GPT-2 延续了GPT-1的 Transformer Decoder-only 架构,但参数规模提升了10倍。

GPT-2 首次证明了大型语言模型具备零样本(Zero-shot)任务泛化能力。模型无需任何下游任务微调,仅凭自然语言提示(Prompt)即可完成问答、翻译、摘要等任务,标志着语言模型开始具备跨任务的通用智能特征。

此外,GPT-2 的实验系统揭示了显著的规模效应(Scaling Effect):随着模型参数与数据规模的增长,模型性能在多种任务上持续提升。这一发现奠定了后续超大规模模型(如 GPT-3 与 ChatGPT)的发展基础。

![[Pasted image 20260417201858.png]]

架构

总体架构

GPT-2 延续了 GPT-1 的 Transformer Decoder-only 架构。

架构创新
  • 规模扩展

    参数量相比 GPT-1 提升约十倍,最大模型达到 15.42 亿参数

  • LayerNorm

    采用Pre-LayerNorm,缓解大模型训练中梯度不稳定问题。

    ![[Pasted image 20260417202117.png]]

主要参数
参数项数值
模型层数(Layers**)**48
隐藏维度(Hidden Size**)**1600
注意力头数(Attention Heads**)**25
前馈层维度(FFN Size**)**6400
参数总量15.42亿

训练

GPT-2 的训练仍采用 自回归语言建模(Autoregressive Language Modeling) 目标,即在给定前文的条件下预测下一个词(Next Token Prediction),以学习文本的语法与语义规律。
模型使用了 OpenAI 构建的 WebText 数据集,规模约 40GB,包含约 800 万篇网页内容,涵盖新闻、小说、科技、娱乐、社交等多个领域,为模型提供了更广泛的语言风格与知识来源。

GPT-3

概述

GPT-3是 OpenAI 于 2020 年 5 月发布的第三代生成式预训练语言模型,研究成果发表于论文《Language Models are Few-Shot Learners》。

GPT-3 延续了 Transformer Decoder-only 架构,但参数规模较 GPT-2 提升约百倍,达到了1750亿。

GPT-3 的核心创新在于首次系统提出并验证了“上下文学习(In-Context Learning)” 的概念:模型在使用阶段无需额外训练,仅依靠输入文本中的任务描述及少量示例即可理解并完成任务,如下图所示。

![[Pasted image 20260417202508.png]]

GPT-3 的成功展示了大规模预训练模型在能力上的显著扩展,为后续更高层次的语言智能研究奠定了重要基础。

架构

总体架构

GPT-3 延续了 GPT-1 的 Transformer Decoder-only 架构。

架构创新

架构方面,与 GPT-2 相比,GPT-3 的主要区别在于在各个 Transformer Block 中交替使用稠密注意力(Dense Attention)和局部带状稀疏注意力(Locally Banded Sparse Attention)模式。

局部带状稀疏注意力是一种仅在局部窗口内计算注意力权重的稀疏化机制,能够显著降低时间和空间复杂度。通过稠密与稀疏注意力的交替使用,GPT-3 能够兼顾全局信息和计算效率。

主要参数
参数项数值
模型层数(Layers**)**96
隐藏维度(Hidden Size**)**12288
注意力头数(Attention Heads**)**96
前馈层维度(FFN Size**)**49152
参数总量1750 亿

训练

GPT-3 依旧采用 自回归语言建模(Autoregressive Language Modeling) 方式进行训练。

训练数据约 570GB,包含约3000亿token,覆盖新闻、百科、文学与学术等领域。

模型在数千块 NVIDIA V100 GPU 上进行分布式并行训练,耗时数周完成。

InstructGPT

概述

InstructGPT 是 OpenAI 于 2022 年初推出的生成式预训练语言模型,是 GPT-3 的改进版本,也是后续 ChatGPT 的直接前身。其研究成果发表于论文《Training language models to follow instructions with human feedback》。

GPT-3 在自然语言生成方面取得了突破性进展,能够通过精心设计的提示词(Prompt)完成多种任务,但其生成结果并非总能令人满意,常常与用户的真实需求存在偏差,甚至会产生一些不真实、有害或无用的内容。

其根本原因在于,GPT-3 的训练目标仅是在大规模互联网文本上预测下一个单词,模型学习到的是语言的统计规律,而非如何理解和执行人类指令。换言之,模型尚未与人类意图保持一致(Alignment,对齐)。

为解决这一问题,InstructGPT 在 GPT-3 基础上引入指令对齐训练,从而使模型能够更准确地理解并执行人类指令。

架构

总体架构

InstructGPT延续了GPT-3的架构。

架构创新

InstructGPT并未在网络结构上进行新的改动。其主要创新点不在于模型设计,而在于训练范式的变革。

主要参数
参数项数值
模型层数(Layers**)**96
隐藏维度(Hidden Size**)**12288
注意力头数(Attention Heads**)**96
前馈层维度(FFN Size**)**49152
参数总量1750 亿

训练

InstructGPT 的训练以GPT-3的预训练语言模型为基础,进一步采用了三阶段训练范式,具体步骤如下:

  • 监督微调(Supervised Fine-tuning, SFT)

    在第一阶段,OpenAI 收集了由人工标注者撰写的高质量 “指令-回答” 样本,组成训练数据集。这些样本覆盖常见的用户指令及对应的理想响应,具有较高的语言质量。

    在训练过程中,模型在这些“指令-回答”对上进行监督微调,训练目标仍为“给定前文预测下一个词”(Next Token Prediction)。

    ![[Pasted image 20260417203834.png]]

    通过该阶段,模型初步具备了理解并执行自然语言指令的能力,能够较好地完成指令驱动的任务响应。

  • 奖励模型(Reward Model, RM)

    第二阶段构建奖励模型,用于后续强化学习过程中的反馈评估器。

    操作流程如下:

    • 使用经过 SFT 微调后的模型,针对同一条指令生成多个候选回答;

    • 人工标注者根据回答的质量、相关性、礼貌性、有用性等维度,对这些回答进行排序;

    • 利用排序结果训练一个奖励模型,使其能够为任意给定回答输出一个偏好评分。奖励模型的核心目标是模仿人类的偏好判断,为语言模型的输出提供方向性反馈。

    • 强化学习(Reinforcement Learning from Human Feedback, RLHF)

这一阶段的核心目标是:通过人类偏好引导模型输出更加符合人类意图的回答。它以第二阶段训练好的奖励模型为评分工具,使用强化学习算法(PPO),对第一步经过SFT微调的语言模型进行进一步优化。

具体步骤如下:

  • 指令输入

    从预构建的指令数据集中选取一条指令,作为模型输入。

  • 模型生成回答

    使用经过SFT微调的模型对指令生成回答。

  • 奖励模型评分

    使用奖励模型对生成的回答进行打分。

  • 强化学习优化

    模型根据奖励模型打分的结果,调整自身参数,使其更倾向于生成高分回答。优化过程中使用了强化学习算法 PPO(Proximal Policy Optimization),目标是最大化奖励模型的评分。

经过这一阶段的训练,模型能够更准确地理解人类指令,并生成更符合人类偏好、更加真实、有用且安全的回答,从而显著提升了语言模型在实际应用中的表现能力。

ChatGPT

概述

ChatGPT 是 OpenAI 于 2022 年 11 月发布的一种具备对话能力的大型语言模型。它支持连续的自然语言交互,能够回答后续问题、承认错误、质疑用户前提、拒绝不当请求,在用户体验与安全性方面取得显著改进。

架构

总体架构

ChatGPT 是与 InstructGPT 同一技术路线下的兄弟模型,架构设计与 InstructGPT 类似,但具体细节未公开。

架构创新

InstructGPT并未在网络结构上进行新的改动。其主要创新点不在于模型设计,而在于训练范式的变革。

训练

ChatGPT 的训练方法采用与 InstructGPT 相同的人类反馈强化学习(RLHF)策略,其核心区别在于数据集的设计与处理方式。

ChatGPT 使用了特别构建的对话格式数据集。这些数据由标注人员通过模拟用户与 AI 助手的对话生成,内容更加贴近真实交互场景。相比 InstructGPT 所使用的“指令-单轮回答”数据,ChatGPT 所采用的数据具有多轮对话结构,强调上下文保持与连续问答能力。

![[Pasted image 20260417204644.png]]

此外,原有 InstructGPT 的数据也被统一转换为对话格式,与新收集的数据集成混合使用,以增强模型的对话泛化能力。整体数据处理流程重点在于适配对话场景,提升模型的多轮交互表现。

总结

GPT 系列的发展推动了现代大语言模型训练范式的逐步成熟,形成了以 “预训练—监督微调—对齐” 为核心的三阶段开发框架。如下:

  • 预训练(Pre-training)

    基于超大规模无标注语料进行自监督学习,使模型获得通用语言建模能力、广泛的世界知识以及基本的推理与泛化能力。

  • 监督微调(Supervised Fine-tuning, SFT)

    利用人工构建的指令—响应示例或高质量对话数据对模型进行进一步训练,使其能够更好地理解指令,并输出更加规范、稳定且贴合任务需求的内容。

  • 对齐(Alignment)

    通过引入人类偏好、行为规范、安全约束与价值观等因素,使模型的行为更符合用户期望。对齐方式包括RLHF(奖励模型 + 强化学习)以及DPO、ORPO、KTO 等无需强化学习的偏好优化方法。对齐阶段的目标是让模型在真实应用场景中表现得更有帮助、更安全、更可靠。

    这一“三阶段”开发范式在实践中得到广泛验证,已成为业界主流的大语言模型训练框架。


第二篇:现代 LLM 的底层组件深度演进

LLM架构

大型语言模型(LLM)大多基于 Transformer 架构构建,其中最常见的是 Decoder-only 架构。这一架构最早由 GPT 系列采用,并逐渐成为当前大多数主流模型的标准设计。LLM 的核心能力——理解语言、建模上下文、生成文本,都源于 Transformer 的模块化结构与高度可扩展性。

从整体上看,一个典型的 LLM 可以分为 输入层、Transformer Block 堆叠层和输出层 三个部分,如下所述。

输入层

输入层负责将原始文本序列转化为模型可处理的向量表示。文本首先经过分词处理,每个 token 会被映射为对应的词向量(Token Embedding),形成模型的基础语义空间。为了使模型能够感知序列顺序,还需要加入位置编码(Position Encoding)。输入层的作用是为后续 Transformer Block 提供初始的语义与位置信息。

Transformer Block

Transformer Block 是大型语言模型的核心计算单元,通常由几十到上百层堆叠而成。每个 Block 内部主要包含自注意力机制前馈网络两部分:

  • 自注意力机制使模型能够在处理当前 token 时参考序列中其他位置的语义信息,从而捕捉长距离依赖关系;
  • 前馈网络则对注意力输出进行非线性变换,提高模型的表达能力。为了确保深层结构的训练稳定性,Transformer Block 内部普遍采用残差连接与归一化技术,使梯度能够顺畅传播。大量堆叠的 Block 共同构成了 LLM 的主体结构,是模型理解语言和推理能力的来源。

输出层

输出层用于将 Transformer Block 最终生成的隐含向量映射为词表中的概率分布,从而执行下一个 token 的预测。

典型做法是使用一个线性投影层将向量映射到词表维度,并通过 Softmax 得到每个 token 的概率。现代模型通常采用输入词向量与输出投影层权重共享的方式,以减少参数规模并提升训练效果。输出层的结果被用于自回归生成,每次输出一个 token 并将其作为下一步的输入,使模型能够逐步生成连贯自然的文本。

LLM架构演进

概述

自 ChatGPT 问世以来,各类大语言模型不断涌现,但其主体架构仍然基于 Transformer 的解码器,整体结构并未发生革命性变化。

模型真正的演进主要体现在内部组件层面,包括注意力机制、前馈网络、归一化与残差结构以及位置编码等模块的持续改进。

下面介绍各个组件的改进方向。

Attention

概述

注意力机制(Attention)是 Transformer 中最核心的模块,用于刻画序列中不同位置之间的依赖关系,决定模型在生成下一个 token 时应如何利用上下文。其能力直接影响模型的语义理解、长程依赖建模与文本生成质量。

随着模型规模不断扩大、推理序列越来越长,传统的多头注意力的问题逐渐暴露出来。为了解决这些问题,业界提出了一系列改进结构,在保持模型能力的同时显著提升了推理效率。

MHA(Multi-Head Attention)

MHA是Transformer最初采用的注意力机制,其通过将输入分别映射为多组 Query、Key、Value,并在多个注意力头上并行计算注意力分布,使模型能够从不同子空间捕捉序列关系,从而提升表达能力。

尽管 MHA 在早期模型中表现良好,但随着模型规模不断扩大,其结构逐渐暴露出明显的工程瓶颈。要理解 MHA 的限制,需要先明确推理阶段的一个关键概念——KV Cache。

在自回归生成过程中,模型需要逐 token 地生成输出。对于每一个新 token,模型都会与所有历史 token 进行注意力计算。如果每一步都从头计算历史序列的 Key 和 Value,这将造成巨大的重复计算开销,如下图所示:

![[Pasted image 20260418221241.png]]

为了避免这种重复计算,模型都会在推理阶段将历史 token 的 Key 和 Value 缓存下来,供后续步骤直接使用。这一机制就是 KV Cache。通过缓存 K/V,模型在生成下一个 token 时只需计算当前 token 的 Q、K、V,再与缓存的 K/V 做一次注意力匹配即可,大幅减少了不必要的计算量,如下图所示:

![[Pasted image 20260418221358.png]]

KV Cache 的引入,虽然减少了重复计算,但需要持续保存过往 token 的 Key 和 Value。随着序列变长、模型层数增加,缓存量本身就会不断累积。并且在多头注意力(MHA)中,每个注意力头都会独立生成并存储一组 Key 和 Value,使得缓存规模在原有基础上进一步放大。这也构成了 MHA 在大模型推理中的主要问题。

MQA(Multi-Query Attention)

MQA(Multi-Query Attention,多查询注意力)是一种优化注意力机制的方案,旨在减少推理阶段 KV Cache 的存储与内存带宽开销。由Google于 2019 年 11 月发表在论文《Fast Transformer Decoding: One Write-Head is All You Need》。

MQA 的核心思想是让多个注意力头共享同一套 Key 和 Value,而不是像传统 MHA 那样为每个头分别维护独立的 K/V。如下图所示:

![[Pasted image 20260418221707.png]]

这种共享方式大幅减少了需要缓存和读取的 K/V 张量量级,显著降低存储需求与内存带宽压力,从而大幅提升了推理速度。

但这种共享机制会略微削弱注意力头的表达能力,使其精度略逊于传统 MHA,但整体损失非常小。 总体来看,MQA 以极小的精度代价换来了巨大的推理效率提升,是现代大模型推理加速的重要基础结构之一。

GQA(Group-Query Attention)

GQA(Group-Query Attention,分组查询注意力)是在 MQA 基础上的进一步改进方案,由 Google 在论文 《GQA: Training Generalized Multi-Query Transformer Layers》中提出。该方法旨在在提升推理效率的同时,弥补 MQA 由于所有注意力头共享同一套 K/V 而造成的表达能力下降问题。

GQA 的核心思想是:将注意力头划分为多个组(Group),每组内部的多个 Query 共享同一套 Key 和 Value,而不同组之间则使用独立的 K/V,如下图所示:

![[Pasted image 20260418222044.png]]

这种结构本质上在 MHA 与 MQA 之间取得了折中:

  • 相比 MHA:不再为每个头维护独立 K/V,从而大幅减少 KV Cache 的存储需求与内存带宽压力;

  • 相比 MQA:不再所有头共享唯一 K/V,而是分组共享,使注意力头间仍能保持更高的多样性和表达能力。

因此,GQA 在 推理效率 和 表达能力 之间实现了更优平衡。实际应用中,它比 MQA 能更好地处理复杂语义关系,同时仍保持较高的推理速度。

总体来看,GQA 在仅增加极小计算与存储成本的前提下,显著增强了模型能力,因此被LLaMA、Qwen 等主流大模型所采用,在长序列推理和高并发场景中表现极为出色。

Feed Forward Network

概述

前馈网络(FFN)是 Transformer Block 中继注意力之后的第二大核心组件,用于对 token 表示进行独立的非线性变换。其典型的“升维 → 激活 → 降维”结构,使模型能够在每个位置上学习高维特征,是 Transformer 表达能力的重要来源。

FFN 的演进主要集中在激活函数整体结构形式两个方向。

激活函数

激活函数为 FFN 引入非线性,是提升模型表达能力与稳定性的关键模块。随着模型规模不断扩大,激活函数在设计上经历了从简单线性截断到平滑非线性,再到具备门控能力的结构化形式的演进。

  • ReLU

    ReLU(Rectified Linear Unit)是深度学习中最早广泛应用的激活函数之一,其定义非常简单:

      $ReLU(x) = max(0, x)$
    

    其函数曲线如下图所示:

    ![[Pasted image 20260418225155.png]]

    ReLU 在正区间保持恒定梯度,使梯度能够高效传播,大大缓解了早期网络中的梯度消失问题,因而在浅层或中等规模神经网络中表现优异。然而,ReLU 对负区间进行“硬截断”,会导致梯度完全为零,从而引发“死亡神经元”现象,即神经元在训练过程中一旦进入负区间可能永久失活;此外,其非线性较弱,在深层 Transformer 中无法提供足够的梯度平滑性与稳定性,容易造成训练不稳定。

    随着模型深度和规模的大幅提升,ReLU 已难以满足大模型的稳定性要求,因此在现代大型语言模型中已经基本退出主流。

  • GELU

    GELU(Gaussian Error Linear Unit)是早期Transformer预训练模型(例如Bert、GPT-2/3)中曾广泛采用的平滑非线性激活函数。

    GELU的核心思想是:不再进行硬性截断,而是通过一种 随输入大小平滑变化的缩放系数 来柔性控制激活强度,使得输入在负区间、中间区间、正区间分别呈现自然的衰减、过渡与放大。

    其数学定义为:

      $\text{GELU}(x) = x \cdot \Phi(x)$
    

    其中 $\Phi(x)$ 表示标准正态分布的累积分布函数。

    随着 $x$ 增大,$\Phi(x)$ 趋向 1,输出趋近于 $x$;随着 $x$ 减小,$\Phi(x)$  趋向 0,输出则逐渐衰减为 0;对于接近 0 的输入,函数会在 0 与 $x$ 之间进行平滑过渡,如下图所示:

    ![[Pasted image 20260418230227.png]] 相比 ReLU,GELU 在全域连续可导,能在深层网络中提供更稳定的梯度传播,且不会出现 “神经元死亡”问题,因此曾在中大型 Transformer 中一度成为主流。

  • SiLU

    SiLU(Sigmoid Linear Unit)也是一种连续可导的激活函数,其基本思想是使用 sigmoid 函数对线性输入进行加权,从而得到一种柔和的非线性变换。

    其数学定义如下:

      $\text{SiLU}(x) = x \cdot \sigma(x)$
    

    当 较大时,  趋近于 1,输出接近 ;当 较小时,  接近于 0,输入会被有效抑制;在接近 0 的区域,函数呈现平滑的过渡,而不是直接截断为零,如下图所示:

    ![[Pasted image 20260418231502.png]]

    得益于这种连续可导的结构,SiLU 在深层网络训练中同样具有良好的优化稳定性,并在多个任务中表现出与 GELU 相近的经验性能。

  • Swish

    Swish 可视为 SiLU 的一般化形式,其数学定义为:

      $\text{Swish}(x) = x \cdot \sigma\left(\beta x\right)$
    

    其中 $\beta$ 可以是固定或可学习参数。当 $\beta = 1$ 时,Swish 与 SiLU 完全等价。尽管原论文提出让 可学习,但实际收益有限,并可能带来训练不稳定性,因此主流实现通常将 $\beta$ 固定为 1。

    基于这一等价关系,在工程实践中 Swish 与 SiLU 往往混用,不作严格区分。

  • GLU及其变体

    GLU(Gated Linear Unit)及其一系列变体是当前大型语言模型(LLM)中最常用的 FFN 激活结构。与传统 ReLU、GELU 等单路激活不同,GLU 类结构采用 “主分支 × 门控分支” 的双分支设计,通过引入门控机制,使模型能够对信息流进行更加细致的筛选与调控。如下图所示:

    ![[Pasted image 20260421184411.png]]

    门控结构的关键区别在于 门控分支所采用的门控函数。不同的函数会导致门控行为、梯度特性和最终模型性能的差异,因此形成了多种 GLU 变体。常见的门控结构包括

    • GLU:使用 Sigmoid 作为门控函数

    • GEGLU:使用GELU作为门控函数

    • SwiGLU:使用SiLU作为门控函数

    在众多变体中,SwiGLU在性能与训练稳定性方面表现最优,因此成为当前主流 LLM(LLaMA、Qwen、DeepSeek 等)的默认门控结构。

MoE
  • 概述

    MoE(Mixture of Experts,混合专家模型)是在传统 FeedForward 模块基础上的一种结构扩展。其核心思想是:使用多个并行的 FeedForward 专家替代单一的 FeedForward 层,并通过 Router(路由器)根据输入 Token 的特征选择其中少量最合适的专家参与计算。这样一来,不同类型的输入能够由擅长处理该类模式的专家负责,从而显著增强模型的表达能力与适应性。MoE 已成为当前主流大语言模型(LLM)中广泛采用的、用于提升性能与效率的关键结构之一。

    ![[Pasted image 20260421185422.png]]

  • 工作流程

    MoE的工作流程如下图所示:

    ![[Pasted image 20260421191253.png]]

    具体步骤如下:

    • 路由得分计算

      Router 接收 Token 的隐藏表示,并通过线性映射为所有专家生成一组得分。

    • 选择 Top-k 专家

      从得分中选取得分最高的 k 个专家,其余专家在本次计算中不参与处理。

    • 计算路由权重

      对被选中的专家得分执行 softmax,得到归一化权重,用于表示各专家在最终输出中的贡献比例。

    • 专家执行前向计算

      被激活的专家分别对输入 Token 进行独立计算,生成各自的输出。

    • 加权合并输出

      将所有激活专家的输出按照路由权重加权求和,得到 Token 在 MoE 层的最终表示。

  • 能力与优势

    MoE 结构通过引入稀疏激活机制,显著提升了模型的能力和效率,主要具备以下三个核心优势:

    • 高容量、低计算的效率结构

      MoE 模型通过稀疏激活机制,使每次前向传播仅有少数 个专家参与计算。这种设计在不增加实际计算量的前提下,大幅提升了模型的总参数量(模型容量),实现了高效的“高容量、低计算”结构。

    • 专家分工协作,提升泛化与适应性

      通过路由器(Router)机制的动态分配,不同的输入 Token 会被导向最适合处理它们的专家。这种机制促使专家自动形成功能分化,每个专家专注于学习特定的模式或数据子集,从而显著增强了模型的表达能力和泛化性能

    • 天然适合大规模分布式扩展

      MoE 结构中的专家模块是相互独立的,这使得专家可以轻松地分布到大规模计算集群的不同设备上并行运行,极大地提升了模型的可扩展性(Scalability)和在大规模环境下的训练与推理效率。

残差连接与归一化

概述

残差结构与归一化机制是 Transformer 稳定训练的基础。随着模型深度与规模增加,传统的结构逐渐暴露出梯度路径不稳定的问题。近年来,研究者通过一系列优化改进手段,使模型能够在更高深度、更大参数规模下保持稳定训练。

RMSNorm

RMSNorm(Root Mean Square Normalization,均方根归一化) 是对传统 LayerNorm 的一种简化变体。它去除了均值标准化操作,仅基于输入特征的均方根(RMS)进行缩放,从而在保持归一化效果的同时降低计算复杂度。实践表明,均值项在深层 Transformer 中对稳定性贡献有限,因此去除均值不会影响模型性能,反而带来更稳定、更高效的归一化形式。目前,RMSNorm 已成为主流 LLM 中最常用的归一化方式。

RMSNorm 的核心公式如下:

$\text{RMSNorm}(x) = \frac{x}{\text{RMS}(x)} \cdot \gamma$

其中:

$\text{RMS}(x) = \sqrt{\frac{1}{d}\sum_{i=1}^{d} x_i^2 + \varepsilon}$
  • $\boldsymbol{x \in \mathbb{R}^d}$:输入向量
  • $ - $\boldsymbol{\gamma}$:可学习的缩放参数
  • $ - $\boldsymbol{\varepsilon}$:防止除零的微小数
归一化放置位置

在 Transformer 中,归一化层的放置位置会显著影响训练稳定性、梯度传播效率以及模型在更大深度和规模下的可扩展性。随着架构不断演进,研究者在实践中提出了多种归一化布置方式,通过在残差路径内部或模块内部调整 Norm 的位置,以获得更好的数值特性与训练表现。

![[Pasted image 20260423150814.png]]

  • Post Norm

    Post Norm 是 Transformer 中最初采用的归一化放置方式,其结构是在子层(如 Self-Attention 或 FFN)计算完成并与残差相加之后,再对结果进行归一化处理

    $\boldsymbol{y = \text{Norm}\big(x + F(x)\big)}$

    Post Norm 存在一个核心问题:它会削弱残差连接中用于稳定训练的那条恒等梯度通道,从而在深层网络中导致梯度回传不稳定。要理解这一点,需要先回顾残差连接的梯度传播机制。

    对于标准残差结构:

      $\boldsymbol{y = x + F(x)}$
    

    反向传播过程中,梯度会沿着两条路径回传至输入 $x$:

      $\frac{\partial y}{\partial x} = 1 + \frac{\partial F(x)}{\partial x}$
    

    其中的“$1$”是一条不改变梯度方向和大小的恒等映射路径,为深层网络提供了稳定的“直通”梯度通道。

    然而在 Post Norm 中,反向传播形式变为:

      $\frac{\partial y}{\partial x} = \frac{\partial \text{Norm}(z)}{\partial z} \cdot \left(1 + \frac{\partial F(x)}{\partial x}\right),\quad z = x+F(x)$
    

    由于归一化操作会对输入进行缩放、标准化等处理,梯度在回流时也会被相应扰动,使原本应保持恒等的梯度路径不再保持为 1,从而削弱了残差连接提供的稳定梯度通道。

    在深层 Transformer 中,这种梯度扰动会层层累积,使训练更加不稳定。因此,Post Norm 在现代大规模模型中已基本不再使用。

  • Pre Norm

    Pre Norm 是大多数大语言模型中采用的主流归一化方式。其结构是在进入子层(如 Self-Attention 或 FFN)之前先对输入进行归一化,然后再执行子模块计算并与残差相加:

      $\boldsymbol{y = x + F\big(\text{Norm}(x)\big)}$
    

    与 Post Norm 相比,Pre Norm 的设计充分保留了残差连接的关键特性:提供一条未受扰动的恒等梯度路径:

      $\frac{\partial y}{\partial x} = 1 + \frac{\partial F\big(\text{Norm}(x)\big)}{\partial x}$
    

    正因如此,Pre Norm 在现代 LLM 中成为了事实上的标准结构,被广泛采用。

  • Post Norm in Residual

    Post Norm in Residual 是近年来在部分模型中出现的一种归一化放置方式。与传统 Post Norm 的相比,它依然将归一化作用在子层输出之后,但归一化的位置被移动到残差路径内部:

      $\boldsymbol{y = x + \text{Norm}\big(F(x)\big)}$
    

    这种方式同样能够提供一条恒等梯度路径:$\leftarrow$

      $\frac{\partial y}{\partial x} = 1 + \frac{\partial \text{Norm}\big(F(x)\big)}{\partial x}$
    

位置编码

概述

由于 Transformer 的自注意力机制(Self-Attention)并不包含序列顺序信息,模型无法仅依靠注意力计算来判断 token 在序列中的相对位置。因此,需要向输入中显式加入位置编码(Position Encoding),以补充序列的位置信息。

随着模型规模扩大与任务需求多样化,位置编码的设计也在不断演进,以适应更长的上下文、更灵活的序列建模方式以及更稳定的训练特性。

正余弦位置编码
  • 概述

    正余弦位置编码(Sinusoidal Positional Encoding)是原始 Transformer 中采用的位置编码方式,它通过一组预定义的正弦与余弦函数为每个序列位置生成唯一向量:

      $\boldsymbol{PE_{(pos,2i)} = \sin\left(\frac{pos}{10000^{\frac{2i}{d}}}\right)}$
    
      $\boldsymbol{PE_{(pos,2i+1)} = \cos\left(\frac{pos}{10000^{\frac{2i}{d}}}\right)}$
    

    其中:

    • $\boldsymbol{pos}$:Token 的绝对位置
    • $\boldsymbol{i}$:维度索引
    • $\boldsymbol{d}$:向量总维度
  • 特点

    正余弦位置编码具有以下特点:

    • 无需训练

      编码由固定函数生成,不引入任何可学习参数,使用简单,不会随训练发生漂移。

    • 可外推

      由于编码基于数学函数,不依赖训练语料长度,模型可在推理阶段处理比训练时更长的序列。

    • 隐含相对位置信息

      正余弦位置编码的结构使其能够携带 token 之间的相对位置信息。

      正余弦位置编码的各维度是按频率成对排列的,每一对由同一频率对应的正弦值和余弦值组成。现在,我们分别从位置 和位置 的位置编码中,任意选取一对频率为 的维度进行观察。如下:

$$\boldsymbol{PE_\omega(m) = \begin{bmatrix} \sin(\omega m) \\ \cos(\omega m) \end{bmatrix}}$$$$\boldsymbol{PE_\omega(n) = \begin{bmatrix} \sin(\omega n) \\ \cos(\omega n) \end{bmatrix}}$$
	在 Transformer 中,注意力权重由 q 向量与 k 向量的内积决定:
	
		$\boldsymbol{\text{AttentionScore}(m,n) = q_m^\top k_n}$
	
	因此,位置编码之间的内积会直接参与注意力打分。基于这一点,我们考察上述两组位置编码分量的内积
	
		$\boldsymbol{PE_\omega(m)^\top PE_\omega(n) = \sin(\omega m)\sin(\omega n) + \cos(\omega m)\cos(\omega n)}$
	
	利用三角恒等式可得:
	
	
	-
  • 缺陷

    尽管正余弦位置编码具有良好的数学结构,其向量间的内积可直接反映相对位置关系,但在实际的 Transformer 注意力计算中,这种优势并不能完全有效发挥。$\leftarrow$

    注意力计算中,注意力打分为:

      $\boldsymbol{\text{score}(m,n) = q_m^\top k_n}$
    

    其中

    $q_m = W_Q\big(e_m + \text{PE}_m\big),\quad k_n = W_K\big(e_n + \text{PE}_n\big)$

    代入后可得:

      $\text{score}(m,n) = \big(e_m + \text{PE}_m\big)^\top W_Q^\top W_K \big(e_n + \text{PE}_n\big)$
    

    令 $\boldsymbol{A = W_Q^\top W_K}$,可将上式展开为:

$$\begin{aligned} \text{score}(m,n) &= e_m^\top A e_n \\ &+ e_m^\top A \text{PE}_n \\ &+ \text{PE}_m^\top A e_n \\ &+ \text{PE}_m^\top A \text{PE}_n \end{aligned}$$

其中,仅有最后一项 $\boldsymbol{\text{PE}_m^\top A \text{PE}_n}$ 明确体现了位置编码之间的相互作用,因此也是唯一直接与相对位置相关的部分。但由于矩阵 $\boldsymbol{A = W_Q^\top W_K}$ 是可学习参数,会在训练中不断变化,原本正余弦编码所具备的几何结构难以稳定保持。换句话说,模型必须通过额外的学习来重新塑造或校正这种相对位置信息,而这种重建过程往往并不可靠,导致正余弦位置编码在理论上的优势无法在实践中完全体现出来,也影响了训练的稳定性和模型的泛化表现。

可学习位置编码
  • 概述

    可学习位置编码(Learned Positional Embedding)是另一种常见的位置编码方式,曾广泛应用于早期的Transformer预训练模型(Bert,GPT-1/2等)中。在这种方法中,模型为序列中的每个位置分配一个独立的可训练向量,这些向量在训练过程中与模型的其他参数一同更新,使模型能够从实际任务数据中自动学习位置表示。

  • 特点

    可学习位置编码的主要特点如下:

    • 灵活性高

      位置向量完全由数据驱动学习,不受固定数学函数约束,因此能够更贴合训练语料的分布特点。

    • 训练方式简单

      其优化方式与词向量一致,实现成本低,不需要额外的结构设计,便于直接集成到 Transformer 中。

  • 缺陷

    可学习位置编码的缺陷如下:

    • 缺乏长度外推能力

      可学习位置编码只在训练过的位置范围内定义,超出最大序列长度的位置没有对应的嵌入,导致模型无法在推理阶段处理更长的输入序列。

    • 参数量随序列长度线性增长

      位置向量数量与最大序列长度成正比,当需要支持长上下文时,参数开销迅速增大。

旋转位置编码

第三篇:场景适配:Prompt、RAG 与微调 (LoRA/QLoRA)

  • 面对实际业务需求,开发者该如何选择最省钱、最有效的模型适配路径。

  • 适配路线图:Prompt Engineering vs RAG vs Fine-tuning 的选型策略。

  • 微调实战理论:Base Model 与 Instruct Model 的核心差异及选择策略。

  • 参数高效微调 (PEFT):深入 LoRA 与 QLoRA 的数学原理——如何在单张 24G 消费级显卡上微调大模型 。

  • 数据质量:Chat Template(如 ChatML 格式)在微调中的决定性作用与数据格式规范。

第四篇:分布式训练与 ZeRO 显存管理

  • 当单张显卡装不下千亿参数模型时,算力集群是如何“打配合”的。

  • 并行矩阵:数据并行、流水线并行(以及解决气泡问题的微批次策略)与张量并行。

  • ZeRO 深度解析:微软 ZeRO 系列优化器(Stage 1/2/3)如何通过分片存储彻底消除内存冗余 。

  • 硬件选型估算:不同微调策略下的 VRAM 显存占用硬核计算公式(含模型参数、梯度、优化器状态与激活值) 。

第五篇:高性能推理 (vLLM) 与模型评测

  • 模型训练完成后,如何实现每秒百词的高并发线上部署 。

  • vLLM 魔法:PagedAttention 算法揭秘——像操作系统管理虚拟内存一样管理 KV Cache。

  • 推理实战:使用 vLLM 部署 OpenAI 风格的 API 接口并实现多轮对话调用。

  • 闭环评估:使用 EvalScope 框架进行模型压测(并发量、吞吐量、延迟)与综合能力评估。