MEGALODON:突破传统,实现高效无限上下文长度的大规模语言模型预训练和推理

在人工智能领域,尤其是在自然语言处理(NLP)中,大模型(LLMs)的预训练和推理效率一直是研究的热点。最近,一项突破性的研究提出了一种新型神经网络架构——MEGALODON,旨在解决传统Transformer架构在处理长序列时面临的挑战。

MEGALODON-7B、LLAMA2-7B和LLAMA2-13B在训练过程中处理的token数量与负对数似然(Negative Log-Likelihood, NLL)的关系。比较不同模型在相同训练token数量下的性能,其中NLL越低表示模型性能越好

大模型(LLMs)在处理诸如多轮对话、长文档理解和视频生成等实际应用时,需要高效地处理长序列数据,并生成连贯的输出。然而,现有的Transformer架构由于其二次数方的计算复杂性以及对长度泛化的有限归纳偏差,使得其在长序列建模上效率不高。尽管已经提出了一些次二次数方的解决方案,如线性注意力和状态空间模型,但它们在预训练效率和下游任务准确性上仍不如Transformer。

不同模型在标准学术基准测试中的表现,包括模型大小、上下文长度以及预训练期间使用的数据token数量。表格中还展示了各个模型在多个基准测试中的得分

为了克服这些限制,MEGALODON架构应运而生。它继承了MEGA(指数移动平均与门控注意力)的架构,并进一步引入了多个技术组件以提高其能力和稳定性。这些组件包括复杂指数移动平均(CEMA)、时间步归一化层、归一化注意力机制以及预归一化和双跳残差配置。

不同归一化方法的示意图,包括层归一化(Layer Norm)、组归一化(Group Norm)和时间步归一化(Timestep Norm)

Figure 2展示了不同归一化方法的计算方式,这些方法在神经网络中用于稳定训练过程并提高模型的性能。归一化通过调整激活输出的分布,减少内部协变量偏移,从而使得模型更加稳定,便于学习和泛化。归一化方法包括:

  1. Layer Normalization(层归一化):这是一种常用的归一化技术,它在神经网络的层级上对数据进行归一化处理。Layer Normalization会在神经网络的每一层计算激活值的均值和方差,然后使用这些统计量来归一化当前层的激活输出。

  2. Group Normalization(分组归一化):这种方法是对Layer Normalization的一个扩展,它将特征维度分成多个组,并在每个组内分别计算均值和方差来归一化激活值。Group Normalization允许模型在特征维度上捕捉局部依赖性,同时减少参数数量。

  3. Timestep Normalization(时间步归一化):这是MEGALODON架构中特别提出的一种归一化方法,它专门用于处理序列数据。Timestep Normalization在序列的时间步上计算累积的均值和方差,以此来归一化序列数据。这种方法对于自回归模型特别有用,因为它可以防止时间步上的梯度消失或爆炸问题,同时避免未来信息的泄露。

MEGALODON架构中,这些归一化方法被用来增强模型处理长序列的能力。通过合理地选择和应用这些归一化技术,MEGALODON能够在保持计算效率的同时,提高模型在长序列数据上的稳定性和性能。

MEGALODON架构的示意图

Figure 3提供了MEGALODON架构的详细图解,展示了其核心组件和配置。这个架构是为了提高大型语言模型(LLMs)在长序列数据上的效率和性能而设计的

Figure 3(a) 展示了一个MEGALODON层的草图,它包括以下几个关键组件:

  • CEMA (Complex Exponential Moving Average) Output: 这是MEGALODON中的一个创新组件,它扩展了传统的指数移动平均(EMA)到复数域,以增强模型捕捉长距离依赖的能力。

  • Gate: 门控机制是控制信息流的一种方式,在MEGALODON中,可能包括重置门(reset gate)和更新门(update gate),它们共同作用于注意力机制的输出。

  • Q, K, V (Query, Key, Value): 这些是注意力机制中的查询、键和值,它们是模型用来计算注意力分数和加权输出的基础。

  • Normalized Attention Unit: 归一化注意力单元是MEGALODON中的另一个关键创新,它通过归一化查询和键的表示来提高注意力机制的稳定性。

  • Output Y: 经过注意力机制和后续的归一化处理后,得到的输出将被送入下一层或作为最终的预测结果。

  • Layer Norm: 层归一化被应用于输入和注意力输出上,以稳定训练过程并提高模型的泛化能力。

  • FFN (Feed-Forward Network): 这是每个Transformer层中的标准组件,用于在注意力机制之后进一步处理数据。

