class_docstr: Megatron NMT training
class_docstr_tok: ["Megatron","NMT","training"]
docstr: Dataloader produces a global batch which is turned into a list of microbatches.
  The list of microbatches is then piped through the pipeline using Apex fwd/bwd functions.
code: def fwd_bwd_step(self, dataloader_iter, batch_idx, forward_only):
      """
      Dataloader produces a global batch which is turned into a list of microbatches.
      The list of microbatches is then piped through the pipeline using Apex fwd/bwd functions.
      """
      batch = next(dataloader_iter)
      if isinstance(batch, dict):
          # convert to list if not already converted.
          batch = self._process_batch(batch)
  
      # Get seq length of batch
      encoder_seq_length = batch[0].size(1)
      decoder_seq_length = batch[1].size(1)
  
      tensor_shape = [
          encoder_seq_length,
          get_micro_batch_size(),
          self.cfg.encoder.hidden_size,
      ]
      data_iter = get_iterator_k_split(batch, get_num_microbatches())
  
      return self._execute_fwd_bwd_function(
          data_iterator=data_iter,
          forward_only=forward_only,
          tensor_shape=tensor_shape,
          decoder_seq_length=decoder_seq_length,
      )
  
imports: import enum
  import itertools
  import random
  from typing import List, Optional
  import numpy
  import torch
  from omegaconf.dictconfig import DictConfig
  from omegaconf.listconfig import ListConfig
  from pytorch_lightning.trainer.trainer import Trainer
  from sacrebleu import corpus_bleu
  from nemo.collections.nlp.data.common.sequence_to_sequence_dataset import BinarizedMemmapSequenceToSequenceDataset, TextMemmapSequenceToSequenceDataset
  from nemo.collections.nlp.data.language_modeling.megatron.base_dataset_utils import get_datasets_weights_and_num_samples
  from nemo.collections.nlp.data.language_modeling.megatron.blendable_dataset import BlendableDataset
  from nemo.collections.nlp.data.language_modeling.megatron.megatron_batch_samplers import MegatronPretrainingBatchSampler
  from nemo.collections.nlp.data.language_modeling.megatron.xlm_dataset import BinarizedMemmapCrossLingualMLMAndTranslationDataset, TextMemmapCrossLingualMLMAndTranslationDataset
  from nemo.collections.nlp.models.language_modeling.megatron_lm_encoder_decoder_model import MegatronLMEncoderDecoderModel
  from nemo.collections.nlp.models.language_modeling.megatron_t5_model import MegatronT5Model
  from nemo.collections.nlp.models.machine_translation.mt_enc_dec_model import MTEncDecModel
  from nemo.collections.nlp.modules.common.megatron.megatron_export import DecEmb, EncEmb, TokensHeadEmb
  from nemo.collections.nlp.modules.common.megatron.utils import get_iterator_k_split
  from nemo.collections.nlp.parts.nlp_overrides import GlobalBatchDataFetcher
  from nemo.collections.nlp.parts.utils_funcs import get_last_rank
  from nemo.core.classes import Exportable
  from nemo.utils import AppState, logging, timers
label_desc: Use image node_id 7 for calling the MegatronNMTModel obj's underlying member method code with example usage: obj.fwd_bwd_step(dataloader_iter, batch_idx, forward_only) and returns: self