引言

当我们使用 ChatGPT、DeepSeek 或 Qwen 进行对话时,模型能够回答问题、编写代码、分析论文,甚至完成复杂推理任务。表面上看,这似乎是一种接近人类思维的能力,但从计算机系统的角度来看,大模型本质上只是在做一件事情:

根据前面的 Token,预测下一个 Token。

然而,就是这样一个简单的目标,在海量数据、超大规模参数和数万张 GPU 的支撑下,逐渐演化出了如今强大的语言理解与生成能力。本文将从训练系统和底层算子的视角出发,介绍一个大模型从原始文本到完成一次参数更新所经历的完整过程。


一、大模型训练全景

从宏观上看,一次完整的训练流程如下:
在这里插入图片描述

训练过程本质上是在不断重复这一闭环,通过预测错误、计算梯度、更新参数,让模型逐渐掌握语言规律和知识。


二、数据处理:训练的起点

任何模型都无法凭空获得知识,因此训练的第一步是准备数据。

现代大模型的训练数据通常来自网页、书籍、论文、百科、代码仓库以及各种问答社区。原始互联网数据质量参差不齐,其中包含大量广告、乱码、重复内容甚至错误信息,因此在正式训练之前,需要进行复杂的数据清洗。

数据工程师通常会完成以下工作:

去重
↓
过滤低质量内容
↓
脱敏处理
↓
语言识别
↓
质量评分
↓
构建训练语料库

这一阶段虽然几乎不涉及神经网络计算,却直接决定了模型的上限。业界普遍认为,高质量数据的重要性甚至不亚于模型规模。


三、Tokenizer:把文字变成数字

神经网络无法直接理解文字,它能够处理的只有数字。

例如一句话:

我喜欢学习大模型

经过 Tokenizer 处理后,可能会变成:

["我", "喜欢", "学习", "大模型"]

再进一步映射成:

[2009, 3684, 2111, 1037]

此时,文本已经变成了整数序列。

训练系统会把这些 Token 切分成固定长度的样本,例如长度为 4096,然后组成 Batch 输入模型:

input_ids.shape = [B, S]

其中:

  • B 表示 Batch Size
  • S 表示 Sequence Length

例如:

[8, 4096]

表示一次训练使用 8 条样本,每条样本长度为 4096 个 Token。


四、Embedding:进入向量空间

虽然 Token 已经变成了数字,但数字本身并不包含任何语义信息。

Embedding 层可以理解为一个巨大的查找表,它会把每个 Token ID 映射成一个高维向量:

Token ID
    ↓
Embedding Lookup
    ↓
Hidden Vector

例如:

input_ids: [B, S]
↓
hidden_states: [B, S, H]

其中 H 为隐藏层维度(Hidden Size)。

从这一刻开始,模型处理的不再是文字,而是高维向量空间中的表示。


五、Transformer:大模型的核心引擎

现代大模型几乎全部建立在 Transformer 架构之上。

请添加图片描述

原文:Attention Is All You Need

整个模型实际上由几十层甚至上百层 Transformer Block 堆叠而成:

Embedding
    ↓
Transformer Block × N
    ↓
LM Head
    ↓
Logits

单个 Transformer Block 的结构如下:

Input
 ↓
RMSNorm
 ↓
Self-Attention
 ↓
Residual Add
 ↓
RMSNorm
 ↓
FFN / MoE
 ↓
Residual Add
 ↓
Output

从功能上来看,Transformer Block 主要完成两件事情:

  1. 让不同 Token 之间交换信息(Attention)
  2. 对每个 Token 的特征进行非线性变换(FFN)

六、Attention:让 Token 看到彼此

Attention 是 Transformer 最核心的创新。

在传统循环神经网络中,模型必须按照时间顺序逐个处理单词;而 Attention 则允许所有 Token 同时参与计算。

例如在句子:

北京是中国的首都

中,当模型处理“首都”时,它需要知道是谁的首都。Attention 的作用就是自动建立这种关联关系。

计算过程可以概括为:

Q = X @ Wq
K = X @ Wk
V = X @ Wv

随后计算注意力:

A t t e n t i o n ( Q , K , V ) = S o f t m a x ( Q K T d ) V Attention(Q,K,V) = Softmax(\frac{QK^T}{\sqrt d}) V Attention(Q,K,V)=Softmax(d QKT)V

整体流程如下:

Input Hidden States
        ↓
      RMSNorm
        ↓
      Q K V
        ↓
      QKᵀ
        ↓
      Scale
        ↓
   Causal Mask
        ↓
     Softmax
        ↓
      × V
        ↓
 Output Projection
        ↓
   Residual Add

