当前位置: 首页 > article >正文

大语言模型 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 的两条进化路线:一条追求 参数稀疏 & 超大模型,一条追求 局部感知 & 多模态。
http://www.lryc.cn/news/2378549.html

相关文章:

  • python基础语法(三-中)
  • 【gitee 初学者矿建仓库】
  • 思路收集文档
  • OpenCV 光流估计:从原理到实战
  • 使用HtmlAgilityPack采集墨迹天气中的天气数据
  • ZTE 7551N 中兴小鲜60 远航60 努比亚小牛 解锁BL 刷机包 刷root 展讯 T760 bl
  • SearxNG本地搜索引擎
  • MyBatis 核心组件源码分析
  • 信息系统项目管理师高级-软考高项案例分析备考指南(2023年案例分析)
  • stack和queue简单模拟实现
  • 如何安装双系统?即windows已经安装,如何安装ubuntu 22.04LTS
  • 产品经理入门(2)产品体验报告
  • C43-指针与数组
  • UDP--DDR--SFP,FPGA实现之ddr读写控制模块
  • 云计算与大数据进阶 | 26、解锁云架构核心:深度解析可扩展数据库的5大策略与挑战(上)
  • AI Agent | Coze 插件使用指南:从功能解析到实操步骤
  • 06、基础入门-SpringBoot-依赖管理特性
  • MK米客方德SD NAND:无人机存储的高效解决方案
  • 【vscode】解决vscode无法安装远程服务器插件问题,显示正在安装
  • 1688 数据接口调用秘籍:高效获取商品实时信息的开发指南
  • 【Spring】Spring的请求处理
  • 粒子群算法(PSO算法)
  • git提交库常用词
  • LLM智能体新纪元:深入解析MCP与A2A协议,赋能智能自动化协作
  • SAP学习笔记 - 开发豆知识01 - CDS SDK命令出乱码 (cds init CAP-Test03 --add java)
  • (C语言)超市管理系统 (正式版)(指针)(数据结构)(清屏操作)(文件读写)(网页版预告)(html)(js)(json)
  • 进阶-数据结构部分:​​​​​​​2、常用排序算法
  • 解决 Three.js Raycaster 点击位置与实际交点偏差问题
  • 25、DeepSeek-R1论文笔记
  • LeetCode --- 156双周赛