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

颠覆传统 北大新型MoM架构挑战Transformer模型,显著提升计算效率

bea33d198d160038e5911285920289bc.jpeg挑战传统的Transformer模型设计

在深度学习和自然语言处理领域,Transformer模型已经成为一种标准的架构,广泛应用于各种任务中。传统的Transformer模型依赖于一个固定的、按深度排序的层次结构,每一层的输出都作为下一层的输入。这种设计虽然简单有效,但也存在参数冗余和计算效率低下的问题。

最近,一项新的研究提出了一种名为“Mixture-of-Modules”(MoM)的新架构,旨在打破这种固定层次的传统,通过动态组装不同的模块来计算每个token,从而提高模型的灵活性和计算效率。这种设计允许模型在不同层之间自由地“移动”计算,而不是严格遵循从浅层到深层的顺序。MoM通过引入两个路由器动态选择不同的注意力模块和前馈网络模块,组合成一个完整的计算图,实现了对传统Transformer的一种创新性改进。

这项研究不仅挑战了Transformer的传统设计,还展示了在保持相当性能的同时,如何显著减少计算资源的消耗。通过这种新的架构设计,MoM在多个基准测试中展示了其优越性,包括GLUE和XSUM,证明了其在处理深度和参数数量上的灵活性。

先看结论

1. 主要优势

MoM架构的主要优势包括:

  • 提供了一个统一的框架,将多种Transformer变体(如混合专家、提前退出和混合深度等)纳入其中,为未来的架构设计提供了新的思路。
  • 在前向计算中引入了前所未有的灵活性,使得“深度”和“参数数量”不再像传统方式那样紧密耦合,用户可以通过扩大模块池或增加深度来构建更强大的架构。
  • 通过合理配置模块和压缩模型深度,实现了与传统Transformer相当的性能,同时显著降低了计算资源的消耗。

2. 实验结果

通过在不同的参数规模上预训练MoM模型,并在GLUE和XSUM基准测试中进行评估,实验结果显示:

  • 在所有参数规模上,MoM模型一致地超越了传统的GPT-2模型。
  • MoM架构能够在保持性能的同时,显著减少计算资源的消耗,特别是在大规模模型上,资源节约更为显著。

论文标题: MIXTURE-OF-MODULES: REINVENTING TRANSFORMERS AS DYNAMIC ASSEMBLIES OF MODULES

机构: Peking University, Renmin University, Tsinghua University, Ant Group

论文链接: https://arxiv.org/pdf/2407.06677.pdf。

MoM架构概述

Mixture-of-Modules (MoM) 是一种新颖的架构,旨在打破传统的 Transformer 模型中深度有序的层次结构。MoM的核心思想是将神经网络定义为由传统 Transformer 派生的模块的动态组装。这些模块包括多头注意力(MHA)、前馈网络(FFN)和特殊的“SKIP”模块,每个模块都具有独特的参数化。

在 MoM 中,每个令牌的计算图是通过两个路由器动态选择注意力模块和前馈模块并在前向传递中组装这些模块来形成的。这种机制不仅提供了一个统一的框架,将各种 Transformer 变体纳入其中,还引入了一种灵活且可学习的方法来减少 Transformer 参数化中的冗余。

MoM的设计允许在不同的层之间自由地移动令牌的计算,这一点与传统的从浅层到深层的顺序不同。这种设计使得深度和参数数量不再像传统架构中那样紧密耦合,从而为构建更强大的架构提供了更大的灵活性。

3866a0babb4587078abf178dafb63555.jpeg

模块动态组装机制

在 MoM 中,模块的动态组装是通过一个迭代过程实现的,每个令牌在每一步都可能被分配到不同的模块。这一过程由两个专门的路由器控制,分别用于选择 MHA 和 FFN 模块。每个路由器输出一个分布,指示每个模块被选中的权重。

在每一步中,根据路由器的输出,选择权重最大的 K 个模块进行组装。这些模块通过一个组装函数联合起来,形成该步骤的输出。这个过程不仅仅是简单的层叠,而是一个根据令牌的需求动态调整的过程,使得每个令牌都可以在最适合它的模块中被处理。

此外,MoM 采用了一种两阶段训练方法来优化这一动态组装过程。首先,在大规模语料库上预训练一个标准的 Transformer,然后将其分解为模块,并用这些模块初始化 MoM,同时随机初始化路由器。在第二阶段,继续在相同的数据和目标上训练模块和路由器,以此来加速模型的收敛并提高参数的利用率。

通过这种动态组装机制,MoM 能够在保持与传统 Transformer 相当的性能的同时,显著减少前向计算中的 FLOPs 和内存使用。

266b8c72126cae0ede456c0874a0c317.jpeg

训练策略与实验设置