Figure 3(b) 展示了预归一化(Pre-Norm)的配置,这是Transformer架构中常用的一种归一化策略。在这种配置中:

  • 输入X首先被送入归一化层,然后进入注意力机制。

  • 注意力机制的输出与原始输入X相加,形成残差连接。

  • 残差连接的输出再次经过归一化,然后送入前馈网络(FFN)。

这种配置有助于减少训练过程中的内部协变量偏移,并且由于归一化层在每个子层(如注意力机制和FFN)之前应用,因此有助于稳定深层网络的训练。

Figure 3(c)展示了MEGALODON中的另一种配置,即预归一化结合双跳残差连接。这种配置对预归一化进行了改进:

  • 输入X首先经过归一化,然后送入注意力机制。

  • 注意力机制的输出与原始输入X相加,形成第一跳残差连接。

  • 这个残差连接的输出再次经过归一化,然后送入前馈网络(FFN)。

  • FFN的输出与原始输入X再次相加,形成第二跳残差连接。

这种双跳残差连接的设计有助于进一步稳定深层网络的训练,特别是在模型规模非常大时。通过在每个主要组件(如注意力机制和FFN)之后重新使用原始输入作为残差连接,这种配置减少了深层网络中梯度消失或爆炸的风险。

MEGALODON架构是针对现有Transformer架构在处理长序列数据时遇到的挑战而设计的。它基于MEGA架构,引入了一系列创新技术,以提高模型处理长序列的能力,并保持了高效的计算性能。

MEGALODON采用了复杂指数移动平均(CEMA),这是对MEGA中使用的多维阻尼指数移动平均(EMA)的扩展。CEMA通过在复数域中操作,增加了模型捕捉长序列依赖关系的能力。CEMA通过将EMA中的衰减和阻尼因子扩展到复数参数,使得模型能够在保持时间序列信息的同时,更好地捕捉序列中的长距离依赖。

MEGALODON引入了时间步归一化层(Timestep Normalization Layer),这是一种对现有归一化技术(如Layer Normalization和Group Normalization)的改进。时间步归一化层通过在序列的时间维度上计算累积的均值和方差,来减少序列内部的协变量偏移。这种归一化方法特别适用于自回归序列建模任务,因为它可以防止未来信息的泄露,同时提高了模型的稳定性。

MEGALODON采用了归一化注意力机制(Normalized Attention Mechanism),这是一种改进的注意力计算方法,通过使用归一化的共享表示来计算查询(Q)、键(K)和值(V)。这种方法简化了注意力分数的计算,并且通过引入非线性,提高了模型的表达能力。

MEGALODON还提出了预归一化和双跳残差配置(Pre-Norm with Two-hop Residual Configuration)。这种配置通过重新组织每个块中的残差连接,减少了深层网络训练中的不稳定性。在这种配置中,输入序列在经过归一化后直接用于残差连接,从而简化了模型的架构并提高了训练的稳定性。

MEGALODON架构通过将输入序列分块处理,实现了线性的计算和内存复杂度。这意味着无论序列长度如何,模型都能够以恒定的资源消耗来处理数据,这对于大规模语言模型的预训练和推理尤为重要。

MEGALODON还提出了一种新的分布式预训练算法,该算法通过在时间步/序列维度上进行并行化,进一步提高了模型的可扩展性。这种并行化策略允许模型在保持通信开销较低的同时,有效地利用多个计算设备,加速了模型的训练过程。

研究人员对MEGALODON架构进行了全面的评估,以验证其在长上下文序列建模上的性能。为此,他们构建了一个70亿参数的模型,并在2万亿个训练token上进行了预训练,这是一个前所未有的规模,旨在模拟真实世界中可能遇到的复杂和庞大的数据集。

在实验中,MEGALODON展现出了卓越的效率和可扩展性。与LLAMA2相比,MEGALODON在训练困惑度上取得了显著的降低,这是一个衡量模型对数据集预测准确性的关键指标。低困惑度意味着模型在预测下一个token时更加自信,这在长序列建模中尤为重要,因为即使是微小的误差也可能会随着序列的增长而累积。

在不同上下文长度下,LLAMA2-7B和MEGALODON-7B每个设备的平均每秒单词数(Words Per Second, WPS),用于衡量训练速度

除了训练效率外,MEGALODON在多个下游任务中也表现出色。研究人员在不同的学术基准测试中对MEGALODON进行了评估,包括常识推理、世界知识问答和阅读理解等任务。在这些测试中,MEGALODON不仅超越了LLAMA2,而且在某些任务上达到了与更大模型规模相当的性能水平。

