大模型训练底层原理解析
引言当我们使用 ChatGPT、DeepSeek 或 Qwen 进行对话时模型能够回答问题、编写代码、分析论文甚至完成复杂推理任务。表面上看这似乎是一种接近人类思维的能力但从计算机系统的角度来看大模型本质上只是在做一件事情根据前面的 Token预测下一个 Token。然而就是这样一个简单的目标在海量数据、超大规模参数和数万张 GPU 的支撑下逐渐演化出了如今强大的语言理解与生成能力。本文将从训练系统和底层算子的视角出发介绍一个大模型从原始文本到完成一次参数更新所经历的完整过程。一、大模型训练全景从宏观上看一次完整的训练流程如下训练过程本质上是在不断重复这一闭环通过预测错误、计算梯度、更新参数让模型逐渐掌握语言规律和知识。二、数据处理训练的起点任何模型都无法凭空获得知识因此训练的第一步是准备数据。现代大模型的训练数据通常来自网页、书籍、论文、百科、代码仓库以及各种问答社区。原始互联网数据质量参差不齐其中包含大量广告、乱码、重复内容甚至错误信息因此在正式训练之前需要进行复杂的数据清洗。数据工程师通常会完成以下工作去重 ↓ 过滤低质量内容 ↓ 脱敏处理 ↓ 语言识别 ↓ 质量评分 ↓ 构建训练语料库这一阶段虽然几乎不涉及神经网络计算却直接决定了模型的上限。业界普遍认为高质量数据的重要性甚至不亚于模型规模。三、Tokenizer把文字变成数字神经网络无法直接理解文字它能够处理的只有数字。例如一句话我喜欢学习大模型经过 Tokenizer 处理后可能会变成[我, 喜欢, 学习, 大模型]再进一步映射成[2009, 3684, 2111, 1037]此时文本已经变成了整数序列。训练系统会把这些 Token 切分成固定长度的样本例如长度为 4096然后组成 Batch 输入模型input_ids.shape[B,S]其中B 表示 Batch SizeS 表示 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 主要完成两件事情让不同 Token 之间交换信息Attention对每个 Token 的特征进行非线性变换FFN六、Attention让 Token 看到彼此Attention 是 Transformer 最核心的创新。在传统循环神经网络中模型必须按照时间顺序逐个处理单词而 Attention 则允许所有 Token 同时参与计算。例如在句子北京是中国的首都中当模型处理“首都”时它需要知道是谁的首都。Attention 的作用就是自动建立这种关联关系。计算过程可以概括为QX Wq KX Wk VX 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}) VAttention(Q,K,V)Softmax(dQKT)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 之间的联系而 FFNFeed Forward Network负责提升每个 Token 的表达能力。在 LLaMA、Qwen 等模型中FFN 通常采用 SwiGLU 结构gateX W_gate upX W_up hiddenSiLU(gate)*up outhidden W_down从结构上看Linear ↓ Activation ↓ Elementwise Mul ↓ Linear虽然结构并不复杂但 FFN 往往占据整个训练过程中最大的计算量。在许多模型中FFN 部分的 FLOPs 占比甚至超过 50%。八、MoE专家混合架构随着模型规模不断增长人们发现继续增加所有参数的计算成本越来越高于是出现了 MoEMixture 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 LosslossCrossEntropy(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 还是各种算子优化技术本质上都是在优化上述训练链路中的某一个环节。