1. 实验模型与配置

实验中,我们采用了三种不同规模的MoM模型:MoM-small、MoM-medium和MoM-large,分别包含122M、346M和774M参数。在训练过程中,我们使用了官方的GPT-2模型作为MoM的初始化基础,这些模型从HuggingFace平台下载。

2. 训练数据与预处理

我们使用OpenWebText作为预训练数据集,该数据集经过标记后包含约9亿个token。从中随机抽取400万token作为验证集。所有模型的输入序列长度设置为1024。我们设置学习率为1e-3,并在两个训练阶段中均采用0.1的预热比例,不使用dropout。所有模型均在8×A100 GPU上训练,总批量大小为8×64。

3. 训练策略

我们采用了两阶段训练策略。在第一阶段,我们在大规模语料库上预训练一个标准的Transformer模型,以此来初始化MoM的模块集合。第二阶段,我们从头开始初始化路由器,继续使用相同的数据和目标训练模块和路由器。这种方法不仅增强了模块功能的专业化,还加速了模型的收敛。

实验结果与分析

1. 主要结果

实验结果表明,MoM在保持参数数量不变的情况下,通过更深的计算图(H)在GLUE和XSUM基准测试中一致地超越了所有基线模型。MoM的增强性能验证了我们的初衷:传统的深度有序层组织是次优的,可以通过动态模块组织和改进参数利用率来实现改进。

MoM的不同实例在资源成本上也显示出显著差异。例如,MoME-medium和MoME-large在资源成本上的减少比MoME-small更为显著。这些观察结果进一步强化了我们之前的动机:Transformer的过度参数化在模型规模增大时变得更加明显。

2. 训练策略的影响

我们研究了两阶段训练策略对模型性能的影响。结果显示,与从头开始训练MoM相比,使用预训练的Transformer模型初始化模块权重的两阶段策略具有更好的性能。这一发现强调了使用良好训练的Transformer模型为MoM初始化模块权重的重要性。

此外,我们还观察到,当减少MHA模块的数量时,损失的显著增加并不会立即出现,这表明Transformer中的MHA模块存在相当的冗余。相比之下,当逐渐减少FFN模块的数量时,每次移除一个FFN都会导致明显的损失增加,表明FFN模块的参数化较少冗余。

7d5281dc7ef0001fd08f77cecab2c58f.jpeg

ebf93f7fddea58b9aba20b28e9f96780.jpeg

相关文章:

颠覆传统 北大新型MoM架构挑战Transformer模型,显著提升计算效率

挑战传统的Transformer模型设计 在深度学习和自然语言处理领域,Transformer模型已经成为一种标准的架构,广泛应用于各种任务中。传统的Transformer模型依赖于一个固定的、按深度排序的层次结构,每一层的输出都作为下一层的输入。这种设计虽然…...

接口优化笔记

索引 添加索引 where条件的关键自动或者order by后面的排序字段可以添加索引加速查询 索引只能通过删除新增进行修改,无法直接修改。 # 查看表的索引 show index from table_name; show create table table_name; # 添加索引 alter table table_name add index …...

pandas 科学计数法显示

我注意到pandas中有一个问题, 默认情况下,就是其中的数据的小数位不能超过6位,比如0.0000007就会被显示为0,这个结果如下 全部以科学技术显示 import pandas as pd import numpy as np# 设置显示格式为科学计数法 pd.options.d…...

PHP正则替换字符串中的图片地址

在PHP中&#xff0c;可以使用preg_replace()函数来实现正则表达式的替换功能。以下是一个简单的例子&#xff0c;演示如何替换字符串中的图片地址。 double $str 图片地址1&#xff1a;<img src"http://example.com/image1.jpg"> 图片地址2&#xff1a;<i…...

基于多商户AI智能名片商城小程序的粉丝忠诚度提升策略:深度融合足额法则与多维度激励体系

摘要&#xff1a;在数字化浪潮的推动下&#xff0c;多商户AI智能名片商城小程序以其独特的商业模式和技术优势&#xff0c;正逐步成为连接商家与消费者&#xff0c;特别是粉丝群体的重要平台。本文深入探讨了如何通过深度融合足额法则与多维度激励体系&#xff0c;有效提升多商…...

BigDecimal高精度运算

1. BigDecimal是什么类型&#xff0c;为什么可以转为double BigDecimal 是 Java 中用于表示任意精度的十进制数的类。它主要用于金融和商业计算&#xff0c;能够提供比 double 类型更高精度的运算&#xff0c;特别是在处理货币等需要精确计算的场景中。 1.1 BigDecimal 的基…...

C/C++实现蓝屏2.0

