Attention又升级!Moonshot | 提出MoE注意力架构:MoBA,提升LLM长文本推理效率

源自: AINLPer(每日干货分享!!)
编辑: ShuYini
校稿: ShuYini
时间: 2025-3-13

更多:>>>>大模型/AIGC、学术前沿的知识分享!

引言

对于大模型来说,有效扩展上下文长度对于实现通用人工智能至关重要。我们知道传统注意力机制的计算复杂度呈二次方增长,这极大限制了模型的扩展性。而现有方法要么引入任务特定的强偏差结构,要么是将注意力机制近似修改为线性。而本文作者将MoE的思想应用到了Attention机制上,提出了MoBA方法,该方法能够无缝切换全注意力和稀疏注意力,不仅提升了LLM推理效率,且保证了模型性能。

论文:https://arxiv.org/pdf/2502.13189

代码:https://github.com/MoonshotAI/MoBA

背景介绍

人工通用智能(AGI)的追求推动了大型语言模型(LLMs)发展到前所未有的规模,有望处理模仿人类认知的复杂任务。实现AGI的一个关键能力是处理、理解和生成长序列的能力,这对于历史数据分析、复杂逻辑推理以及规划决策等相关应用来说至关重要。扩展上下文长度不仅体现在长文本提示词输入方面,也体现在对长思维链的输出方面。

然而,要扩展大模型的上下文长度并非易事。就于传统注意力机制来说,它的计算复杂度会随着序列长度的增加而呈二次增长,如果要保证原有Attention机制效果同时要保证其性能一直是学术研究的重点。有研究人员发现注意力分数存在内在稀疏性,这种稀疏性既来自数学上的计算方式,也与生物学上的脑区记忆存储机制相似。(这里其实和LoRA的原理类似)

针对该问题,目前主流的解决方法主要有三种:一是通过预定义的结构约束来利用注意力分数的稀疏性,如sink-based注意力或滑动窗口注意力,这种结构化的方法比较适用于特定任务,会影响模型的泛化能力;二是采用动态稀疏注意力机制方法,在推理时选择部分重要的信息,会大大减少推理计算量,但不会减轻训练成本;三是线性注意力模型,用线性近似替代传统的注意力计算方式,这会极大的减少计算量,但是目前学术领域还没有明确的成果来验证其复杂推理的有效性。

那么如何设计一种既保留原始Transformer架构优势,又不依赖预定义结构的适应性强的注意力机制?理想的解决方案应能在完全注意力和稀疏注意力模式之间无缝切换,最大限度地兼容现有预训练模型,同时实现高效推理和训练而不影响性能。

受MoE架构的启发,本文作者提出了MoBA架构,将MoE应用于Transformer模型的注意力机制,MoBA在长上下文任务中表现出色,且能够无缝切换全注意力和稀疏注意力,提升效率的同时不损害性能。

MoBA架构介绍

MoBA(Mixture of Block Attention)是一种新型架构,借鉴了 Mixture of Experts (MoE) 的思想,并将其应用于 Transformer 的注意力机制。MoBA 通过动态选择历史相关的 Key-Value(KV)块,实现高效长序列处理,同时兼顾计算效率和模型性能。架构图如下所示:

1、标准的Attention

在介绍MoBA之前,我们先看一下标准Attention,其中单个请求 token q 就是通过以下公式计算注意力:

A t t n ( q , K , V ) = S o f t m a x ( q K T ) V Attn(q, K, V) = Softmax(qK^T) V Attn(q,K,V)=Softmax(qKT)V

其中:

  • q:查询 token
  • K, V:键值对矩阵
  • Softmax(qK^T):计算注意力权重

这种方法要求 q 关注所有 N 个 KV token,计算复杂度为 O ( N 2 ) O(N^2) O(N2),对长序列不够高效。

2、MoBA动态选择块

而MoBA则是通过 动态块选择 来优化注意力计算,每个请求 token 只关注部分 K, V 块:
M o B A ( q , K , V ) = S o f t m a x ( q K [ I ] T ) V [ I ] MoBA(q, K, V) = Softmax(qK[I]^T) V[I] MoBA(q,K,V)=Softmax(qK[I]T)V[I]

