码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 深度学习进阶(二十六)现代 LLM 的核心架构设计其一:RMSNorm


    合集 - 深度学习进阶(31)
    1.深度学习进阶(一)从注意力到自注意力03-312.深度学习进阶(二)多头自注意力机制(Multi-Head Attention)04-023.深度学习进阶(三)Transformer Block04-044.深度学习进阶(四)Transformer 整体结构04-065.深度学习进阶(五)Vision Transformer04-086.深度学习进阶(六)归纳偏置与蒸馏04-107.深度学习进阶(七)Data-efficient Image Transformer04-138.深度学习进阶(八)Swin Transformer04-159.深度学习进阶(九)池化技术的初步改进:RoI Pooling04-1910.深度学习进阶(十) RoI Align04-2111.深度学习进阶(十一)Position-Sensitive RoI Pooling04-2412.深度学习进阶(十二)可变形池化 deformable RS RoI Pooling04-2713.深度学习进阶(十三)可变形卷积 DCN04-2914.深度学习进阶(十四)ConvNeXt04-3015.深度学习进阶(十五)通道注意力 SE05-0316.深度学习进阶(十六) 混合注意力 CBAM05-0417.深度学习进阶(十七)高效通道注意力 ECA05-0518.深度学习进阶(十八)坐标注意力 CA05-0619.深度学习进阶(十九)相对位置编码 RPE05-0920.深度学习进阶(二十)Transformer-XL05-1121.深度学习进阶(二十一)跨窗口的 RPE05-1322.深度学习进阶(二十二)T5:NLP任务的首次大一统05-1523.深度学习进阶(二十三)偏置型 RPE05-1824.深度学习进阶(二十四)Swin 的二维 RPE05-2025.深度学习进阶(二十五)RoPE:现代 NLP 的位置编码范式05-29
    26.深度学习进阶(二十六)现代 LLM 的核心架构设计其一:RMSNorm06-01
    27.深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU06-0428.深度学习进阶(二十八)现代 LLM 的核心架构设计其三:Decoder-Only 下的 KV Cache06-0829.深度学习进阶(二十九)现代 LLM 的核心架构设计其四:GQA06-0930.深度学习进阶(三十)从 Transformer 到 LLaMA:现代 LLM 架构总览06-1631.深度学习进阶(三十一)FlashAttention:IO 感知的精确注意力06-19
    收起

    上一篇我们介绍了旋转位置编码 RoPE ,它通过在 QK 点积中注入旋转矩阵,让注意力自然而然地感知到相对位置。如今 RoPE 已经成为几乎所有主流开源大模型的位置编码标准。

    但位置编码只是现代大模型改造的一个环节。 如果把标准 Transformer 和今天的大模型放在一起对比,就会发现归一化方式、激活函数、注意力结构……几乎每个模块都被动过。

    因此,近几篇会正式进入现代 LLM 模型架构,展开其相关技术。
    本篇展开第一个改动:归一化。

    1. 归一化的发展历程#

    我们在很早之前就展开过归一化的内容:归一化,它的基本逻辑是通过调整数据尺度来加速模型训练,帮助优化,从而让模型更快的收敛,这里再简单复述一下:

    一个深层网络在训练时,每层的输入分布都会随着前一层参数的变化而不断变化。这意味着后一层需要持续适应前一层输出的分布漂移,训练也就变得更困难,甚至可能导致梯度现象。
    当时的研究者将这一问题归因于内部协变量偏移(Internal Covariate Shift,ICS),并尝试通过归一化稳定中间层分布。

    最初的方案是 15 年的 Batch Normalization:对每一层的激活值做归一化,减去 batch 均值,除以 batch 标准差。这个操作让网络可以使用更大的学习率、更少的 epoch 就收敛,也因此迅速成了 CNN 的标配。

    但 Batch Normalization 的局限在于依赖 batch 维度的统计量。 在序列长度变化、 batch size 不一定大的 NLP 任务中,其效果会大打折扣。
    而且,在 Transformer 这种结构中,BN 的 “竖着统计”和与自注意力的 “横着注意” 在同时应用时,也存在逻辑上的不协调。

    于是 16 年的 Layer Normalization 换了一个思路:不沿 batch 维度归一化,而是沿特征维度归一化。
    这种方式针对单个样本,计算它所有特征的均值和方差,然后做归一化。既不依赖 batch size,也不受序列长度影响,天然适合序列模型。

    此后,LayerNorm 就成了 Transformer 的标准配置,一直到今天的少部分大模型也仍在使用。
    因此,在进入 RMSNorm 前,我们再回顾一下 LN 本身的逻辑。

    2. LayerNorm 有什么问题?#

    我们在之前的 Transformer Block 里也介绍过 LN,先看一个标准的 LayerNorm 公式:

    LayerNorm(x)=x−μσ2+ϵ⊙γ+β

    其中:

    μ=1d∑i=1dxi

    σ2=1d∑i=1d(xi−μ)2

    γ 和 β 是可学习的参数,维度与 x 相同。ϵ 是防止除零的极小常数。
    总结来看,LN 做了三件事:

    1. 居中(centering):减去均值 μ,让分布中心归零。
    2. 缩放(scaling):除以标准差 σ,把方差归一化到 1 。
    3. 恢复(affine transformation):用 γ 和 β 恢复模型需要的尺度和偏移。

    前两步是固定的归一化操作,第三步是把"自由度"还给模型。因为强制把所有激活值变成零均值单位方差不一定是最优的,模型可能希望某些层保留特定的分布特征。

    看这个结构,感觉每一步都很合理。但科研往往打破常规,19 年的论文 Root Mean Square Layer Normalization 提出了问题:

    这三步里,真的每一步都是必要的吗?特别是第一步:居中。

    以此,我们来展开 RMSNorm 的思路:

    3. RMSNorm 的内容#

    RMSNorm 提出了一个很直接的实验:把 LayerNorm 的居中部分去掉,只保留缩放,看看效果如何。去掉之后的公式长这样:

    RMSNorm(x)=x1d∑i=1dxi2+ϵ⊙γ

    对比一下:

    操作 LayerNorm RMSNorm
    计算均值 μ=1d∑xi 无
    减去均值 x−μ 无
    除以标准差 1d∑(xi−μ)2+ϵ 1d∑xi2+ϵ
    可学习偏置 β 无
    可学习增益 γ γ

    很明显,RMSNorm 简化了两处内容:

    1. 取消中心化,直接使用原始输入的均方根来做归一化的分母,而不是用标准差。
    2. 去掉偏置参数 β,这是因为不做中心化后的分布中心不再是零,就不需要专门用一个可学习参数去专门调整了。
      8d11cc5e-0087-4fab-9bfb-a7a34fac819f.png

    4. 为什么可以去掉中心化?#

    值得一提的是,这一问题的答案并不在 RMSNorm 论文本身,而是在后续大模型实践中逐渐清晰的,其关键在于我们之前提到的 Pre-Norm 结构。

    我们在 Transformer Block那里展开过 Post-Norm 和 Pre-Norm 两种结构:

    1. Post-Norm:归一化放在子层之后(LayerNorm(x+Sublayer(x)))
    2. Pre-Norm:归一化放在子层之前(x+Sublayer(LayerNorm(x)))

    已知 Post-Norm 是原版 Transformer 的设计,但深层训练不稳定。
    于是 Pre-Norm 把归一化放在残差分支的入口处,保证了主干的信号流通更加顺畅,训练更稳定,从而成为事实标准。
    后续大量实践表明,Transformer 的训练稳定性主要依赖于尺度控制而非严格的零均值约束。
    所以 Pre-Norm 结构改善了梯度传播,而 RMSNorm 保留了最关键的尺度归一化功能。两者结合后,即使不再执行中心化操作,模型依然能够稳定训练并保持性能。

    但毕竟是黑箱,还有一种说法是 Pre-Norm 结构和残差的组合可以特征值保持较小的均值,让中心化不再那么必要。

    总之,在主流认知中的共同点都有 Pre-Norm 的重要性,但验证其效果后,剩下的其实也就是怎么讲故事的问题了。

    我们来重点看看其效果:

    5. RMSNorm 的表现#

    首先,RMSNorm 论文在多个任务上做了对比。核心结论是:去掉均值中心化之后,效果与 LayerNorm 基本持平,甚至在某些设定下略有提升。

    但更重要的是计算效率。RMSNorm 省去了两个操作:

    1. 前向:不需要计算均值 μ,均方根的计算也比方差计算少一次减法。
    2. 反向:不需要对 β 求梯度。

    原论文在多种网络结构上进行了实验:在保持性能接近的情况下,整体运行时间可减少约 7%~64%。对于 Transformer 模型,加速通常在 7%~15% 左右。
    在单层上这点差异微乎其微,但在 70B、上百层的模型中,累积起来就是可观的训练加速。

    但同样要说明的是:今天的大模型层数更深,使用的技术更广,Norm 层的占比变小,实际上的收益已经不会像上面一样那么可观了。

    从 LLaMA 开始,RMSNorm 几乎成了所有现代大模型的默认选择:

    模型系列 归一化方式
    LLaMA 1/2/3 RMSNorm
    Mistral / Mixtral RMSNorm
    Qwen 系列 RMSNorm
    Gemma RMSNorm
    DeepSeek RMSNorm
    GPT-NeoX / Pythia LayerNorm
    原始 Transformer LayerNorm

    2023 年之后发布的大模型,几乎全都换成了 RMSNorm。

    这便是 RMSNorm 的全部逻辑,就是这样的一个个改进,支撑起了庞大的现代 LLM 架构。

    作者:哥布林学者

    出处:https://www.cnblogs.com/Goblinscholar/p/20257416

    版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

    给自己一些时间。

  • 相关阅读:
    mac电脑安装雷蛇管理软件,实现调整鼠标dpi,移动速度,灯光等
    为什么大家想要晋升职称?工程师职称有什么用?
    [山东科技大学OJ]1487 Problem B: 编写函数:字符串的查找字符 之二 (Append Code)
    SpEl简单使用
    docker 是什么
    网络安全(黑客)自学
    PBR系列-物理材质(上)
    【夜读】一个人的顶级自律、是坚持这四件事
    智能网联汽车云控系统第2部分:车云数据交互规范
    ck 配置 clickhouse-jdbc-bridge
  • 原文地址:https://www.cnblogs.com/Goblinscholar/p/20257416
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号