code: def DS4Sci_EvoformerAttention(Q, K, V, biases):
      assert len(biases) <= 2
  
      if len(biases) == 0:
          biases.append(None)
  
      if len(biases) == 1:
          biases.append(None)
  
      bias_1_shape = lambda x: (
          x.shape[0],
          x.shape[1],
          1,
          1,
          x.shape[2],
      )
      bias_2_shape = lambda x: (
          x.shape[0],
          1,
          x.shape[3],
          x.shape[2],
          x.shape[2],
      )
  
      if biases[0] is not None:
          assert biases[0].shape == bias_1_shape(
              Q
          ), "bias1 shape is incorrect"
  
      if biases[1] is not None:
          assert biases[1].shape == bias_2_shape(
              Q
          ), "bias2 shape is incorrect"
  
      return EvoformerFusedAttention.apply(
          Q, K, V, biases[0], biases[1]
      )
  
file_path: deepspeed/deepspeed/ops/deepspeed4science/evoformer_attn.py
imports: import torch
  import numpy
  from deepspeed.ops.op_builder import EvoformerAttnBuilder
  from deepspeed.accelerator import get_accelerator
label_desc: Use image node_id 3 for calling a global function with example usage: DS4Sci_EvoformerAttention(Q, K, V, biases) and returns: EvoformerFusedAttention