code: def on_validation_batch_end(
      self,
      trainer: Trainer,
      pl_module: LightningModule,
      outputs: Dict,
      batch: SampleList,
      batch_idx: int,
      dataloader_idx: int,
  ):
      # prepare the next batch
      self.lightning_trainer.data_module.val_loader.change_dataloader()
  
      # aggregate val_combined_report
      self.val_combined_report = self._update_and_create_report(
          batch,
          batch_idx,
          outputs,
          pl_module,
          self.val_combined_report,
          update_meter=pl_module.val_meter,
      )
      self.val_combined_report = self.val_combined_report.detach()
      self.val_combined_report.metrics = pl_module.metrics(
          self.val_combined_report, self.val_combined_report
      )
      pl_module.val_meter.update_from_report(
          self.val_combined_report, should_update_loss=False
      )
  
imports: import logging
  from typing import Any, Dict, List
  import torch
  from mmf.common.meter import Meter
  from mmf.common.registry import registry
  from mmf.common.report import Report
  from mmf.common.sample import SampleList
  from mmf.utils.logger import calculate_time_left, summarize_report
  from mmf.utils.timer import Timer
  from pytorch_lightning import LightningModule, Trainer
  from pytorch_lightning.callbacks.base import Callback
label_desc: Use image node_id 5 for calling the LightningLoopCallback obj's underlying member method code with example usage: obj.on_validation_batch_end(trainer, pl_module, outputs, batch, batch_idx, dataloader_idx) without return types