class_docstr: Megatron encoder-decoder base class
class_docstr_tok: ["Megatron","encoder-decoder","base","class"]
docstr: PTL hook: https://pytorch-lightning.readthedocs.io/en/latest/common/lightning_module.html#transfer-batch-to-device
  When using pipeline parallelism, we need the global batch to remain on the CPU,
  since the memory overhead will be too high when using a large number of microbatches.
  Microbatches are transferred from CPU to GPU inside the pipeline.
docstr_tok: ["PTL","hook",":","https",":","\/\/pytorch-lightning.readthedocs.io\/en\/latest\/common\/lightning_module.html","#","transfer-batch-to-device","When","using","pipeline","parallelism",",","we","need","the","global","batch","to","remain","on","the","CPU",",","since","the","memory","overhead","will","be","too","high","when","using","a","large","number","of","microbatches",".","Microbatches","are","transferred","from","CPU","to","GPU","inside","the","pipeline","."]
code: def transfer_batch_to_device(
      self, batch: Any, device: torch.device, dataloader_idx: int
  ) -> Any:
      """PTL hook: https://pytorch-lightning.readthedocs.io/en/latest/common/lightning_module.html#transfer-batch-to-device
      When using pipeline parallelism, we need the global batch to remain on the CPU,
      since the memory overhead will be too high when using a large number of microbatches.
      Microbatches are transferred from CPU to GPU inside the pipeline.
      """
      return batch
  
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 41 for calling the MegatronLMEncoderDecoderModel obj's underlying member method code with example usage: obj.transfer_batch_to_device(batch, device, dataloader_idx) and returns: batch