Kimi/DeepSeek最新论文MoBA与NSA阅读

news/2025/3/3 21:37:45/文章来源:https://www.cnblogs.com/Big-Yellow/p/18746230

From:https://www.big-yellow-j.top/posts/2025/02/21/Kimi-DS-Paper.html

DeepSeek最新论文:Native Sparse Attention: Hardware-Aligned and Natively Trainable Sparse Attention以及 Kimi最新论文MOBA: MIXTURE OF BLOCK ATTENTION FOR LONG-CONTEXT LLMS这几篇文章都是针对长上下文的压缩方法,长上下文带来的平方级别的运算或存储复杂度给推理优化带来非常大的影响,因此是当前大模型推理优化中非常重要的一项研究内容。解决长上下文问题,主要分为稀疏化之后的 Token Dropping、KVCache 的量化压缩、Prompt Compression 提示词压缩、还有结构性稀疏压缩等几大类。里面都提到了 稀疏这一个内容,什么是 稀疏注意力(Sparse Attention)

1、稀疏注意力(Sparse Attention)

传统self-attention计算在理论上时间和空间占用为\(O(n^2)\)其中n为序列长度,这是因为对于一个长度为n的序列,任意向量之间都需要计算相关度,得到一个\(n^2\)的相关度矩阵,因此为\(O(n^2)\)。借鉴Blog中描述:
对于self-attention中 每个元素都跟序列内所有的元素都有关联 ,那么一个基本的思路就是 减少关联性的计算,也就是认为每个元素只跟序列内的一部分元素相关,这就是稀疏Attention的基本原理(其实就是如何高效的处理Q,K,V之间关系,不要全部计算)。

2、Kimi:MOBA

正如上面提到的,文本长度(n)变成导致无论是时间还是空间上消耗增加,因此在MOBA中就是让 Q去和K,V的子集进行计算:

\[MoBA(q,K,V)=\text{Softmax}(qK[I]^T)V[I] \]

\(I\)代表被筛选的子集。其中如何筛选子集以及如何确定子集个数。对于后者子集个数的确定,对于长度为\(N\)可以直接划分到\(n\)个blocks中,至于如何筛选子集,作者提到就是直接通过MoE中的 router机制去筛选出来即可。

在论文中 Router设计方法(不是像MoE里面直接简单用一个MLP计算),因为想通过一个 Router来选择出哪些是需要使用的,参考代码以及上面流程图的描述,对于分块的Key,在MoBA里面直接计算平均值,然后将结果拼接起来,然后直接和Q进行计算然后再去筛选出结果。

3、DeepSeek:NSA

正如论文里面描述的,NSA采用了一种动态层次稀疏策略,将粗粒度的token压缩与细粒度的token选择相结合,以保持全局上下文感知和局部精度。换言之就是通过:压缩Token以及筛选Token来实现稀疏注意力

从上面提供的结构图,在NSA中的稀疏注意力大致3个部分:

  • 1、compression,压缩:按照论文里面的描述,作者实现方式为,首先对K/V进行通过一个指定一个窗口进行划分(\(id+1:id+l\))(有点像ViT中将图片切分成不同的小batch操作一样)然后再去通过一个 可学习的MLP来实现最后压缩

  • 2、selection,筛选:这块比较有意思,因为最开始K/V都已经通过分组了,如果在要去挑选哪些重要/哪些不重要,不去和Q计算你很难得重要性,但是第一步中不是有一个“压缩注意力”得分,那就直接用第一步中计算得到的压缩内容来得到重要性

\[\mathbf{p}_t^{\mathrm{cmp}}=\mathrm{Softmax}\left(\mathbf{q}_t^T\tilde{K}_t^{\mathrm{cmp}}\right) \]

  • 3、sliding window,滑动窗口

简单总结一下上面处理,处理长度长问题,就可以先 分块,然后去对不同块之间进行压缩,但是如果只是简单这样对于信息丢失而言很大,因此会有一个 “筛选”操作来弥补信息丢失问题。对于滑动窗口而言,进一步对信息进行弥补(就比如有些多模态里面除了用batch信息之外还会用到全局信息,不要让模型过度的关注细节内容)

总结

从思路上MoBA和NSA都有一个相通的点,对于 稀疏注意力实现,都是通过“筛选”操作,但是“注意力筛选”势必要用到\(QK^T\)计算,因此两者都有一个有意思点,都会用一个小的替换大的先分块再去压缩处理

参考

1、Native Sparse Attention: Hardware-Aligned and Natively Trainable Sparse Attention
2、MIXTURE OF BLOCK ATTENTION FOR LONG-CONTEXT LLMS
3、Generating Long Sequences with Sparse Transformers
4、https://spaces.ac.cn/archives/6853
5、https://zhuanlan.zhihu.com/p/24841366485

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

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

