首页 > 其他分享 >大模型中用到的归一化方法总结

大模型中用到的归一化方法总结

时间:2024-05-30 19:59:54浏览次数:30  
标签:DeepNorm 用到 RMSNorm 归一化 layerNorm 模型 Norm

大模型中的归一化主要是为了解决LLM训练不稳定的问题

LLM中归一化方法可以按照归一化方法来分,主要分为LayerNorm,BatchNorm,RMSNorm以及DeepNorm

按照归一化位置来分类,包括 postNorm 和 preNorm

1. BatchNorm

BatchNorm主要对数据的一定的特征维度在batch数据中进行归一,一般来说应用于图像。

这种方法很难适用于序列数据,对于序列数据而言,在batch维度做归一意义不大,而且一个batch内的序列长度不同。

2. LayerNorm(https://zhuanlan.zhihu.com/p/666791682)

LayerNorm是针对序列数据提出的一种归一化方法,主要在layer维度进行归一化,即对整个序列进行归一化。layerNorm会计算一个layer的所有activation的均值和方差,利用均值和方差进行归一化。

 

 

3. RMSNorm

RMSNorm的提出是为了提升layerNorm的训练速度提出的。RMSNorm也是一种layerNorm,只是归一化的方法不同。相比layerNorm中利用均值和方差进行归一化,RMSNorm 利用均方根进行归一化

 

 对于layerNorm和RMSNorm,layerNorm包含缩放和平移两部分,RMSNorm去除平移部分,只保留缩放部分。这样做的依据是,有研究认为layerNorm取得成功的关键是缩放部分的缩放不变性,而不是平移部分的平移不变性。

 RMSNorm相比一般的layerNorm,减少了计算均值和平移系数的部分,训练速度更快,效果基本相当,甚至有所提升。

4. DeepNorm

DeepNorm是由微软提出的一种Normalization方法。主要对Transformer结构中的残差链接做修正。

DeepNorm可以缓解模型参数爆炸式更新的问题,把模型参数更新限制在一个常数域范围内,使得模型训练过程可以更稳定。模型规模可以达到1000层。

DeepNorm兼具PreLN的训练稳定和PostLN的效果性能。

DeepNorm对layerNorm之前的残差链接进行了up-scale,在初始化阶段down-scale了模型参数。GLM-130B 模型中就采用了DeepNorm。

二、归一化位置

同一设置之下,Pre Norm结构往往更容易训练,但最终效果通常不如Post Norm。

 

而我们知道,神经网络深度通常比宽度更重要:

 a. 提升同样效果需要增加的宽度远远超过需要增加的深度

 b. 宽而浅的网络可能比较擅长记忆,却不擅长概括,即泛化能力差 Post Norm的结构迁移性能更加好,也就是说在Pretraining中,Pre Norm和Post Norm都能做到大致相同的结果,但是Post Norm的Finetune效果明显更好。

Warmup是在训练开始阶段,将学习率从0缓增到指定大小,而不是一开始从指定大小训练。如果不进行Wamrup,那么模型一开始就快速地学习,由于梯度消失,模型对越靠后的层越敏感,也就是越靠后的层学习得越快,然后后面的层是以前面的层的输出为输入的,前面的层根本就没学好,所以后面的层虽然学得快,但却是建立在糟糕的输入基础上的。

很快地,后面的层以糟糕的输入为基础到达了一个糟糕的局部最优点,此时它的学习开始放缓(因为已经到达了它认为的最优点附近),同时反向传播给前面层的梯度信号进一步变弱,这就导致了前面的层的梯度变得不准。

所以,如果Post Norm结构的模型不进行Wamrup,我们能观察到的现象往往是:loss快速收敛到一个常数附近,然后再训练一段时间,loss开始发散,直至NAN。如果进行Wamrup,那么留给模型足够多的时间进行“预热”,在这个过程中,主要是抑制了后面的层的学习速度,并且给了前面的层更多的优化时间,以促进每个层的同步优化。

标签:DeepNorm,用到,RMSNorm,归一化,layerNorm,模型,Norm
From: https://www.cnblogs.com/Revelation/p/18223131

相关文章

  • 模型节点操作学习笔记(1)--SavedModel详解
    参考:使用SavedModel格式 | TensorFlowCore(google.cn) (持续更新)   SavedModel是一个包含序列化签名和运行这些签名所需的状态的目录,其中包含变量值和词汇表。$ls{mobilenet_save_path}assetsfingerprint.pbsaved_model.pbvariablesassets目......
  • USP技术提升大语言模型的零样本学习能力
     大语言模型(LLMs)在零样本和少样本学习能力上取得了显著进展,这通常通过上下文学习(in-contextlearning,ICL)和提示(prompting)来实现。然而,零样本性能通常较弱,因为缺乏指导和难以应用现有的自动提示设计方法。论文提出了一种名为UniversalSelf-AdaptivePrompting(USP)的自动提示......
  • 【软件测试】软件测试概念 | 测试用例 | BUG | 开发模型 | 测试模型 | 生命周期
    文章目录一、什么是软件测试1.什么是软件测试2.软件测试和调试的区别测试人员需要的素养二、软件测试概念1.需求1.需求的定义2.测试人员眼中的需求2.测试用例1.测试用例概念3.BUG软件错误4、开发模型和测试模型1.软件的生命周期2.开发模型1.瀑布模型2.螺旋模型3.......
  • 大模型算法办备案全网最详细说明(+附件)
    ​已成功备案产品(近130家,不包括审核中的)一、大模型算法备案的强制性二、生成式人工智能(大语言模型)安全评估要点三、大模型备案必备材料+重点说明四、大模型备案填报流程五、大模型备案时间成本对比六、备案建议附录、过程性材料关于备案咨询不论最终是找我们做备案,......
  • python前端streamlit模型部署
    简单介绍使用前端streamlit框架快速部署本地模型:1、模型训练:importpandasaspd#流程整合fromsklearn.pipelineimportmake_pipeline,Pipeline#数据处理fromsklearn.imputeimportSimpleImputerfromsklearn.preprocessingimportMinMaxScaler,StandardSca......
  • Llama模型家族训练奖励模型Reward Model技术及代码实战(二)从用户反馈构建比较数据集
    LlaMA3系列博客基于LlaMA3+LangGraph在windows本地部署大模型(一)基于LlaMA3+LangGraph在windows本地部署大模型(二)基于LlaMA3+LangGraph在windows本地部署大模型(三)基于LlaMA3+LangGraph在windows本地部署大模型(四)基于LlaMA3+LangGraph在w......
  • 程序员的自嘲:从超人梦到AI助手,我们如何应对AI大模型时代的挑战?
    在AI大模型时代,作为一名程序员,我不得不承认,确实有点危机感。自从OpenAI推出ChatGPT-4O之后,看了发布会,我更加有危机感了,因为AI越来越像人了。记得小时候,我梦想着成为超人,拯救世界。但现在,我感觉超人变成了AI,而我要拯救的,是我的饭碗!百度CEO李彦宏大佬曾说“未来人人都是程序......
  • Mistral 发布 Codestral,它的第一个代码生成人工智能模型,精通 80 多种编程语言
    Mistral是一家由微软支持、估值60亿美元的法国人工智能初创公司,它发布了第一个用于编码的生成式人工智能模型,名为Codestral。与其他代码生成模型一样,Codestral旨在帮助开发人员编写代码并与代码交互。Mistral在博客文章中解释说,它接受了80多种编程语言的培训,包括Py......
  • 大模型智力升级:AI的未来之路
    大模型的发展引领了人工智能的新时代,其强大的数据处理和学习能力在医疗、金融、教育等众多领域取得了令人瞩目的成就。然而,随之而来的挑战也不容忽视。尽管大模型在特定任务上展现出了卓越的性能,但它们在理解复杂语境、处理未见情况的能力以及快速适应新环境方面仍显得力不从......
  • 多模态模型的演进和四种主流架构类型
    机器学习中的多模态领域近年来取得了显著进展。能够处理图像、音频或视频以及文本(语言)的模型显著增多,特别是在Transformer模型的帮助下。我们对现在的多模态按照架构模式分为四类:A、B、C、D。A和B类型在模型内部层中深度融合多模态输入,可以实现细粒度控制模态信息流动,但需要大......