precomputed_cross_attention
precomputed_cross_attention
¶
Cross-attention block with precomputed K/V and optional query RoPE.
PrecomputedCrossAttentionBlock
¶
Bases: TransformerBlock
Norm -> query projection -> optional RoPE -> cross-attention -> gated residual.
Accepts precomputed K/V tensors (already in head-split format) and only projects queries.
Source code in src/versatil/models/layers/transformer/block/precomputed_cross_attention.py
forward
¶
forward(hidden_states, keys, values, conditioning=None, attention_mask=None, precomputed_query_rope=None)
Norm -> cross-attention with precomputed K/V -> gated residual.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
hidden_states
|
Tensor
|
Query input (B, T, D). |
required |
keys
|
Tensor
|
Precomputed keys (B, S, kv_dim). |
required |
values
|
Tensor
|
Precomputed values (B, S, kv_dim). |
required |
conditioning
|
Tensor | None
|
Conditioning vector for AdaNorm (B, C). Ignored by UnconditionedNorm. |
None
|
attention_mask
|
Tensor | None
|
Bool mask (B, 1, T, S), True = masked. |
None
|
precomputed_query_rope
|
tuple[Tensor, Tensor] | None
|
Precomputed (cos, sin) for query positions. Applied via half-rotation after query projection. |
None
|
Returns:
| Type | Description |
|---|---|
Tensor
|
Output hidden states (B, T, D). |