&#x1f680;欢迎互三&#x1f449;&#xff1a;程序猿方梓燚 &#x1f48e;&#x1f48e; &#x1f680;关注博主&#xff0c;后期持续更新系列文章 &#x1f680;如果有错误感谢请大家批评指出&#xff0c;及时修改 &#x1f680;感谢大家点赞&#x1f44d;收藏⭐评论✍ 前…...

Unity音频管理器插件AudioToolKit

Unity音频管理器插件AudioToolKit 介绍AudioToolKit介绍具体用法总结 介绍 最近在自己写音频管理器的时候在网上发现了一款比较好用并且功能很全的一个音频管理插件&#xff0c;叫做AudioToolKit的插件。 如果需要的可以直接从我资源中找AudioToolKit。 AudioToolKit介绍 A…...

搜维尔科技:驾驶模拟器背后的技术: Varjo的虚拟/混合现实 (VR/XR)提供独特的优势,最终加快汽车开发创新的步伐

专业驾驶模拟器广泛应用于车辆开发&#xff0c;帮助汽车行业在开发过程的早期做出更好的设计决策。总体目标是为测试驾驶员提供最真实的驾驶体验&#xff0c;包括动态动作和声音&#xff0c;并测试控制算法或辅助系统等功能。环境越真实&#xff0c;驾驶员的体验就越接近最终车…...

OSL 冠名赞助Web3峰会 “FORESIGHT2024”圆满收官

OSL 望为香港数字资产市场发展建设添砖加瓦 &#xff08;香港&#xff0c;2024 年 8 月 13 日&#xff09;- 8 月 11 日至 12 日&#xff0c; 由 香港唯一专注数字资产的上市公司 OSL 集团&#xff08;863.HK&#xff09;冠名赞助&#xff0c;Foresight News、 Foresight Ventu…...

LeetCode 3148.矩阵中的最大得分:每个元素与其左或上元素之差的最大值(原地修改O(1)空间)

【LetMeFly】3148.矩阵中的最大得分&#xff1a;每个元素与其左或上元素之差的最大值&#xff08;原地修改O(1)空间&#xff09; 力扣题目链接&#xff1a;https://leetcode.cn/problems/maximum-difference-score-in-a-grid/ 给你一个由 正整数 组成、大小为 m x n 的矩阵 g…...

主流的开源大型语言模型

本期我们来聊聊目前主流的开源大型语言模型。这些模型就像是AI界的超级英雄&#xff0c;各具特色&#xff0c;为我们的研究和开发提供了强大的力量。&#x1f680; GPT-Neo&#xff1a;这是EleutherAI的杰作&#xff0c;它模仿了OpenAI的GPT-3。GPT-Neo虽然规模小一些&#xf…...

【自动驾驶】话题通信

目录 构建发布者构建订阅者编写lanch文件自动启动节点测试运行ROS的目录结构 切换到工作空间的src目录下&#xff1a; 构建发布者 catkin_create_pkg publisher std_msgs rospy roscpp编写发布者程序&#xff1a; // 1.包含头文件 #include "ros/ros.h" #include &…...

【Linux】中的软件安装:深入探索RPM、SRPM与YUM

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《Linux &#xff1a;从菜鸟到飞鸟的逆袭》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、Linux的起源与发展 2、RPM、SRPM与YUM的简要介…...

uniapp自定义请求头信息header

添加请求头&#xff1a;uniapp自定义请求头信息header&#xff0c;如下&#xff1a;添加tenant-id参数 代码...

SpringBoot整合Liquibase

1、是什么&#xff1f; Liquibase官网 Liquibase是一个开源的数据库管理工具&#xff0c;可以帮助开发人员管理和跟踪数据库变更。它可以与各种关系型数据库和NoSQL数据库一起使用&#xff0c;并提供多种数据库任务自动化功能&#xff0c;例如数据库迁移、版本控制和监控。Li…...

虚幻5|给武器添加碰撞检测与伤害

本章内容衔接上两章&#xff0c;需要完成上两章才能用本章内容 虚幻5|角色武器装备的数据库学习&#xff08;不只是用来装备武器&#xff0c;甚至是角色切换也很可能用到&#xff09;-CSDN博客虚幻5|普通攻击&#xff0c;使用接口更方便-CSDN博客 如有疑问&#xff0c;可访问…...

RESTful API设计指南:构建高效、可扩展的Web服务

目录 引言 一.RESTful API概述 二.设计原则 2.1. 资源导向 2.2. 使用标准的HTTP方法 2.3. 无状态通信 2.4. 可缓存响应 2.5. 分层系统 2.6. 按需加载代码&#xff08;可选&#xff09; 2.7. HATEOAS 三.最佳实践 3.1. 明确资源和子资源 3.2. 使用合适的HTTP状态码 …...

黑马头条vue2.0项目实战(九)——编辑用户资料

