code: def forward(data, model, mlm_loss, nsp_loss, vocab_size, dtype):
      
      (input_id, masked_id, masked_position, masked_weight, \
       next_sentence_label, segment_id, valid_length) = data
      num_masks = masked_weight.sum() + 1e-8
      valid_length = valid_length.reshape(-1)
      masked_id = masked_id.reshape(-1)
      valid_length_typed = valid_length.astype(dtype, copy=False)
      _, _, classified, decoded = model(input_id, segment_id, valid_length_typed,
                                        masked_position)
      decoded = decoded.reshape((-1, vocab_size))
      ls1 = mlm_loss(decoded.astype('float32', copy=False),
                     masked_id, masked_weight.reshape((-1, 1)))
      ls2 = nsp_loss(classified.astype('float32', copy=False), next_sentence_label)
      ls1 = ls1.sum() / num_masks
      ls2 = ls2.mean()
      ls = ls1 + ls2
      return ls, next_sentence_label, classified, masked_id, decoded, \
             masked_weight, ls1, ls2, valid_length.astype('float32', copy=False)
docs: forward computation for evaluation