code: def benchmark_data_advanced(args):
      # benchmark dataloader with more details to help analyze performance bottleneck
      cfg = setup(args)
      benchmark = create_data_benchmark(cfg, args)
  
      if comm.get_rank() == 0:
          benchmark.benchmark_dataset(100)
          benchmark.benchmark_mapper(100)
          benchmark.benchmark_workers(100, warmup=10)
          benchmark.benchmark_IPC(100, warmup=10)
      if comm.get_world_size() > 1:
          benchmark.benchmark_distributed(100)
          logger.info("Rerun ...")
          benchmark.benchmark_distributed(100)
  
imports: import itertools
  import logging
  import psutil
  import torch
  import tqdm
  from fvcore.common.timer import Timer
  from torch.nn.parallel import DistributedDataParallel
  from detectron2.checkpoint import DetectionCheckpointer
  from detectron2.config import LazyConfig, get_cfg, instantiate
  from detectron2.data import DatasetFromList, build_detection_test_loader, build_detection_train_loader
  from detectron2.data.benchmark import DataLoaderBenchmark
  from detectron2.engine import AMPTrainer, SimpleTrainer, default_argument_parser, hooks, launch
  from detectron2.modeling import build_model
  from detectron2.solver import build_optimizer
  from detectron2.utils import comm
  from detectron2.utils.collect_env import collect_env_info
  from detectron2.utils.events import CommonMetricPrinter
  from detectron2.utils.logger import setup_logger
label_desc: Use image node_id 5 for calling a global function with example usage: benchmark_data_advanced(args) without return types