目录 1. 创建组件并配置路由 2. 页面布局 3. 展示用户信息 4. 修改昵称 5. 修改性别 6. 修改生日 7. 修改头像 7.1 图片上传预览 7.2 使用纯客户端的方式处理用户头像上传预览 7.3 头像裁切 7.4 纯客户端的图片裁切上传流程 7.5 Cropper.js 图片裁剪器的基本使用 …...

43.【C语言】指针(重难点)(F)

目录 15.二级指针 *定义 *演示 16.三级以及多级指针 *三级指针的定义 *多级指针的定义 17.指针数组 *定义 *代码 18.指针数组模拟二维数组 往期推荐 15.二级指针 *定义 之前讲的指针全是一级指针 int a 1; int *pa &a;//一级指针 如果写成 int a 1; int *pa &a…...

从Netfilter到IPVS:深入解析Linux内核负载均衡的实现与配置

1. Linux内核网络框架与负载均衡基础 当你打开一个网页或使用手机APP时&#xff0c;后台可能有成百上千台服务器在协同工作。这些服务器如何高效分配流量&#xff1f;这就是负载均衡技术的用武之地。在Linux生态中&#xff0c;从Netfilter到IPVS的技术演进&#xff0c;为我们提…...

动态数据源配置加密终极指南:如何选择最安全的填充模式保护敏感数据 [特殊字符]️

动态数据源配置加密终极指南&#xff1a;如何选择最安全的填充模式保护敏感数据 &#x1f6e1;️ 【免费下载链接】dynamic-datasource dynamic datasource for springboot 多数据源 动态数据源 主从分离 读写分离 分布式事务 项目地址: https://gitcode.com/gh_mirrors/dy/…...

Node.js后端集成GTE-Base-ZH:构建语义化API服务实战

Node.js后端集成GTE-Base-ZH&#xff1a;构建语义化API服务实战 最近在做一个智能文档检索项目&#xff0c;需要处理大量中文文本的语义相似度计算。一开始尝试用传统的TF-IDF&#xff0c;效果总是不尽如人意&#xff0c;直到接触到了GTE-Base-ZH这个专门针对中文优化的文本嵌…...

Rockchip Android 12编译踩坑记:手把手教你修改BoardConfig.mk生成userdata.img

Rockchip Android 12编译实战&#xff1a;从BoardConfig.mk修改到userdata.img生成的避坑指南 第一次在Rockchip平台上编译Android 12系统时&#xff0c;我遇到了一个令人抓狂的问题——编译过程看似顺利&#xff0c;但生成的固件烧写到设备后&#xff0c;系统始终无法正常启动…...

OpenClaw性能调优:ollama-QwQ-32B模型批处理与缓存机制实战

OpenClaw性能调优&#xff1a;ollama-QwQ-32B模型批处理与缓存机制实战 1. 为什么需要性能调优&#xff1f; 上周我遇到了一个棘手的问题&#xff1a;需要让OpenClaw自动处理100份PDF文档的摘要生成任务。本以为只是简单的批量调用模型&#xff0c;结果发现处理速度慢得惊人—…...

【开题答辩全过程】以 基于JSP框架的医疗管理系统为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…...

别再写重复代码了!手把手教你用StringRedisTemplate搞定Shop-Type缓存(附完整代码)

告别重复劳动&#xff1a;基于StringRedisTemplate的Shop-Type缓存通用方案设计 在电商系统开发中&#xff0c;店铺分类(Shop-Type)这类基础数据的缓存处理几乎每个项目都会遇到。许多开发者习惯在每个Service中重复编写相似的缓存逻辑——序列化、反序列化、缓存判空、数据库回…...

Windows个性化视觉增强:TranslucentTB打造专属任务栏体验

Windows个性化视觉增强&#xff1a;TranslucentTB打造专属任务栏体验 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 您是否曾感到Window…...

GitHub自动化神器:用Cursor+Firecrawl实现项目自更新(避坑指南)

GitHub自动化神器&#xff1a;用CursorFirecrawl实现项目自更新&#xff08;避坑指南&#xff09; 在开源项目的日常维护中&#xff0c;重复性的更新工作往往消耗开发者大量精力。有没有一种方法&#xff0c;能让项目像拥有自我意识般自动完成内容搜集、代码生成甚至PR提交&am…...

如何突破原神60帧限制?genshin-fps-unlock带来的视觉体验升级

如何突破原神60帧限制&#xff1f;genshin-fps-unlock带来的视觉体验升级 【免费下载链接】genshin-fps-unlock unlocks the 60 fps cap 项目地址: https://gitcode.com/gh_mirrors/ge/genshin-fps-unlock 3大核心收益&#xff1a;更高帧率、更流畅操作、零风险体验 问…...