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

XAttention 计算步骤详解及示例

XAttention 计算步骤详解及示例

XAttention 是一种高效的块稀疏注意力机制,通过 反对角线评分(Antidiagonal Scoring)动态阈值选择 来优化长序列 Transformer 模型的推理效率。以下是其核心计算步骤及具体示例。


1. XAttention 的核心步骤

Step 1: 计算原始注意力分数

输入:

  • Query Q ∈ R n × d Q \in \mathbb{R}^{n \times d} QRn×d
  • Key K ∈ R m × d K \in \mathbb{R}^{m \times d} KRm×d
  • Value V ∈ R m × d v V \in \mathbb{R}^{m \times d_v} VRm×dv

计算未缩放的注意力分数:
S = Q K T S = QK^T S=QKT

Step 2: 反对角线评分(Antidiagonal Scoring)

  1. 分块计算:将 S S S 划分为 B × B B \times B B×B 的块(如 8 × 8 8 \times 8 8×8)。
  2. 反对角线求和:对每个块,计算反对角线(从左下到右上)元素的和,作为块的重要性分数:
    Score = ∑ i + j = k A i , j \text{Score} = \sum_{i+j=k} A_{i,j} Score=i+j=kAi,j
    • 其中 k k k 是反对角线索引,例如 k = 0 , 1 , . . . , 2 B − 2 k=0,1,...,2B-2 k=0,1,...,2B2

Step 3: 阈值块选择

  1. 归一化:对块分数进行 softmax 归一化:
    P = softmax ( Score ) P = \text{softmax}(\text{Score}) P=softmax(Score)
  2. 选择关键块:保留累积概率超过阈值 τ \tau τ 的最小块集合 B ∗ B^* B
    B ∗ = arg ⁡ min ⁡ ∣ B ∣ s.t. ∑ ( i , j ) ∈ B P i , j > τ B^* = \arg \min |B| \quad \text{s.t.} \quad \sum_{(i,j) \in B} P_{i,j} > \tau B=argminBs.t.(i,j)BPi,j>τ

Step 4: 稀疏注意力计算

仅计算选中的关键块 B ∗ B^* B 的注意力权重,并加权聚合 V V V
Output = ∑ ( i , j ) ∈ B ∗ A i , j V j \text{Output} = \sum_{(i,j) \in B^*} A_{i,j} V_j Output=(i,j)BAi,jVj


2. 计算示例

输入数据

假设 d = 2 d=2 d=2,输入如下:

  • Query (Q)
    Q = [ 1.0 2.0 3.0 4.0 ] Q = \begin{bmatrix} 1.0 & 2.0 \\ 3.0 & 4.0 \\ \end{bmatrix} Q=[1.03.02.04.0]
  • Key (K)
    K = [ 5.0 6.0 7.0 8.0 9.0 10.0 ] K = \begin{bmatrix} 5.0 & 6.0 \\ 7.0 & 8.0 \\ 9.0 & 10.0 \\ \end{bmatrix} K= 5.07.09.06.08.010.0
  • Value (V)
    V = [ 1.0 0.0 1.0 0.0 1.0 0.0 1.0 1.0 0.0 ] V = \begin{bmatrix} 1.0 & 0.0 & 1.0 \\ 0.0 & 1.0 & 0.0 \\ 1.0 & 1.0 & 0.0 \\ \end{bmatrix} V= 1.00.01.00.01.01.01.00.00.0

Step 1: 计算原始注意力分数 S = Q K T S = QK^T S=QKT

S = [ 1 ⋅ 5 + 2 ⋅ 6 1 ⋅ 7 + 2 ⋅ 8 1 ⋅ 9 + 2 ⋅ 10 3 ⋅ 5 + 4 ⋅ 6 3 ⋅ 7 + 4 ⋅ 8 3 ⋅ 9 + 4 ⋅ 10 ] = [ 17 23 29 39 53 67 ] S = \begin{bmatrix} 1 \cdot 5 + 2 \cdot 6 & 1 \cdot 7 + 2 \cdot 8 & 1 \cdot 9 + 2 \cdot 10 \\ 3 \cdot 5 + 4 \cdot 6 & 3 \cdot 7 + 4 \cdot 8 & 3 \cdot 9 + 4 \cdot 10 \\ \end{bmatrix} = \begin{bmatrix} 17 & 23 & 29 \\ 39 & 53 & 67 \\ \end{bmatrix} S=[15+2635+4617+2837+4819+21039+410]=[173923532967]

