code: def __len__(self) -> int:
      # Since, this is iterator, we need to return total length == number of batches
      # and as get_batch_size returns per GPU batch size, it needs to be multiplied
      # by world size
      batch_size = get_batch_size() * get_world_size()
      # Changed the length to accomadate drop_last == True
      # drop_last is required if the batch is split into multiple cores
      # some of the cores may not have enough examples.
      if is_xla():
          logging.info(
              "drop_last is set to True to avoid uneven dimension shapes "
              "across cores."
          )
          return (self._total_length) // batch_size
      else:
          # This assumes drop_last=False for all loaders. See also
          # build_dataloader_and_sampler().
          return (self._total_length + batch_size - 1) // batch_size
  
imports: import logging
  import warnings
  from typing import Dict, Iterator
  import torch
  from mmf.common.sample import convert_batch_to_sample_list, SampleList
  from mmf.datasets import iteration_strategies
  from mmf.utils.build import build_dataloader_and_sampler, build_dataset
  from mmf.utils.dataset import dataset_list_from_config
  from mmf.utils.distributed import broadcast_scalar, get_world_size, is_dist_initialized, is_main, is_xla
  from mmf.utils.general import get_batch_size, get_current_device
  from omegaconf import OmegaConf
  from torch.utils.data.dataloader import DataLoader, Sampler
label_desc: Use image node_id 17 for calling the MultiDataLoader obj's underlying member method code with example usage: obj.__len__() and returns: unknown, unknown