在长上下文评估中,MEGALODON的能力得到了进一步的证明。研究人员构建了一个包含不同上下文长度的验证数据集,从几千到两百万token不等。MEGALODON在这个数据集上的表现显示,随着上下文长度的增加,模型的预测性能稳步提高,这表明MEGALODON能够有效地利用更长的上下文信息来做出更准确的预测。

表 2: 列出了MEGALODON-7B和其他7B规模的开源长上下文模型在Scrolls数据集上的长上下文开放书籍问答(QA)任务的结果

MEGALODON在中等规模的基准测试中也显示出了其鲁棒性。研究人员在图像分类和自回归语言建模等任务上对MEGALODON进行了测试。在ImageNet-1K数据集上的图像分类任务中,MEGALODON达到了比现有最先进模型更高的准确率。在PG-19数据集上的自回归语言建模任务中,MEGALODON同样展现出了更低的困惑度,这意味着它能够更准确地预测文本序列中的下一个单词。

在ImageNet-1K数据集上,不同模型的Top-1准确率,用于评估MEGALODON在图像分类任务上的表现

这些实验结果不仅证明了MEGALODON在长上下文序列建模上的有效性,也展示了其在多种任务和数据类型上的通用性和鲁棒性。MEGALODON的这些特性使其成为一个有潜力的架构,可以应用于各种实际应用中,包括但不限于自然语言处理、计算机视觉和其他需要处理长序列数据的领域。随着人工智能技术的不断进步,MEGALODON架构有望在未来的AI研究和应用中发挥重要作用。

论文链接:https://arxiv.org/abs/2404.08801

GitHub 地址:https://github.com/XuezheMax/megalodon

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/347027.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024/06/11--代码随想录算法1/17|理论基础、509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯

理论基础 动态规划:当前状态由前面的状态推导而来 贪心:局部选最优 动态规划5步曲 确定dp数组(dp table)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组 509. 斐波那契数 力扣链接 动态规划5步曲 确定d…

33.星号三角阵(二)

上海市计算机学会竞赛平台 | YACSYACS 是由上海市计算机学会于2019年发起的活动,旨在激发青少年对学习人工智能与算法设计的热情与兴趣,提升青少年科学素养,引导青少年投身创新发现和科研实践活动。https://www.iai.sh.cn/problem/742 题目描述 给定一个整数 𝑛,输出一个…

Linux用户,用户组,所有者权限分配,sftp用户权限分配

注意以下命令执行需要在root用户下执行 tenant命令切换至root命令 sudo -do root 删除用户信息 1.不删除用户主目录 userdel user_name 2.删除用户主目录 userdel -r user_name usermod命令修改用户账户权限 更改用户名 sudo usermod -l newusername oldusername 更…

QNX 7.0.0开发总结

1 QNX编译 1.1 基本概念 QNX可以直接使用Linux Makefile编译库和二进制,在Makefile文件中指定CCaarch64-unknown-nto-qnx7.0.0-g,或者CCx86_64-pc-nto-qnx7.0.0-g,保存退出后,运行source /qnx_sdk_path/qnxsdp-env.sh,…

React+TS前台项目实战(四)-- layout整体布局搭建

文章目录 前言一、Layout组件代码注释说明二、Content全局组件注释说明三、Header基础布局组件1. Header父级组件注释说明2. NavMenu导航子组件详细说明 四、效果展示总结 前言 本文主要讲Layout整体布局的构建以及全局内容盒子Content组件的使用。还包括了导航栏组件的基本封…

实现开源可商用的 ChatPDF RAG:密集向量检索(R)+上下文学习(AG)

实现 ChatPDF & RAG:密集向量检索(R)上下文学习(AG) RAG 是啥?实现 ChatPDF怎么优化 RAG? RAG 是啥? RAG 是检索增强生成的缩写,是一种结合了信息检索技术与语言生成…

python之点云数据读取与可视化

1、前言 将文件中点云数据进行读取进来,并进行数据处理,将处理后的点云数据进行可视化显示,是非常常见的操作。本博客介绍如何将文本形式的点云数据读取进来,并进行可视化展示。 2、点云可视化 点云可视化即将点云数据在三维空间…

亚马逊竞品分析之如何查找竞品

