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:
- Row-wise triangle attention (starting-node pair bias)
- Column-wise triangle attention (ending-node pair bias)
- Triangle multiplicative update — outgoing (z_ij += Σ_k a_ik ⊙ b_jk)
- Triangle multiplicative update — incoming (z_ij += Σ_k a_ki ⊙ b_kj)
- 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§
- Pairformer
Block - One Pairformer layer: refines the pair representation [B, N, N, d_pair].