code: def training_step(self, batch, batch_idx):
      loss = self._step(batch, batch_idx, "train")
      batch_size = batch.videos.size(0)
      batch_sizes = self.all_gather(batch_size)
      loss *= (
          batch_sizes.size(0) / batch_sizes.sum()
      )  # world size / batch size
      self.log(
          "monitoring_step",
          torch.tensor(self.global_step, dtype=torch.float32),
      )
  
      return loss
  
imports: import itertools
  import math
  from collections import namedtuple
  from typing import List, Tuple
  import sentencepiece
  import torch
  import torchaudio
  from models.conformer_rnnt import conformer_rnnt
  from models.emformer_rnnt import emformer_rnnt
  from models.fusion import fusion_module
  from models.resnet import video_resnet
  from models.resnet1d import audio_resnet
  from pytorch_lightning import LightningModule
  from schedulers import WarmupCosineScheduler
  from torchaudio.models import Hypothesis, RNNTBeamSearch
label_desc: Use image node_id 5 for calling the AVConformerRNNTModule obj's underlying member method code with example usage: obj.training_step(batch, batch_idx) and returns: loss