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

在transformer架构里面前向传播和反向传播-lora gradient checkpoint 优化

目录
    • 1. Transformer 的基本结构回顾
    • 2. 前向传播在 Transformer 中的执行
    • 3. 反向传播在 Transformer 中的执行
    • 4. 哪些层执行前向/反向传播
  • 图例
      • Transformer Block 文本示意
      • 开启 Gradient Checkpoint 后(节省显存)

好的,我们把问题缩小到 Transformer 架构 里,来看前向传播和反向传播是如何执行的。为了清晰,我会分层次讲,从整体到细节。


1. Transformer 的基本结构回顾

一个标准 Transformer 的 Encoder 或 Decoder Block,通常包含以下几层(按顺序):

  1. Multi-Head Attention (MHA)

    • 输入:上一层输出(或 embedding)
    • 输出:经过注意力加权的表示
  2. Add & LayerNorm (残差 + 归一化)

  3. Feed Forward Network (FFN)

    • 两层线性层 + 激活(通常是 GELU 或 ReLU)
  4. Add & LayerNorm (残差 + 归一化)

所以一个 Block 可以画作:

Input → MHA → Add&Norm → FFN → Add&Norm → Output

2. 前向传播在 Transformer 中的执行

原则:从输入到输出,一层层执行前向传播。

  • Embedding 层

    • 输入 token → embedding 向量 + positional encoding
  • 每个 Transformer Block

    1. Multi-Head Attention

      • 计算 Query/Key/Value → 注意力权重 → 输出
      • 保存输出(激活)用于反向传播
    2. Add & LayerNorm

      • 残差连接 + 归一化
      • 保存归一化输出
    3. FFN

      • 线性 → 激活 → 线性
      • 保存 FFN 输出
    4. Add & LayerNorm

      • 最终输出作为下一层输入
  • 最后输出层(比如 LM head)

    • 输出 logits → 预测概率

总结前向传播就是从 Embedding 到最后输出,每层都计算并存激活。


3. 反向传播在 Transformer 中的执行

原则:从输出层开始,沿着网络倒着计算梯度。

  • 输出层

    • 计算 loss 对 logits 的梯度
  • 最后一个 Block

    1. Add&Norm → 梯度向 FFN 和残差路径传播
    2. FFN → 梯度回传到线性层权重
    3. Add&Norm → 梯度回传到 MHA 输出
    4. MHA → 梯度回传到 Query/Key/Value 权重
  • 前一层 Block

    • 重复相同流程
  • Embedding 层

    • 计算 embedding 权重的梯度

注意点

  • 梯度计算需要前向的激活

    • FFN 层的输入
    • MHA 的 Q/K/V
    • LayerNorm 的输入
  • 如果用了 gradient checkpoint

    • 不保存某些中间激活
    • 反向传播时需要重新计算前向来得到激活,再算梯度

4. 哪些层执行前向/反向传播

层类型 前向传播 反向传播
Embedding X → embedding 梯度回传到 embedding 权重
MHA (Attention) Q/K/V → attention → 输出 梯度回传到 Q/K/V 权重,算梯度时可能需要前向激活
FFN Linear → Activation → Linear 梯度回传到两层线性层权重,Activation 需要前向值
LayerNorm 归一化 梯度回传到输入和归一化参数
Output / LM head Linear → LogSoftmax 梯度回传到最后线性层

总结一句话

Transformer 每一层的前向传播先算输出,反向传播在梯度链上倒着执行,每层都用前向激活来算梯度。


如果你想,我可以画一张Transformer Block 前向和反向传播的示意图,标出激活保存和 gradient checkpoint 的位置,让你直观理解“什么时候重新算一遍”。

图例

好的,我用文本示意图来展示一个 Transformer Block 的前向传播、反向传播,以及 gradient checkpoint 机制下的“重新算一遍”。


Transformer Block 文本示意

前向传播 (Forward Pass)
------------------------
Input│▼
[Multi-Head Attention]  ← 前向输出保存(activation)│▼
[Add & LayerNorm]       ← 前向输出保存(activation)│▼
[Feed Forward Network]│   ├─ Linear1│   ├─ Activation│   └─ Linear2           ← 前向输出保存▼
[Add & LayerNorm]       ← 前向输出保存│▼
Output (送入下一个 Block)

