class_docstr: Megatron encoder-decoder base class
class_docstr_tok: ["Megatron","encoder-decoder","base","class"]
docstr: This function takes as input per-token loss and masks non-required values.
docstr_tok: ["This","function","takes","as","input","per-token","loss","and","masks","non-required","values","."]
code: def loss_func(self, loss_mask, tokens_loss):
      """
      This function takes as input per-token loss and masks non-required values.
      """
      losses = tokens_loss.view(-1).float()
      loss_mask = loss_mask.view(-1).float()
      # TODO: add nemo version here
      loss = (
          torch.sum(losses * loss_mask) / loss_mask.sum()
      )  # sequence level nll
      return loss
  
imports: import copy
  import functools
  import inspect
  from typing import Any, Dict, List, Optional
  import torch
  from omegaconf import OmegaConf, open_dict
  from omegaconf.dictconfig import DictConfig
  from pytorch_lightning.accelerators import CPUAccelerator
  from pytorch_lightning.trainer.trainer import Trainer
  from nemo.collections.nlp.data.language_modeling.megatron.data_samplers import MegatronPretrainingRandomSampler, MegatronPretrainingSampler
  from nemo.collections.nlp.models.language_modeling.megatron_base_model import MegatronBaseModel
  from nemo.collections.nlp.modules.common.megatron.build_model import build_model
  from nemo.collections.nlp.modules.common.megatron.module import Float16Module
  from nemo.collections.nlp.modules.common.megatron.token_level_encoder_decoder import MegatronTokenLevelEncoderDecoderModule
  from nemo.collections.nlp.modules.common.megatron.utils import ApexGuardDefaults, average_losses_across_data_parallel_group, get_params_for_weight_decay_optimization
  from nemo.collections.nlp.modules.common.text_generation_utils import compute_beam_search_len_penalty, get_sampling_token_fn
  from nemo.collections.nlp.parts.utils_funcs import get_last_rank
  from nemo.utils import AppState, logging
label_desc: Use image node_id 28 for calling the MegatronLMEncoderDecoderModel obj's underlying member method code with example usage: obj.loss_func(loss_mask, tokens_loss) and returns: loss