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

大模型-模型架构-详细配置

一、详细配置简介

1、目的:配置可以提升训练稳定性、性能与计算效率的组件
2、可配置部分:
  • 归一化
  • 注意力机制
  • 激活函数
  • 位置编码

二、层归一化

1、作用:对数据进行重新放缩,提升模型的训练稳定性
2、发展过程:批次归一化->层归一化(LayerNorm)->RMSNorm、DeepNorm
3、RMSNorm:
  • 特点:仅利用激活值综合的均方根对激活值重新缩放
  • 优点:相比层归一化(LayerNorm)模型训练速度快、模型性能更好
4、DeepNorm
  • 特点:基于LayerNorm,在残差连接中对激活值按照一定比例进行缩放
  • 优点:模型层数成功被拓展至1000层,提升了训练稳定性和模型性能
5、位置
层前归一化(Pre-Norm)
  • 位置:加在每一层之前
  • 优点:防止模型梯度爆炸和梯度消失
  • 缺点:模型性能低于层厚归一化
夹心归一化(SandWich-Norm)
  • 位置:层前归一化和层后归一化的结合
  • 优点:理论上具有更高的灵活度
  • 缺点:实际上可能会引起模型训练崩溃
层后归一化(Post-Norm)
  • 位置:每一层最后
  • 优点:
    • 加快神经网络收敛速度,使模型可以更有效地传播梯度,从而减少训练时间
    • 降低神经网络对于超参数(如学习率、初始化参数等)的敏感度,使得网络更容易调优,并减少了超参数调整的难度
  • 缺点:由于输出层附近存在梯度较大问题,模型训练容易出现不稳定的现象
6、总结

现有大模型中,Post-Norm很少被单独使用,通常与其他策略相结合使用,例如GLM-130B是Post-Norm与Deep-Norm一起使用

三、激活函数

1、位置

前馈网络层内

2、作用

引入非线性变换,提升模型能力

3、类型
ReLU
  • 使用场景:原始transformer模型中采用的激活函数
  • 计算过程:将输入的每个神经元和”零“值比较,将小于的值置为0
  • 缺点:可能会产生神经元失效问题,置为0的神经元将学习不到有用信息
Swish
  • 原理:将神经元和该神经元的Sigmoid激活的乘积作为新的激活函数
GELU
  • 原理:利用标准的高斯累积分布函数作为激活函数
GLU及其变种SwiGLU、GeGLU
  • 原理:GLU引入了两个不同的线性层,其中一个线性层的输出将被输入到一个激活函数中,其结果将和另一个线性层的输出进行逐元素相乘作为最终输出
  • 优点:相比于其他激活函数,GLU能带来更好的性能表现
  • SwiGLU、GeGLU:相比于GeLU,SwiGLU和GeGLU拥有更好的性能和收敛性,但计算过程更加复杂

四、位置编码

1、绝对位置编码
2、相对位置编码
  • 特点:可以对比训练序列更长的序列进行建模,即具备一定的外推能力,适合长文本场景
3、旋转位置编码
  • 特点:基于绝对位置信息的旋转矩阵来表示注意力中的相对位置信息
  • 优点:具有良好的性能级长期衰减特性
  • 应用情况:被主流大模型广泛采用
4、ALiBi位置编码
  • 原理:通过在建和查询之间的距离上施加相对距离相关的惩罚来调整注意力分数
  • 特点:
    • 一种特殊的相对位置编码,用于增强模型外推能力,能对远超上下文窗口更远距离的词元进行有效建模
    • 内置惩罚分数,不需要引入任何可训练的参数

五、注意力机制

1、完整自注意力机制
  • 原理:对其前面的所有词元都要进行计算,因此序列长度为T的词元需要O(T^2)的时间复杂度,多头自注意力机制,会将多个头的计算结果进行聚合,形成最终输出
2、稀疏注意力机制
  • 特点:相比完整自注意力机制,算力消耗和计算复杂度低
  • 滑动窗口注意力机制
    • 应用最广泛的稀疏注意力机制
    • 不会计算跟所有词元的注意力信息,只计算设定的窗口内的注意力信息
3、多查询/分组查询注意力机制
  • 原理:针对不同的头共享相同的键和值变换矩阵
  • 优点:减少防存量,提高计算强度,从而实现更快解码速度,且对模型性能影响较小
  • 分组查询注意力机制:
    • 特点:结合多查询注意力机制的效率与多头自注意力机制的性能
    • 原理:将全部的头划分为若干组,并且针对同一组内的头共享相同的变换矩阵
    • 优点:有效的平衡了效率和性能
4、硬件优化的注意力机制
  • 原理:利用硬件优化速度与内存占用
  • FlashAttention:
    • 原理:通过矩阵分块减少内存读写次数的方式,提高注意力分数的计算效率
  • PagedAttention:
    • 原理:针对增量解码阶段,对于KV缓存进行分块存储,并优化了计算方式,增大了并行计算度,从而提高了计算效率

六、混合专家模型

目的

不显著提升计算成本的情况下,实现对模型参数的拓展

原理

每个混合专家曾里面又多个前馈神经网络,有一个门控函数控制权重

阳历

Mixtral(8*7B),基于Mixtral(7B),每次计算时,选择两个专家进行计算,每次仅激活13B参数,其性能超过了参数更多的LLaMA-2(70B)

七、LLaMA的具体配置

层归一化:RMSNorm
激活函数:SwiGLU、GeGLU
位置编码:RoPE、ALiBi

http://www.kler.cn/news/303486.html

相关文章:

  • 雷电9模拟器安装magisk和lsposed
  • 负载均衡:从理论到实践 ---day04
  • http连接与ssh连接的区别
  • 华为HCIA、HCIP和HCIE认证考试明细
  • 实现一个点缓慢到达另一个点
  • 【网络】传输层协议UDP
  • Kubernetes 集群管理
  • 音视频入门基础:AAC专题(1)——AAC官方文档下载
  • 【JVM】判断对象能否回收的两种方法:引用计数算法,可达性分析算法
  • 神经网络多层感知器异或问题求解-学习篇
  • mysql数据库如何开启binlog日志
  • cesium.js 入门到精通(7)
  • 修改centos7系统语言en_US.UTF-8为中文zh_CN.UTF-8
  • 高防服务器的优势与劣势分析
  • 【LLM:Fan】
  • 踩坑记:Poco库,MySql,解析大文本的bug
  • 递归、排序、二分查找(C语言实现)
  • mybatis与concat实现模糊查询、mybatis中模糊查询concat传入参数为空时的解决方法
  • nacos安装使用调优及面试题分享
  • Apple发布会都有哪些亮点?如何在苹果手机和电脑上录制屏幕?
  • MATLAB默认工作路径修改
  • 串口通信数据包介绍和包结构定义实例
  • 【Echarts】vue3打开echarts的正确方式
  • real, dimension(3) :: rho1 和 real :: rho1(3) 的区别
  • C++学习笔记----7、使用类与对象获得高性能(一)---- 书写类(1)
  • element表格合并列数据相同合并单元格
  • 【Flutter 面试题】 无需上下文进行路由跳转原理是怎么样的
  • Python用MarkovRNN马尔可夫递归神经网络建模序列数据t-SNE可视化研究
  • 医疗报销|基于springboot的医疗报销系统设计与实现(附项目源码+论文+数据库)
  • RocketMQ 集群搭建详细指南