稀疏注意力 一、稀疏注意力的特点 DeepSpeed有很多不错的功能:Training Overview and Features - DeepSpeed 其中有一个功能是注意力稀疏,我们重点展开说明 需要注意的是:稀疏注意力的实现并不仅限于DeepSpeed。虽然DeepSpeed提供了一种高效的稀疏注意力实现,但其他深度学习框架和库也可能提供稀疏注意力的支持。 二、稀疏注意力的示意图 “稀疏注意力”是一种与传统注意力机制不同的技术,它只关注序列中的部分元素以提高处理速度。 蓝色的单元格在图中代表了被计算的元素,也就是被注意力机制关注的部分,体现了这种选择性关注。 稀疏性:稀疏性是稀疏注意力机制的另一个重要特点。 在处理稀疏注意力内核时,DeepSpeed采用了块稀疏计算。 在训练阶段,可以使用稀疏注意力来优化模型。稀疏注意力通过减少注意力机制中需要计算的元素数量来提高训练效率。
在推理期间,GLaM 对于每个标记预测仅激活 97B(**1.2T 的 8%**)参数的子网络。 GLaM 的架构。 此外,还从理论上证明了稀疏注意力机制保持了二次型全 Transformer 的表达能力和灵活性。 BigBird 模型中的稀疏注意力包括三个主要部分: 一组注意输入序列的所有部分的全局标记 所有标记注意一组相邻的局部标记 所有标记注意一组随机标记 BigBird 稀疏注意力模型由(注意输入序列的所有部分的 全局标记作为信息流的管道,证明了使用全局标记的稀疏注意力机制可以和全注意模型一样强大。 稀疏注意力模型的高效实现 大规模采用稀疏注意力的一个主要障碍,是稀疏操作在现代硬件中效率相当低。 稀疏注意力机制的高效实现示意图。
2025年2月,中国AI公司DeepSeek推出原生稀疏注意力机制(Native Sparse Attention, NSA),通过算法与硬件的协同创新,为长文本建模提供了高效解决方案。 原生可训练性 传统稀疏注意力机制多采用固定模式(如局部窗口或随机采样),而NSA通过动态路由机制,允许稀疏模式在训练过程中自适应调整。 这种设计使得模型能够根据任务需求自主优化注意力分布,避免人工预设模式的局限性。 专用硬件适配 针对稀疏计算的AI芯片(如支持可变稀疏度的Tensor Core)有望进一步提升NSA效率。DeepSeek已与多家芯片厂商合作,推动FP8混合精度与稀疏计算的深度融合。 总结 DeepSeek原生稀疏注意力机制(NSA)不仅是技术层面的突破,更是AI发展理念的革新。它证明:在算力霸权横行的时代,以“大道至简”的算法设计为核心,依然能够实现性能与效率的双重飞跃。
而sparsemax是2016年提出的softmax的改进版,他可以得到稀疏的结果,即让一些值为0,它和softmax具有相似的性能,但具有选择性、更紧凑、注意力集中。 如下如所示,sparsemax相比如softmax是更硬的,在过大过小的地方对应1和0,即可以得到稀疏解。 注意力机制如下,其中 K=V=\hat{C} ,但是 Q=f(\hat{C}W^Q+b^Q) ,其中f为relu函数。 ,e_t,e_s\} 就是稀疏自注意力机制的得到的输出。前t个是item的embedding,字后一个es是目标embedding。 针对第一个问题,作者采用学习target embedding的方式,而不是直接采用会话中最后一个点击的商品 针对第二个问题,作者采用α-entmax的激活函数,主要是通过该方法产生稀疏解,从而避免给一些不感兴趣的商品加权
深入浅出:什么是 DeepSeek 稀疏注意力 (DSA)?本文旨在揭开 DeepSeek 稀疏注意力(DeepSeek Sparse Attention, DSA)机制的神秘面纱。 而 DeepSeek 稀疏注意力(DSA)正是为了解决这个效率难题而设计的创新方案。2. 解决方案:DeepSeek 稀疏注意力 (DSA) 登场DeepSeek 稀疏注意力(DSA)是由 DeepSeek-AI 开发的一种创新的注意力机制,旨在解决长文本处理的效率问题。 根据原论文的描述,它使用了更简单的计算方式,并能以较低的精度(FP8)运行,因此即使它仍然需要概览所有先前的词元,速度也极快。它唯一的任务就是找出哪些词最重要,而不需要进行完整、繁重的注意力计算。 DeepSeek 稀疏注意力(DSA)是一项关键的架构创新,它通过智能的两步筛选机制,有效解决了大型语言模型在处理长文档时面临的效率和成本瓶颈。
本次阅读的程序为第八章的第2个程序direct_sparse.cpp,该程序实现了稀疏直接法进行位姿变换的计算。 首先来看一下程序的运行结果: ? <<endl; // plot the feature points cv::Mat img_show ( color.rows*2, color.cols, CV_8UC3 RAND_MAX; cv::circle ( img_show, cv::Point2d ( pixel_prev ( 0,0 ), pixel_prev ( 1,0 ) ), 8, cv::circle ( img_show, cv::Point2d ( pixel_now ( 0,0 ), pixel_now ( 1,0 ) +color.rows ), 8, RAND_MAX; cv::circle ( img_show, cv::Point2d ( pixel_prev ( 0,0 ), pixel_prev ( 1,0 ) ), 8,
稀疏注意力机制 4.1 稀疏注意力的基本思想 稀疏注意力机制通过限制注意力计算的范围,将标准注意力的 O(L2)O(L^2) 复杂度降低到 O(L⋅K)O(L \cdot K) 或 O(LlogL)O 核心思想: 局部注意力:只关注相邻的位置 固定模式注意力:使用预定义的稀疏模式 自适应稀疏注意力:根据内容动态确定关注的位置 结构化稀疏:利用特定结构(如块、带状等)进行稀疏化 4.2 代表性稀疏注意力模型 1 1] [0 0 1 1 1 1] [0 0 0 1 1 1] 4.3 稀疏注意力的数学推导 对于局部稀疏注意力,假设每个位置只关注 KK 个相邻位置,则计算复杂度为 O(L⋅K)O(L \cdot :保持稀疏矩阵结构 模式化剪枝:按照特定模式剪枝权重 动态稀疏训练:训练过程中逐步增加稀疏度 7.2.3 2025年剪枝最新技术 PagedAttention剪枝:保留注意力重要区域,剪枝次要区域 渐进式稀疏化 dim=-1), reduction='batchmean' ) * (temperature ** 2) return distillation_loss 8.
稀疏注意力机制可以有效缓解内存和吞吐量的挑战。 然而,现有稀疏注意力通常采用统一的稀疏注意力模式,即对不同的注意力头和输入长度应用相同的稀疏模式。 实验结果 精度 MoA 实验在多种模型(Vicuna-{7B, 13B) 和 Llama-3-{8B, 70B})和多种基准测试(长上下文检索,长上下文理解)上和之前的静态和动态稀疏注意力方法(StreamingLLM MoA 超越基线稀疏注意力方法,并在 50% 的平均注意力密度下达到了与原始稠密模型相当的性能。我们计算了稀疏模型相对于原始模型的性能下降。 如下图 (a) 所示,MoA 将其有效上下文长度扩展到注意力跨度的大约 3.9 倍。图 (b) 显示,在固定的 8k 输入长度下,MoA 只需要 25% 注意力就可以达到 90% 以上的检索准确性。 使用Vicuna-7B模型:(a)改变注意力跨度,比较有效上下文长度,(b)将输入长度设定为8k,比较不同注意力密度下的检索准确性。
deepseek-ai/DeepSeek-V3.2-Exp/blob/main/DeepSeek_V3_2.pdf这一次它最主要的是引入了一个新机制DeepSeek Sparse Attention(稀疏注意力 稀疏注意力的思路在很多新一代 Transformer 变体中都在被探索:即不是所有 token 间都做全连接的 self-attention,而是选一些关键 token 或局部连接,从而减少计算复杂度。 DeepSeek 在这个版本中尝试了一种“细粒度稀疏”的策略。具体就是用到了两个关键组件:Lightning Indexer和Top-k Token Selection。 接下来只在这些 top-k 上计算真正的注意力。经过两个组件之后,这样复杂度从 O(L^2)降低到O(LK),其中 k<<LDeepSeek-V3.2-Exp的优势是什么? (4)性能表现:尽管采用稀疏注意力,但整体能力与 V3.1-Terminus 基本持平,尤其在长上下文任务中展现出更优的性价比。
谷歌最近又推出了一个重磅的稀疏注意力模型:Big Bird。 之前各种刷榜的BERT和它的各种衍生版本RoBERTa等,都是构建在Transformer基础上。 谷歌团队解决这个问题的方法,是引入一种全新的稀疏注意力机制:Big Bird。 谷歌「大鸟」:稀疏注意力机制更省内存 Big Bird相对于传统的全注意力机制来说变的更稀疏,作为更长序列上的Transformer,Big Bird不仅能注意到更长的上下文信息,还将计算的二次依赖降低到了线性 实验:三种注意力机制结合效果最好 只采用随机注意力机制、局部注意力机制,或者两者融合起来,都没有三者合体的效果好。 有网友说,最近爆火的GPT-3也用了稀疏注意力机制,但是因为OpenAI的blocksparse太久没更新了,所以不知道二者有没有内在的相似性。
BiFormer中的查询感知稀疏注意力旨在让每个查询聚焦于top-k路由区域。然而,在计算注意力时,选定的键值对受到太多无关查询的影响,减弱了对更重要查询的注意力。 虽然在图像分类中使用稀疏自适应注意力(如DAT)取得了显著成果,但在针对语义分割任务进行微调时,由可变形点选择的键值对缺乏语义相关性。 BiFormer中的查询感知稀疏注意力旨在让每个查询聚焦于top-k路由区域。然而,在计算注意力时,选定的键值对受到太多无关查询的影响,减弱了对更重要查询的注意力。 为了提高查询的注意力效率,我们提出了可变形双级路由注意力(DBRA),这是一种用于视觉识别的注意力内注意力架构。在DBRA的过程中,第一个问题是如何定位可变形点。 因此,我们提出了一种注意力内注意力架构,该架构如上所述,向可变形点移动,作为查询的代理。
为了减轻这个问题,一系列工作尝试通过引入手工制作和内容无关的稀疏性到关注力中来解决这个问题,如限制关注操作在局部窗口、轴向条纹或扩张窗口内。本文方法:本文提出一种动态稀疏注意力的双层路由方法。 图片 其中图(a)是原始的注意力实现,其直接在全局范围内操作,导致高计算复杂性和大量内存占用;而对于图(b)-(d),这些方法通过引入具有不同手工模式的稀疏注意力来减轻复杂性,例如局部窗口、轴向条纹和扩张窗口等 ;而图(e)则是基于可变形注意力通过不规则网格来实现图像自适应稀疏性;作者认为以上这些方法大都是通过将 手工制作 和 与内容无关 的稀疏性引入到注意力机制来试图缓解这个问题。 因此,本文通过双层路由(bi-level routing)提出了一种新颖的动态稀疏注意力(dynamic sparse attention ),以实现更灵活的计算分配和内容感知,使其具备动态的查询感知稀疏性 | BiFormer: 基于动态稀疏注意力构建高效金字塔网络架构 - 知乎 2.基于Yolov8的BiFormer实现2.1C2f_BiLevelRoutingAttention、C3_BiLevelRoutingAttention
为了减轻这个问题,一系列工作尝试通过引入手工制作和内容无关的稀疏性到关注力中来解决这个问题,如限制关注操作在局部窗口、轴向条纹或扩张窗口内。本文方法:本文提出一种动态稀疏注意力的双层路由方法。 所提出的双层路由注意力具有简单而有效的实现方式,利用稀疏性来节省计算和内存,只涉及GPU友好的密集矩阵乘法。在此基础上构建了一种新的通用Vision Transformer,称为BiFormer。 图片 其中图(a)是原始的注意力实现,其直接在全局范围内操作,导致高计算复杂性和大量内存占用;而对于图(b)-(d),这些方法通过引入具有不同手工模式的稀疏注意力来减轻复杂性,例如局部窗口、轴向条纹和扩张窗口等 ;而图(e)则是基于可变形注意力通过不规则网格来实现图像自适应稀疏性;作者认为以上这些方法大都是通过将 手工制作 和 与内容无关 的稀疏性引入到注意力机制来试图缓解这个问题。 因此,本文通过双层路由(bi-level routing)提出了一种新颖的动态稀疏注意力(dynamic sparse attention ),以实现更灵活的计算分配和内容感知,使其具备动态的查询感知稀疏性
将i存到稀疏数组[0][0]的位置 将j存到稀疏数组[0][1]的位置 将count存到稀疏数组[0][2]的位置 将各个有效值的行列存到稀疏数组下一行,例如[1][0]=行,[1][1]=列,[1][ 首行解释 6代表二维数组中一共6行 7代表二维数组中一共7行 8代表二维数组中一共8个有效值 第二行及之后的解释 0和3表示在二维数组中的坐标,值为22。 1.3 代码实现 代码 package com.xn2001.sparsearray; /** * 稀疏数组 * * @author 乐心湖 * @date 2020/8/11 14:53 * 11 //0: 表示没有棋子 //1: 表示黑子 //1: 表示蓝子 int chessArr1[][] = new int[7][8] ; chessArr1[1][2] = 5; chessArr1[2][3] = 8; chessArr1[2][4] = 8; for
稀疏数组 当一个数组大部分为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组 稀疏数组的处理办法是: 1.记录数组一共有几行几列,有多少个不同的值 2.把具有不同值的元素的行列及值记录在一个小规模的数组 (稀疏数组 )中,从而缩小程序的规模 如下例:将一个二维数组转换为稀疏数组 稀疏数组第一行保存的值是二维数组有多少行和列,有多少个不同的值。 2.如果反过来原来二维数组的有效值只有8个,那么原来的二维数组还是 7*6=42,如果转换为稀疏数组则是9*3=27,可以看到有明显的压缩了。 这里就得到两个结论: 二维数组的有效值越少,转换为对应的稀疏数组就越高效 稀疏数组适用于空数据较多的情况下 在使用稀疏数组之前一定要具体问题具体分析,不能一股脑的用! 代码实现 还是以一个五子棋盘为例 为了对棋盘进行压缩,我们将原来的二维数组的方式转换为稀疏数组的方式 稀疏数组第一行存储的是原来二维数组的行和列以及有效的数据 第二行后存储的是每一个数据的位置和具体值
与传统的Softmax注意力机制相比,聚焦线性注意力机制具有更低的计算复杂度。它通过重新排列自注意力计算的顺序,将复杂度从 O(N^2 d) 降低到 O(Nd^2) 。 此外,聚焦线性注意力模块的设计旨在解决线性注意力模块中存在的低秩问题,并采用简单运算符实现近似计算,以最小计算开销实现高表达力。 spm=1001.2014.3001.5502 在视觉Transformer中应用聚焦线性注意力模块,可以扩大模型的感受野,使其能够更好地捕捉到长程依赖关系。 实验结果表明,通过在早期阶段引入聚焦线性注意力模块,可以在保持计算效率的同时提高模型的性能。 本文将FLatten Transformer的线性注意力机制引入YoloV8,重构YoloV8的模块。 YoloV8官方测试结果 YOLOv8l summary (fused): 268 layers, 43631280 parameters, 0 gradients, 165.0 GFLOPs
,2020.2 IDEA 激活码 一、稀疏数组的定义 ---- 稀疏(sparsearray)数组:可以看做是普通数组的压缩,但是这里说的普通数组是值无效数据量远大于有效数据量的数组。 当遇到此种情况时,可以使用稀疏数组。 ? 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。 二、应用实例 ---- 我们将下图所示的棋盘使用稀疏数组进行存盘退出操作: ? 【1】将上面类似的二位数组棋盘保存到稀疏数组中,并存放至外部备份文件 sparsearray.text 中:稀疏数组可以简单的看作为是压缩,在开发中也会使用到。 【3】将稀疏数组文件中的内容恢复至传统的二维数组棋盘; /** * 将稀疏数组文件中的内容恢复至传统的二维数组棋盘 */ public class SparseArrayClass { public
当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。 稀疏数组的处理方法是: 1)记录数组一共有几行几列,有多少个不同的值 2)把具体不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模。 ? 二维数组转稀疏数组 public class SpareseArray { public static void main(String[] args) { /** d\t",data); } System.out.println(); } /** * 将二维数组转稀疏数组 创建稀疏数组,行数=sum+1 ,多出来的1行是对稀疏数组中总行数、总列数以及非0个总个数的 sparseArr[0][0] = chessArr1.length; sparseArr
滑动窗口注意力执行流程步骤说明:1. 输入:文本序列 x1-xn(比如 8 个字的向量),设定窗口大小 W(比如 3);2. 遍历每个位置 i(从 1 到 8);3. 三种注意力的 “关注范围” 对比序列位置:1 2 3 4 5 6 7 8 9 10原始注意力:●●●●●●●●●●(全部关注)滑动窗口(W=3,i=5): ●●● (只关注4,5,6)稀疏注意力(W 稀疏注意力:关注 1,4,5,6,8,10(按你给出的结果)sparse_set = {1, 4, 5, 6, 8, 10}sparse = [pos in sparse_set for pos in 稀疏注意力:同样大致为线性关系 O(n) ,但斜率比滑动窗口稍高。 稀疏注意力:让大模型记得更全稀疏注意力解决了滑动窗口短视的问题:比如分析一本 10 万字的小说,滑动窗口只能看到局部情节,稀疏注意力能看到开头的人物设定、中间的关键转折、结尾的结局;现在的 “超长上下文大模型
最近,随着动态查询感知稀疏注意力机制的出现,查询由最具动态语义性的关键值对进行聚焦,这被称为双级路由注意力[56]。 方法包括稀疏连接模式[6]、低秩近似[42]和循环操作[10]。在视觉Transformer的上下文中,稀疏注意力变得流行起来,特别是在Swin Transformer[29]取得显著成功后。 在实现通过粗细粒度方法实现的查询自适应稀疏性时,我们提出了一种注意力中注意力架构,该架构结合了可变形注意力[47]和双级路由注意力[56]。 表8显示了Upernet框架在单尺度和多尺度IoU下的结果。 7.7 限制和未来工作 与具有简单静态模式的稀疏注意力相比,我们提出了一种新的注意力方法,该方法由两个组件组成。 在未来的工作中,我们计划研究高效的稀疏注意力机制,并增强具有参数容量意识的视觉Transformer。