反向传播 (Backward Pass)
------------------------
Output gradient│▼
[Add & LayerNorm]       ← 使用前向激活计算梯度│▼
[Feed Forward Network]│   ├─ Linear2 gradient│   ├─ Activation gradient│   └─ Linear1 gradient▼
[Add & LayerNorm]│▼
[Multi-Head Attention]│   ├─ Output gradient│   └─ Q/K/V gradient▼
Input gradient

开启 Gradient Checkpoint 后(节省显存)

  • 假设只在 [Add&LayerNorm] 层存 checkpoint,FFN 和 MHA 不存中间激活
  • 反向传播时:
Input gradient│▼
[Multi-Head Attention]  ← 没存激活 → 重新执行前向计算得到中间激活,再算梯度│▼
[Add & LayerNorm]       ← checkpoint 激活存在,直接算梯度│▼
[Feed Forward Network]  ← 没存激活 → 重新执行前向计算得到激活,再算梯度│▼
[Add & LayerNorm]       ← checkpoint 激活存在│▼
Output gradient

关键点

  1. 没存激活的层 → 反向传播时需要重新算一次前向传播
  2. checkpoint 层 → 激活直接可用,不需要重新算
  3. 这样就用计算时间换显存空间

http://www.jsqmd.com/news/200951/

相关文章:

  • 2026年1月国内最大PLC培训机构评测,课程+师资双保障 - 速递信息
  • Android 13源码下载
  • 大模型+MCP=超级AI助手!从入门到实战的全栈工程师必备指南(建议收藏)
  • 闲置支付宝消费券别浪费,回收变现正当时 - 京顺回收
  • 2.9 字段分箱技术详解:连续变量离散化,提升模型效果的关键步骤
  • 全网最全8个AI论文写作软件,专科生轻松搞定毕业论文!
  • 字段口径怎么统一:同名字段/统计口径/历史兼容(附口径文档模板)
  • 【必藏】RAG技术全解析:让大模型告别“胡说八道“,企业级AI知识库构建实战指南
  • 从局域网到随处可用:cpolar让Leanote 用户的真实体验升级
  • Java面试也太卷了!投100份简历3个面试,2026年春招有希望吗?如何快速突击?
  • 【必藏】大模型技术全栈指南:从Transformer到智能体设计的完整路径
  • 1.41 RAG核心原理深度解析:检索增强生成,让AI拥有长期记忆
  • 2.10 分类策略制定实战:针对不同分类,制定差异化业务策略
  • IoTDB 扩展技巧 - 详解
  • 1.47 RAG质量提升实战:5大常见问题及解决方案,让检索更精准
  • 1.42 RAG完整流程详解:从文档处理到答案生成,5步构建知识库系统
  • 【收藏必备】从零开始掌握提示词工程:5大核心原则+实战案例,小白也能写出高质量提示词
  • 1.43 NativeRAG实战:无需复杂框架,用Python实现基础RAG系统
  • 收藏这篇!35+程序员如何在大模型时代重获竞争优势:从“搬砖工“到“架构师“的蜕变指南
  • 2.1 数据分类决策的商业价值:为什么分类是数据分析的基础技能
  • Python | K折交叉验证的参数优化的KNN(k近邻)预测及可视化算法
  • 【强烈收藏】RAG知识库检索技术详解:关键词、稀疏与密集向量检索全面解析
  • C#/.NET/.NET Core优秀项目和框架2025年12月简报
  • 从部署到运维:10 款温湿度变送器集成全生命周期成本控制指南
  • 1.51 - f
  • 毕业设计
  • 【大数据 AI】Flink Agents 源码解读 --- (4) --- AgentPlan
  • 导师严选2026 AI论文软件TOP9:本科生毕业论文必备测评
  • DecEx-RAG:过程监督+智能剪枝,让大模型检索推理快6倍
  • 2.3 采购物料分类与决策案例:从数据到策略,完整业务闭环