Concept

Block-Causal Attention

将序列划分为多个 block,同一 block 内双向可见,不同 block 间保持 causal 关系

Block-Causal Attention

Block-Causal Attention 是比 token-level causal 更灵活的 Attention 模式:将序列划分为多个 block,同一 block 内双向可见,不同 block 间保持 causal

核心机制

通过 mask_ar 定义 block 边界:

mask_ar = [1, 0, 1, 0, 1, 0, 0]
cumsum  = [1, 1, 2, 2, 3, 3, 3]
          [blk1][blk2][blk 3]
  • mask_ar[i] = 1:从 token i 开始进入新 block
  • mask_ar[i] = 0:token i 继续前一个 block

Attention 规则:

attn_maskij=[block(j)block(i)]\text{attn\_mask}_{ij} = [\text{block}(j) \leq \text{block}(i)]

Query 可以看到自己的 block 和之前所有 block。

特例

Token-level Causal

mask_ar = [1, 1, 1, 1, 1]  # 每个 token 一个 block

退化为标准 causal attention(下三角矩阵)。

Bidirectional

mask_ar = [0, 0, 0, 0, 0]  # 全部在 block 0

全连接,无 causal 限制。

应用场景

Prefix-LM

mask_ar = [0, 0, 0, 1, 1, 1]
          [prefix][causal]

Prefix 内双向交互,后续生成保持 causal。常用于多模态模型。

多模态模型

将 image/text/state token 放在同一个 block 内,它们可以充分交互;action token 逐个生成时保持 causal。

与 Causal Attention 的区别

Token-level CausalBlock-Causal
粒度每个 token每个 block(可包含多个 token)
同组内单向(只能看过去)双向(可以互相看)
跨组单向单向

相关概念

  • [[Attention Mask]]
  • [[Causal Attention]]
  • [[Prefix-LM]]