Skip to main content

Module pairformer

Module pairformer 

Source
Expand description

Pairformer block — core iterative refinement layer of the ESMFold2 FoldingTrunk.

Each block refines the pair representation [B, N, N, d_pair] by applying:

  1. Row-wise triangle attention (starting-node pair bias)
  2. Column-wise triangle attention (ending-node pair bias)
  3. Triangle multiplicative update — outgoing (z_ij += Σ_k a_ik ⊙ b_jk)
  4. Triangle multiplicative update — incoming (z_ij += Σ_k a_ki ⊙ b_kj)
  5. Pair transition FFN

Weight layout (rooted at folding_trunk.blocks.{i}):

tri_attn_row.norm.*       — pre-norm LayerNorm
tri_attn_row.q_proj.*     — Q (no bias)
tri_attn_row.k_proj.*     — K (no bias)
tri_attn_row.v_proj.*     — V (no bias)
tri_attn_row.pair_bias.*  — pair bias → n_heads (no bias)
tri_attn_row.gate.*       — sigmoid gate → n_heads*d_head (no bias)
tri_attn_row.out_proj.*   — output → d_pair (no bias)
tri_attn_col.*            — identical layout
tri_mult_out.norm.*       — input LayerNorm
tri_mult_out.left_proj.*  — left projection → c_hidden (no bias)
tri_mult_out.right_proj.* — right projection → c_hidden (no bias)
tri_mult_out.left_gate.*  — left sigmoid gate → c_hidden (no bias)
tri_mult_out.right_gate.* — right sigmoid gate → c_hidden (no bias)
tri_mult_out.out_norm.*   — pre-output LayerNorm on c_hidden
tri_mult_out.out_proj.*   — c_hidden → d_pair (no bias)
tri_mult_out.out_gate.*   — output sigmoid gate → d_pair (no bias)
tri_mult_in.*             — identical layout
pair_trans.norm.*         — transition pre-norm
pair_trans.fc1.*          — d_pair → 4*d_pair (no bias)
pair_trans.fc2.*          — 4*d_pair → d_pair (no bias)

Structs§

PairformerBlock
One Pairformer layer: refines the pair representation [B, N, N, d_pair].