相关文章

Windows 剪贴板 编程原理引入

前言 不得不说上三休四的生活就是舒服,我都有精力提升自己了。 本文将基于自己在生活中遇到的现象进行探索,因此问题引入对自己较为重要,读者可以跳过。 文章主要探讨剪贴板格式问题,即下面的链接。https://learn.microsoft.com/zh-cn/windows/win32/dataxchg/standard-cli…

.NET9中基于策略角色验证的包冲突

今天在.NET项目中,使用基于策略角色的鉴权时,遇到一个401的问题,场景如下:Program.cs代码如下:using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; using Microsoft.IdentityModel.Tokens; usin…

yolov5预处理

1.yolov5预处理流程1.等比缩放与填充:将输入图像等比缩放到目标尺寸(如640640),并在多余部分填充灰条,保持图像的宽高比不变。这一过程也被称为“letterbox”。  2.颜色空间转换:将图像从BGR格式转换为RGB格式(OpenCV默认读取为BGR)。  3.归一化:将像素值从[0, 25…

.NET9中使用Options

选项模式在 ASP.NET Core 中使用类来提供对相关配置设置的强类型访问。通过将配置设置隔离到单独的类,应用程序遵循封装和关注点分离的原则。封装确保依赖于配置的类仅依赖于其使用的设置;关注点分离则确保应用的不同部分的设置互不依赖或耦合。此外,选项模式还提供了验证配…

Semantic Kernel:OpenAPI的Plugin

SK的插件,能让AI功能如虎添翼。Plugin能让AI与本地功能和数据互动,使AI与应用的结合,并起到了很好的粘合剂作用。怎么能让Plugin本身和功能分离呢?调用API是一个很好的办法,比如下面是一个查询订单的功能,是一个mini API项目。using System.Text.Json.Serialization;var …

Semantic Kernel:Phi-4试用

微软在去年12月12日首次展示了Phi-4模型,该模型拥有140亿参数,但表现极为强大。在多项测试中表现优异:GPQA(研究生水平问答)和MATH数学基准测试中,Phi-4的表现超过了OpenAI的GPT-4o,并超越同类顶级开源模型Qwen 2.5 - 14B和Llama 3.3 - 70B。 在美国数学竞赛AMC测试中,…

2025/3/2 【栈与队列】LeetCode232. 用栈实现队列

232. 用栈实现队列 - 力扣(LeetCode) 代码随想录 (programmercarl.com) 思想:用下面的两个栈模拟队列 from collections import deque class MyQueue:def __init__(self):# in主要负责push,out主要负责popself.stackin = []self.stackout = []def push(self, x: int) -> …

Semantic Kernel:Process

Process(流程)是为实现特定业务目标而设计的步骤集合,通过提供服务或产品,为客户创造价值。每个流程由一系列有序的活动组成,这些活动共同完成一个整体目标,旨在提升效率、优化决策,并促进跨团队协作。 在Microsoft Semantic Kernel框架中,Process Framework是一种强大…

Semantic Kernel:新Agent代理

在之前的SemanticKernel中,有一篇关于Agent的文章,不过现在看来其中使用的包过时,所以这篇来更新一下。原文章如下:Semantic Kernel:Agent代理 桂素伟,公众号:桂迹Semantic Kernel:Agent代理原来项目引有的Nuget包如下,版本停留在了1.18.2,2024年9月4日   最新的Agen…

基于uniCloud开发的管理端部署

参考链接: https://doc.dcloud.net.cn/uniCloud/publish.html https://doc.dcloud.net.cn/uniCloud/hosting.html#使用 上传云函数前端网页托管勾选将编译后的资源部署到前端网页托管选项 配置自定义域名配置域名,根据提示在域名管理处添加解析将得到的cname值在域名解析出添…

UnitsNet 库简介

UnitsNet 是一个功能强大的 .NET 库,专为简化物理单位的处理而设计。它提供了丰富的单位类型及其转换功能,使开发人员能够在代码中方便地进行物理单位间的转换、计算和显示。UnitsNet 支持多种领域的物理单位,例如长度、质量、体积、温度、速度、面积等,极大地提高了开发效…

DeepSeek避坑指南:巧用提示词

前言 DeepSeek是国内AI里面的佼佼者,它开源deepseek r1大模型,不仅把AI的使用成本降了下来,同时还撼动了open AI等国际玩家的市场地位。 由于DeepSeek R1是推理模型,在某些时候输出的内容答非所问、甚至会一本正经的胡说八道。今天我们主要聊聊如何能更好的让大模型回答问题…