大语言模型 10 - 从0开始训练GPT 0.25B参数量 补充知识之模型架构 MoE、ReLU、FFN、MixFFN

写在前面

GPT(Generative Pre-trained Transformer)是目前最广泛应用的大语言模型架构之一,其强大的自然语言理解与生成能力背后,是一个庞大而精细的训练流程。本文将从宏观到微观,系统讲解GPT的训练过程,包括数据收集、预处理、模型设计、训练策略、优化技巧以及后训练阶段(微调、对齐)等环节。

我们将先对 GPT 的训练方案进行一个简述,接着我们将借助 MiniMind 的项目,来完成我们自己的 GPT 的训练。

训练阶段概览

GPT 的训练过程大致分为以下几个阶段:

  • 数据准备(Data Preparation)
  • 预训练(Pretraining)
  • 指令微调(Instruction Tuning)
  • 对齐阶段(Alignment via RLHF 或 DPO)
  • 推理部署(Inference & Serving)

简单介绍

过去两年,大语言模型(LLM)在实践中几乎清一色采用 Decoder-Only Transformer。与此同时,社区又陆续把 LayerNorm 换成 RMSNorm、把 ReLU/GELU 换成 SwiGLU,甚至在前向网络里引入 MoE / MixFFN 等稀疏或卷积混合结构。理解这些改动背后的设计动机,有助于你在 模型微调、推理加速或重新发明"更小更强"模型 时做出正确的工程权衡。

模型架构

MiniMind-Dense(和Llama3.1一样)使用了Transformer的Decoder-Only结构,跟GPT-3的区别在于:

● 采用了GPT-3的预标准化方法,也就是在每个Transformer子层的输入上进行归一化,而不是在输出上。具体来说,使用的是RMSNorm归一化函数。

● 用SwiGLU激活函数替代了ReLU,这样做是为了提高性能。

● 像GPT-Neo一样,去掉了绝对位置嵌入,改用了旋转位置嵌入(RoPE),这样在处理超出训练长度的推理时效果更好。

MiniMind-MoE模型,它的结构基于Llama3和Deepseek-V2/3中的MixFFN混合专家模块。

● DeepSeek-V2在前馈网络(FFN)方面,采用了更细粒度的专家分割和共享的专家隔离技术,以提高Experts的效果。

MiniMind的整体结构一致,只是在RoPE计算、推理函数和FFN层的代码上做了一些小调整。 其结构如下图(重绘版):

修改模型配置见./model/LMConfig.py。 参考模型参数版本见下表:

Decoder-Only Transformer

Decoder-Only 去掉了原始 Transformer 的 Encoder,改用 因果掩码 + KV-缓存 即可在推理时做到 O(1) 序列延长成本。因此 GPT-3、LLaMA、Gemini 乃至文本-图像多模态模型都选择了它。

decoder-only-transformers-explained-the-engine-behind-llms

FFN

经典 FFN = Linear(d_model → d_ff) + 激活 + Linear(d_ff → d_model),其中

d_ff≈4·d_model,激活函数最早用 ReLU。FFN 占据 >60 % FLOPs & 参数量,因此它也是改进热点。

ReLU vs SwiGLU

实验证明,等价参数量下 SwiGLU 能带来 0.3 ~ 0.6 token perplexity 改进,且推理成本几乎不变。

RMSNorm

公式:y = x / RMS(x) · γ,其中 RMS(x)=sqrt(mean(x²))

  • 省略中心化 → 参数更少,FLOPs 与内存带宽-读写减半
  • 训练稳定性 在 Pre-Norm 框架中与 LayerNorm 等价;实测可 缩短 1 ~ 10 % 训练时间
  • 兼容大批量 / 低精度 适合 GPU / TPU 混合精度

NeurIPS-23 的对比研究正式证明:Pre-LN 与 Pre-RMSNorm 在数学上可互换,并提出进一步压缩的 CRMSNorm。

MoE & MixFFN

MoE

思路:为每个 token 只激活少数"专家"FFN,计算成本与密集模型相当但可容纳 亿 / 万亿级参数

  • 核心模块: ① 稀疏门控(Top-k 或 Router),② 专家簇(通常 k=2,4,8...)
  • 代表模型:Switch-Transformer、GLaM、Mixtral-8x7B

优缺点:

  • 参数利用率高,训练加速可达 7 ×  (相同 FLOPs)
  • 通讯/负载均衡难度大,推理需要"容量因子"调度

MixFFN

  • 在两层 MLP 中插入 3 × 3 Depthwise Conv,融合 局部感受野 与 全局 MLP
  • 位置编码可选/可省,分辨率外推更稳
  • 语言模型可类比引入 (Conv or) LoRA-Adapter 获得额外局部建模能力

小小总结

  • Decoder-Only 让语言生成模型推理线性伸缩;
  • RMSNorm 与 SwiGLU 分别在归一化与激活层面消除冗余、提升可训练性;
  • MoE / MixFFN 代表 FFN 的两条进化路线:一条追求 参数稀疏 & 超大模型,一条追求 局部感知 & 多模态。
相关推荐
极客小俊8 分钟前
1小时搭建免费AI知识库
人工智能
椿融雪10 分钟前
分布式搜索和分析引擎Elasticsearch实战指南
大数据·分布式·elasticsearch
音视频牛哥33 分钟前
Android端RTMP低延迟播放器在工业与智能场景下的架构与落地
人工智能·机器学习·音视频开发
wshzd36 分钟前
LLM之RAG理论(十八)| ChatGPT DeepResearch 深度研究功能全面技术分析报告
人工智能·chatgpt
230L1_78M69Q5487H42 分钟前
【机器学习】机器学习新手入门概述
人工智能·python·机器学习·scikit-learn
CCF_NOI.42 分钟前
中国高铁从追赶到领跑的破壁之路
人工智能·中国·china·列车
格林威44 分钟前
Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现裂缝的检测识别(C#代码UI界面版)
人工智能·深度学习·数码相机·yolo·计算机视觉
Monkey的自我迭代1 小时前
KNN算法实战:手写数字识别详解
人工智能·opencv·计算机视觉
拓端研究室1 小时前
专题:2025机器人产业技术图谱与商业化指南|附130+份报告PDF、数据汇总下载
大数据·人工智能
码界筑梦坊1 小时前
91-基于Spark的空气质量数据分析可视化系统
大数据·python·数据分析·spark·django·numpy·pandas