Step 2: 反对角线评分(假设块大小 2 × 2 2 \times 2 2×2

  • 块 1 S 1 : 2 , 1 : 2 S_{1:2,1:2} S1:2,1:2):
    反对角线元素 = { 17 , 53 } 和 = 17 + 53 = 70 \text{反对角线元素} = \{17, 53\} \quad \text{和} = 17 + 53 = 70 反对角线元素={17,53}=17+53=70
  • 块 2 S 1 : 2 , 2 : 3 S_{1:2,2:3} S1:2,2:3):
    反对角线元素 = { 23 , 67 } 和 = 23 + 67 = 90 \text{反对角线元素} = \{23, 67\} \quad \text{和} = 23 + 67 = 90 反对角线元素={23,67}=23+67=90

Step 3: 阈值块选择(假设 τ = 0.6 \tau = 0.6 τ=0.6

  1. 归一化
    P = softmax ( [ 70 , 90 ] ) ≈ [ 0.27 , 0.73 ] P = \text{softmax}([70, 90]) \approx [0.27, 0.73] P=softmax([70,90])[0.27,0.73]
  2. 选择关键块
    • 累积概率: 0.27 + 0.73 = 1.0 > τ 0.27 + 0.73 = 1.0 > \tau 0.27+0.73=1.0>τ,因此选择 块 2 S 1 : 2 , 2 : 3 S_{1:2,2:3} S1:2,2:3)。

Step 4: 稀疏注意力计算

仅计算块 2 的注意力权重:
A selected = softmax ( [ 23 , 67 ] 2 ) ≈ [ 0.0001 , 0.9999 ] A_{\text{selected}} = \text{softmax}\left(\frac{[23, 67]}{\sqrt{2}}\right) \approx [0.0001, 0.9999] Aselected=softmax(2 [23,67])[0.0001,0.9999]
加权聚合 V V V
Output = 0.0001 ⋅ [ 0.0 , 1.0 , 0.0 ] + 0.9999 ⋅ [ 1.0 , 1.0 , 0.0 ] ≈ [ 1.0 , 1.0 , 0.0 ] \text{Output} = 0.0001 \cdot [0.0, 1.0, 0.0] + 0.9999 \cdot [1.0, 1.0, 0.0] \approx [1.0, 1.0, 0.0] Output=0.0001[0.0,1.0,0.0]+0.9999[1.0,1.0,0.0][1.0,1.0,0.0]


3. 关键优势

  1. 计算高效:反对角线评分的计算复杂度低,仅需 O ( B 2 ) O(B^2) O(B2) 而非 O ( N 2 ) O(N^2) O(N2)
  2. 模式保留:反对角线能捕捉垂直/斜线依赖(如视频帧间的时空关联)。
  3. 动态适应性:通过阈值调整可平衡计算量与精度。

XAttention 在长文本和视频任务中可加速 13.5 倍,同时保持全注意力的精度。

相关文章:

  • 58、嵌入式Servlet容器-【源码分析】切换web服务器与定制化
  • UDS协议中0x34、0x36、0x37服务详解及应用
  • 表达式的自动类型转换
  • HashMap vs LinkedHashMap
  • 短剧热浪,席卷海内外。
  • 2025企业级BI产品评测和推荐
  • 论坛系统自动化测试
  • GRUB2 启动配置的工作原理与优先级规则详解
  • SSH远程连接到Windows服务器
  • 概率基础——不确定性的数学
  • 1.3、SDH光接口类型
  • 批处理实现:自动抓取perfetto日志 自动导出到当前文件夹 自动打开分析页面
  • (nice!!!)(LeetCode 每日一题) 2616. 最小化数对的最大差值 (二分查找)
  • 落地 DDD 领域模型(常见的实现模式)
  • 单项链表的操作及其实现
  • 【二叉树】(四)二叉搜索树的基础修改构造及属性求解1
  • Spring 事务传播行为详解
  • AbMole小课堂:从肿瘤研究到体内模型构建,Mitomycin C一“剂”搞
  • 寻找区域中的面积和中心点
  • java哨兵底层原理
  • 五金加工东莞网站建设/安装百度一下
  • 网站开发PHP留言本/aso应用商店优化
  • 想找人做网站/百度云客服人工电话
  • 做公司网站哪家好重庆九龙坡区/个人怎么在百度上打广告
  • 可视化网站建设软件/域名注册价格及续费
  • 做传销网站后果严重吗/情感营销案例