其中,I ⊆ [N]为所选的 KV 块索引集合

3、块划分与选择

你可能好奇,块的划分和选择是如何实现的呢?

1)划分 KV 块:将上下文 N 划分为 n 个块,每个块大小 B = N/n,块 i 的索引范围为,这里可以将序列划分为更小的块(即减小 B),从而让请求 token 在更精细的范围内选择相关信息,从而减少冗余计算,提高注意力的有效性。
I i = [ ( i − 1 ) × B + 1 , i × B ] I_i = [(i-1) \times B + 1, i \times B] Ii=[(i1)×B+1,i×B]
2)基于 MoE 的KV块选择

  • 计算请求 q 与每个块的相关性得分 s i s_i si,这里向量计算选择的是内积的形式:
    s i = ⟨ q , mean pool ( K [ I i ] ) ⟩ s_i = \langle q, \text{mean pool}(K[I_i]) \rangle si=q,mean pool(K[Ii])⟩

  • 选取得分最高的 k 个块:
    g i = { 1 , s i ∈ Topk ( { s j ∣ j ∈ [ n ] } , k ) 0 , otherwise g_i = \begin{cases} 1, & s_i \in \text{Topk}(\{s_j | j \in [n] \},k) \\ 0, & \text{otherwise} \end{cases} gi={1,0,siTopk({sjj[n]},k)otherwise

3)确保因果性

  • 仅允许 q 关注 当前块及之前的块,避免信息泄漏:
    s i = − ∞ , g i = 0 , if  p o s ( q ) < i × B s_i = -\infty, \quad g_i = 0, \quad \text{if } pos(q) < i \times B si=,gi=0,if pos(q)<i×B

  • 强制 q 关注所在的当前块,并对其应用因果掩码。

4、算法实现

从这里MoBA可以看作是 滑动窗口注意力(SWA)和 Attention Sink 机制的一种推广。其中在 SWA 机制中,每个查询 token 仅关注其附近的窗口,而在 Attention Sink 机制中,查询 token 主要关注初始 token 和最近的 token 组合。MoBA 通过灵活的门控机制,使模型能够动态地选择关键块,从而在不同任务场景下灵活近似 SWA 或 Attention Sink。此外,MoBA 具备更强的表达能力,不仅可以模拟已有的静态稀疏注意力方法,还能根据任务需求灵活调整关注的范围,实现更高效的信息提取和计算优化。

实验结果

架构介绍完了,让我们来看一下实验结果咋样。

如下图所示,左图在 1M 序列长度计算效率提升评估中,随着序列长度从 8K 增加到 1M,MoBA 的计算时间扩展显著优于全注意力(使用Flash Attention实现);右图在固定稀疏比率的计算时间扩展对比中,序列长度从 8K 增加到 10M,保持 95.31% 的稀疏率(固定 64 个 MoBA 块,块大小可变,top-k=3),MoBA 的效率优势进一步凸显

为了评估MoBA的有效性,通过比较使用全注意力或MoBA训练的语言模型的验证损失,进行了缩放定律实验。左图对比全注意力和MoBA训练的语言模型,发现二者缩放趋势相似,MoBA在高达75%稀疏度下性能与全注意力相当。右图在五次实验中,MoBA在最后一块的语言模型损失上略高于全注意力,但损失差距正在逐渐缩小。这一实验表明MoBA具有长上下文的可扩展性。

在多个长上下文benchmark上,比较了MoBA与全注意力模型的性能表现。

在这里插入图片描述

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

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

相关文章

人工智能与我何干

思考一下&#xff0c; 如果打破这样的磁场&#xff0c;当我焦虑的时候&#xff0c;总是想要看一些负面的内容&#xff0c;这是错误的&#xff0c;不应该这样做&#xff0c;要坚定自己的信念&#xff0c;我为什么和人工智能去争抢呢&#xff0c;不能和人工智能争抢&#xff0c;这…

Netty启动源码NioEventLoop剖析accept剖析read剖析write剖析

学习链接 NIO&Netty - 专栏 Netty核心技术十–Netty 核心源码剖析Netty核心技术九–TCP 粘包和拆包及解决方案Netty核心技术七–Google ProtobufNetty核心技术六–Netty核心模块组件Netty核心技术五–Netty高性能架构设计 聊聊Netty那些事儿 - 专栏 一文搞懂Netty发送数…

智能三防手持终端破解传统仓储效率困局

在数字化浪潮的推动下&#xff0c;传统仓储管理模式正面临效率低、成本高、错误频发等瓶颈。如何实现精准、高效、智能化的仓储管理&#xff0c;上海岳冉三防智能手持终端机以RFID技术为核心&#xff0c;结合工业级三防&#xff08;防水、防摔、防尘&#xff09;设计&#xff0…

13. Pandas :使用 to_excel 方法写入 Excel文件

一 to_excel 方法的相关参数 用它来指定要将 DataFrame 写入哪些工作表的哪些单元格&#xff0c;以及是否需要包含列标题和 DataFrame 索引。如何处理特殊值&#xff08;如 np.nan 和 np.inf&#xff09;。 1.指定工作表和单元格 sheet_name&#xff1a;指定将 DataFrame 写入的…

星越L_发动机舱开启及油液加注讲解

目录 1.拉手 2打开前机盖 3.冷却液加注口 4.玻璃水加注口 5.机油加注口 6.刹车油加注口 7.电瓶 1.拉手 中控台左下方有个拉手,拉动两次前机盖解锁。 2打开前机盖 向上抬打开前机盖。 3.冷却液加注口

基于Flink SQL的实时指标多维分析模型

数据流程介绍 1.创建源表kafka接入消息队列数据&#xff0c;定义字段映射规则&#xff1b; 2.创建目标表es_sink配置Elasticsearch输出&#xff1b; 3.通过多级视图&#xff08;tmp→tmp_dedup→tmp1/tmp2→tmp3→tmp_groupby&#xff09;实现数据清洗、去重、状态计算&#x…

专题|Python贝叶斯金融数据应用实例合集:随机波动率SV模型、逻辑回归、参数更新、绩效比较BEST分析亚马逊股票、普尔指数...

原文链接&#xff1a;https://tecdat.cn/?p41020 本专题合集系统梳理了贝叶斯方法在金融数据分析与分类建模中的前沿应用。合集聚焦于PyMC3概率编程框架&#xff0c;深度探讨了共轭先验参数更新、贝叶斯逻辑回归、贝叶斯夏普比率等核心算法在实际场景中的落地实践&#xff08;…

qwen2.5-vl使用vllm部署gradio页面调用

想在服务器上用vllm部署qwen2.5-vl, 然后使用gradio页面在本地调试&#xff0c;官方代码给了两条命令&#xff0c;列出的request body体结构&#xff0c; 不过要与gradio连用&#xff0c; 还需要重新组织代码。 官方服务代码如下&#xff1a; vllm serve Qwen/Qwen2.5-VL-7B-I…

论文笔记 - ULTRA-SPARSE MEMORY NETWORK

1、目前Transformer模型现状 dense模型相同激活参数下&#xff0c;性能远低于MOE模型&#xff0c;因此大家倾向于训练MOE模型虽然同激活参数下&#xff0c;MOE性能比dense好&#xff0c;但MOE模型内存访问高&#xff0c;因此推理速度相比dense要慢不少。比如top2的moe&#xf…

人工智能基础知识笔记四:聚类分析

1、什么是聚类分析&#xff1f; 聚类分析是一种将数据分组的技术&#xff0c;目的是让同一组内的数据点彼此相似&#xff0c;而不同组之间的数据点差异较大。你可以把它想象成整理一堆杂乱无章的物品&#xff0c;把相似的物品放在一起&#xff0c;比如把书放在一个书架&#x…

DeepSeek结合Mermaid绘图(流程图、时序图、类图、状态图、甘特图、饼图)转载

思维速览&#xff1a; 本文将详细介绍如何利用DeepSeek结合Mermaid语法绘制各类专业图表&#xff0c;帮助你提高工作效率和文档质量。 ▍DeepSeek入门使用请看&#xff1a;deepseek保姆级入门教程&#xff08;网页端使用 本地客户端部署 使用技巧&#xff09; DeepSeek官网…

麒麟v10 ARM64架构系统升级mysql数据库从mysql-5.7.27到mysql-8.4.4图文教程

1、背景与问题说明 因mysql-5.2.27版本存在安全漏洞问题&#xff0c;为保障系统安全&#xff0c;需将处于生产环境的麒麟v10 ARM64架构系统服务器上当前部署的mysql-5.7.27版本升级到mysql-8.4.4&#xff0c;以规避潜在风险&#xff0c;提升系统整体的安全性和稳定性。 1.1 本…

关于我和快速幂的事()

我之前只会这样的(dfs&#xff09;&#xff1a; 不懂下面这种写法的具体逻辑&#xff1a; 看完下面的推理&#xff0c;再转转我聪明的小老戴&#xff1a; 法一中&#xff1a;把2^11看成(2^5)^2 法二中&#xff1a;把2^11看成(2^2)^5

CSS3-流星雨

1. 绘制标签 <div class"container"><span></span> </div>2. 设置div背景 在百度上搜索一幅星空的图片 <style>* {/* 初始化 */margin: 0;padding: 0;}body {/* 高度100% */height: 100vh;/* 溢出隐藏 */overflow: hidden;}.contai…

P3390 【模板】矩阵快速幂

把 f&#xff08;ll k&#xff09; 写成 f&#xff08;int k&#xff09; 结果又是tle又是wa的。找了半天错误。 &#xff08;为了节省一点时间&#xff0c;因为函数不能return数组&#xff0c;还把数组改写到结构体里&#xff09; 我在想考试怎么办&#xff0c;考试不能看过…

STM32F407 cubeIDE Bootloader APP 如何写

一、bootloader 代码如下&#xff1a; #define FLASH_JUMP_ADDR (0x0800c000) /* USER CODE END PD *//* Private macro -------------------------------------------------------------*/ /* USER CODE BEGIN PM *//* USER CODE END PM *//* Private variables ----------…

[Space Shooter_1] Environment | CMake | SDL

环境&#xff1a; CCMakeSDLVS code图形化界面参考&#xff1a;itch.io csp vscode 控制面板 C代码生成流程 查找路径&#xff0c;来进行 cmake 链接 跨平台 cmake 一个库 如果已经有 cmake 来实现跨平台&#xff0c;链接 也可以不用这么麻烦了 set(CMAKE_RUNTIME_OUTPUT_DI…

PyTorch 入门学习

目录 PyTorch 定义 核心作用 应用场景 Pytorch 基本语法 1. 张量的创建 2. 张量的类型转换 3. 张量数值计算 4. 张量运算函数 5. 张量索引操作 6. 张量形状操作 7. 张量拼接操作 8. 自动微分模块 9. 案例-线性回归案例 PyTorch 定义 PyTorch 是一个基于 Python 深…

Shader中着色器的编译目标级别

1. # pragma target x.0 2. # pragma require xxx 支持的“#pragma target”名称 以下是支持的着色器模型列表&#xff0c;其中包含大致增加的功能集&#xff08;在某些情况下对于平台/GPU 的要求更高&#xff09;&#xff1a; #pragma target 2.0 适用于 Unity 支持的所有平…

【SpringBoot】实现登录功能

在上一篇博客中&#xff0c;我们讲解了注册页面的实现。在此基础上会跳转到登录页面&#xff0c;今天给大家带来的是使用 SpringBoot&#xff0c;MyBatis&#xff0c;Html&#xff0c;CSS&#xff0c;JavaScript&#xff0c;前后端交互实现一个登录功能。 目录 一、效果 二、…