在 Decoder-only 模型中,还需要使用 Causal Mask,确保当前 Token 只能看到历史信息,而不能偷看未来内容。


七、FFN:提升表达能力

Attention 负责建立 Token 之间的联系,而 FFN(Feed Forward Network)负责提升每个 Token 的表达能力。

在 LLaMA、Qwen 等模型中,FFN 通常采用 SwiGLU 结构:

gate = X @ W_gate
up   = X @ W_up

hidden = SiLU(gate) * up

out = hidden @ W_down

从结构上看:

Linear
 ↓
Activation
 ↓
Elementwise Mul
 ↓
Linear

虽然结构并不复杂,但 FFN 往往占据整个训练过程中最大的计算量。在许多模型中,FFN 部分的 FLOPs 占比甚至超过 50%。

在这里插入图片描述


八、MoE:专家混合架构

随着模型规模不断增长,人们发现继续增加所有参数的计算成本越来越高,于是出现了 MoE(Mixture of Experts)。

MoE 的思想类似于现实中的专家团队。当一个问题到来时,并不会让所有专家同时工作,而是先通过 Router 判断应该激活哪些专家。

整体流程如下:

Token
  ↓
Router
  ↓
Top-K
  ↓

Expert1
Expert2
...
ExpertN

  ↓
Combine

对应到训练系统中,会增加一些新的算子:

Router GEMM
Softmax
TopK
Permute
Dispatch
All-to-All
Expert GEMM
Combine
Unpermute

这也是 DeepSeek-V3、Mixtral 等模型采用的重要技术路线。


九、损失函数:模型如何知道自己错了

经过多层 Transformer 计算之后,模型最终会输出一个词表上的概率分布:

喜欢 0.80
学习 0.10
苹果 0.05
天气 0.05

而训练数据中已经给出了正确答案。

因此系统可以计算:

预测结果
    VS
真实答案

二者之间的差异被称为 Loss。

在语言模型训练中,最常见的是 Cross Entropy Loss:

loss = CrossEntropy(logits, labels)

Loss 越大,说明模型预测得越差;Loss 越小,说明模型预测得越准确。


十、反向传播:知识是如何学进去的

前向传播只是计算结果,而真正让模型学会知识的是反向传播。

在前向传播过程中:

Input
 ↓
Attention
 ↓
FFN
 ↓
Loss

而在反向传播过程中:

Loss
 ↑
FFN
 ↑
Attention
 ↑
Input

梯度会从 Loss 开始向后传播,通过链式法则计算每个参数对最终误差的贡献。

对于 Attention,需要计算:

dQ
dK
dV

dWq
dWk
dWv

对于 FFN,需要计算:

dWup
dWgate
dWdown

最终,模型中的每一个参数都会获得对应的梯度信息。


十一、分布式训练:数千张 GPU 如何协同工作

现代大模型往往拥有数百亿甚至数千亿参数,单张 GPU 根本无法完成训练。

因此需要分布式并行技术。

数据并行(DP)负责让不同 GPU 处理不同 Batch;张量并行(TP)负责拆分矩阵计算;流水线并行(PP)负责拆分网络层;而 MoE 模型还需要专家并行(EP)。

整体关系如下:

在这里插入图片描述

这些并行策略共同支撑了如今万卡级别的大模型训练集群。


十二、AdamW:完成参数更新

当所有梯度计算完成之后,优化器开始工作。

目前最常见的优化器是 AdamW,其核心思想是在梯度基础上引入动量和历史统计信息,使训练更加稳定。

从训练流程上看:

梯度
 ↓
AdamW
 ↓
更新参数
 ↓
进入下一轮训练

每完成一次更新,模型参数都会发生微小变化,而模型能力也会略微提升。

经过数万亿次这样的迭代之后,一个真正的大语言模型便诞生了。


十三、一次完整 Training Step

最后,我们可以把一次训练迭代总结为下面的流程:

输入文本
    ↓
Tokenizer
    ↓
Embedding
    ↓
Transformer
    ↓
LM Head
    ↓
Cross Entropy Loss
    ↓
Backward
    ↓
Gradient Communication
    ↓
AdamW
    ↓
Parameter Update
    ↓
Next Step

从算子视角来看,大模型训练的核心组件实际上只有少数几类:

Embedding Lookup
RMSNorm
GEMM
MatMul
Softmax
Activation
Elementwise Add/Mul
Cross Entropy
AllReduce
AllGather
ReduceScatter
All-to-All
AdamW

理解这些算子以及它们之间的数据流,就理解了大模型训练系统的本质。后续无论学习 FlashAttention、Megatron-LM、DeepSpeed、FSDP、MoE 还是各种算子优化技术,本质上都是在优化上述训练链路中的某一个环节。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