MoBA vs NSA, Kimi第一个站出来和DeepSeek中门对狙!

大模型向量数据库数据库

昨天DeepSeek又开源了,NSA框架,通过稀疏注意力,让大模型的上下文长度可以达到64k,并且性能大幅提升。 随后晚上Kimi也来了,开源MoBA框架,数值更逆天,可以scaleup到10M上下文。今天简单聊聊二者的差异, 2个框架的取名也是一种艺术~。

picture.image

DeepSeek-NSA

picture.image

Kimi-MoBA

技术报告地址:

kimi是已经开源了代码,项目地址:https://github.com/MoonshotAI/MoBA

首先二者都是提出了一个稀疏注意力算法,NSA通过对 粗粒度压缩和细粒度选择 构造的一种动态分层的稀疏策略, MOBA则是受MoE启发,将块稀疏注意力与动态路由结合,通过分块和门控机制选择最相关的KV块。

DeepSeek NSA:

picture.image

NSA将注意力分为三个并行分支, 压缩注意力、 选择注意力、 滑动注意力。

  • 粗粒度压缩: 将512个token压缩为32个语义块(类似视频关键帧);
  • 细粒度选择:动态保留64个关键token块。
  • 局部连贯性:关注最近的512个token。

step1 : 压缩注意力

将连续token块压缩为单个表示

φ

其中, l是块长度, φ是可学习的MLP压缩函数

step2: 选择注意力

先计算块重要性分数,然后选择Top-n重要块

step3: 滑动注意力, 保持固定窗口大小w

简单的伪代码表示:


        
        
            

          
 
 def
 
  
 
 NSA\_attention
 
 
 (query, keys, values, 
   

                   compress\_size=
 
 32
 
 ,    
 
 # 压缩块大小
 
   

                   select\_size=
 
 64
 
 ,      
 
 # 选择块大小
 
   

                   window\_size=
 
 512
 
 ,     
 
 # 滑动窗口大小
 
   

                   top\_n=
 
 16
 
 )
 
 :
 
                    
          
 # 选择块数量
 
            

              
            

              
          
 # 1. 压缩块注意力
 
            

              compressed = compress\_blocks(keys, values, compress\_size)
            

              
            

              
          
 # 2. 选择重要块
 
            

              blocks = split\_into\_blocks(keys, values, select\_size)
            

              scores = [score\_block(query, block) 
          
 for
 
           block 
          
 in
 
           blocks]
            

              selected = top\_k\_blocks(scores, top\_n)
            

              
            

              
          
 # 3. 滑动窗口
 
            

              local = (keys[-window\_size:], values[-window\_size:])
            

              
            

              
          
 # 计算三路注意力并组合
 
            

              attn\_outputs = [
            

                  flash\_attention(query, c\_k, c\_v) 
          
 for
 
           c\_k, c\_v 
          
 in
 
           [compressed, selected, local]
            

              ]
            

              
            

              
          
 return
 
           sum(g * out 
          
 for
 
           g, out 
          
 in
 
           zip(gate\_weights(query), attn\_outputs))
            

        
      
Kimi MOBA

picture.image

先将文本分割为512-4096token的块, 然后通过门控网络动态选择top3相关块。为了局部的连贯性,用了当前块强选的策略。

step1: 块注意力计算

picture.image

step2: 块选择策略

先计算块亲和度分数,然后选topk

picture.image

picture.image

简单的伪代码表示


        
        
            

          
 
 def
 
  
 
 MoBA\_attention
 
 
 (query, keys, values, block\_size=
 
 512
 
 , top\_k=
 
 3
 
 )
 
 :
 
            

              blocks = split\_into\_blocks(keys, values, block\_size)
            

              scores = [gate(query, block) 
          
 for
 
           block 
          
 in
 
           blocks]
            

              selected = top\_k\_blocks(scores, top\_k)
            

              
          
 return
 
           flash\_attention(query, selected\_blocks)
            

        
      
  • 预训练阶段:90%时间用MoBA,10%切换全注意力
  • 微调阶段:最后3层保留全注意力(确保指令跟随能力)

从对比评测来看,二者都在大多数任务上接近或超过Full Attention,在某些特定任务上有小幅下降,但是计算效率显著提升。 NSA在推理任务上有明显优势,例如GSM8K, DROP有较大幅提升;MOBA有更好的编码能力。picture.image

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
从 ClickHouse 到 ByteHouse
《从ClickHouse到ByteHouse》白皮书客观分析了当前 ClickHouse 作为一款优秀的开源 OLAP 数据库所展示出来的技术性能特点与其典型的应用场景。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论