code: def test_bert_encoder_layer_forward():
      batch_size, seq_len = kt.bs_sl()
      print(f"(batch_size, seq_len): ({batch_size}, {seq_len})")
  
      hidden_states = kt.rand((batch_size, seq_len, 1024))
      self_attn_padding_mask = kt.attn_mask(
          batch_size, seq_len, dtype=torch.bool
      )
  
      def custom():
          res = hidden_states.clone()
          for i in range(NUM_LAYERS):
              res = custom_bert_enc_layer_list[i](
                  res, self_attn_padding_mask
              )
          return [
              res.contiguous().detach(),
          ]
  
      def baseline():
          res = hidden_states.contiguous().clone()
          for i in range(NUM_LAYERS):
              res = fairseq_bert_enc_layer_list[i](
                  res, self_attn_padding_mask
              )
          return [
              res.contiguous().detach(),
          ]
  
      return custom, baseline
  
imports: import random
  import math
  from copy import deepcopy
  from dataclasses import dataclass
  import torch
  import torch.nn
  from tests.util import TestDecorator, get_fairseq_enc_params, get_fairseq_dec_params, max_batch_tokens, max_seq_len, split_custom_layer_grad, copy_grad_from_paras, copy_cmax_grad_from_paras
  from tests import fairseq_layers
  from lightseq.training.ops.pytorch.transformer_encoder_layer import LSTransformerEncoderLayer
  from lightseq.training.ops.pytorch.transformer_embedding_layer import LSTransformerEmbeddingLayer
  from lightseq.training.ops.pytorch.cross_entropy_layer import LSCrossEntropyLayer
  from lightseq.training.ops.pytorch.quant_linear_layer import LSQuantLinearLayer
  from lightseq.training.cli.fs_modules.ls_fs_transformer_decoder_layer import LSFSTransformerDecoderLayer
  from lightseq.training.ops.pytorch.quantization import enable_quant, disable_quant, qat_mode, ptq_mode
label_desc: Use image node_id 13 for calling a global function with example usage: test_bert_encoder_layer_forward() and returns: custom,  baseline, list, list