初选之后,要对产品进行竞品分析,查找竞品的方法: 1.Best Seller榜单查找 进入到该类目的BS榜单去找跟你选中的产品的竞品 看完BS榜单会找出一部分竞品 这个找相似也可以点击,是插件的一个以图搜图的功能,不过有的时候不太好使,某些同款产品可能搜不到。 Edge浏览器搭…

第7章 用户输入和 while 循环

第7章 用户输入和 while 循环 7.1 函数 input()的工作原理7.1.1 编写清晰的程序7.1.2 使用 int()来获取数值输入7.1.3 求模运算符 7.2 while 循环简介7.2.1 使用 while 循环7.2.2 让用户选择何时退出7.2.3 使用标志7.2.4 使用 break 退出循环7.2.5 在循环中使用 continue7.2.6 …

【Vue】Vuex概述

文章目录 一、使用场景二、优势三、注意 官网:https://vuex.vuejs.org/zh/ Vuex 是一个 Vue 的 状态管理工具,状态就是数据。 工具可以直接理解成插件 大白话:Vuex 是一个插件,可以帮我们管理 Vue 通用的数据 (多组件共享的数据)…

【Affine / Perspective Transformation】

文章目录 仿射变换介绍仿射变换 python 实现——cv2.warpAffine透视变换透视变换 python 实现——cv2.warpPerspective牛刀小试各类变换的区别与联系仿射变换和单应性矩阵透视变换和单应性矩阵 仿射变换介绍 仿射变换(Affine Transformation)&#xff0…

适配器模式和装饰器模式

文章目录 适配器模式1.引出适配器模式1.多功能转换插头2.基本介绍3.工作原理 2.类适配器1.基本介绍2.类图3.代码实现1.Voltage220V.java2.Voltage5V.java3.VoltageAdapter.java4.Phone.java5.Client.java6.结果 4.类适配器的注意事项 3.对象适配器1.基本介绍2.使用对象适配器改…

C51单片机 串口打印printf重定向

uart.c文件 #include "uart.h"void UartInit(void) //4800bps11.0592MHz {PCON | 0x80; //使能波特率倍速位SMODSCON 0x50; //8位数据,可变波特率。使能接收TMOD & 0x0F; //清除定时器1模式位TMOD | 0x20; //设定定时器1为8位自动重装方式TL1 0xF4; //设…

明天15点!如何打好重保预防针:迎战HVV经验分享

在当今数字化时代,网络攻击日益猖獗,各行各业面临的网络安全威胁不断升级。从钓鱼邮件到复杂的APT攻击,网络犯罪分子的手法层出不穷,给各行各业的信息安全带来了前所未有的挑战。 在这样的背景下,"HVV行动"应…

那些年我看过的技术书(持续更新,大佬的成长之路)

作为一个技术人啊,要学会多看书,发展自己。哦也!你可以不关注,就把文章点个收藏吧,万一以后想看书了呢? 网络安全 CTF篇 入门篇 《极限黑客攻防:CTF赛题揭秘》 Web篇 Reserve篇 《IDApro…

ON DUPLICATE KEY UPDATE 子句

ON DUPLICATE KEY UPDATE 是 MySQL 中的一个 SQL 语句中的子句,主要用于在执行 INSERT 操作时处理可能出现的重复键值冲突。当尝试插入的记录导致唯一索引或主键约束冲突时(即试图插入的记录的键值已经存在于表中),此子句会触发一…

virtual box安装invalid installation directory

问题原因 看官方文档Chapter 2. Installation Details 第2.1.2所示,安装目录需要满足两个条件: 一是:需要安装目录的所有父目录都要满足以下访问控制条件 Users S-1-5-32-545:(OI)(CI)(RX) Users S-1-5-32-545…

【Python列表解锁】:掌握序列精髓,驾驭动态数据集合

文章目录 🚀一、列表🌈二、常规操作💥增💥删💥改💥查 ⭐三、补充操作 🚀一、列表 列表是一个能够存储多个同一或不同元素的序列 列表:list ---- [] 列表属于序列类型(容器…

ES升级--05--快照生成 和备份

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 备份ES数据1.关闭集群自动均衡2.执行同步刷新3.停止集群节点的Elasticsearch服务4.修改Elasticsearch配置文件,开启快照功能,配置仓库目录为…

axure9设置组件自适应浏览器大小

问题:预览时不展示下方的滚动条 方法一:转化为动态面板 1.在页面上创建一个矩形 2.右键-转化为动态面板 3.双击进入动态面板设置 4.设置动态面板矩形的颜色 5.删除原来的矩形 6.关闭动态面板,点击预览 7.此时可以发现底部没有滚动条了 方法…