code: def build_data_loader(
      dataset, micro_batch_size, num_workers, drop_last, shuffle
  ):
      """Data loader. Note that batch-size is the local (per GPU) batch-size."""
  
      # Sampler.
      world_size = mpu.get_data_parallel_world_size()
      rank = mpu.get_data_parallel_rank()
      sampler = torch.utils.data.distributed.DistributedSampler(
          dataset,
          num_replicas=world_size,
          rank=rank,
          drop_last=drop_last,
          shuffle=shuffle,
      )
  
      # Data loader. Note that batch size is the per GPU batch size.
      data_loader = torch.utils.data.DataLoader(
          dataset,
          batch_size=micro_batch_size,
          sampler=sampler,
          shuffle=False,
          num_workers=num_workers,
          drop_last=drop_last,
          pin_memory=True,
      )
  
      return data_loader
  
imports: import torch
  import torch.nn.functional
  from megatron import get_args
  from megatron import print_rank_0
  from megatron import get_timers
  from megatron import utils
  from megatron.core import mpu
  from megatron.checkpointing import load_checkpoint
  from megatron.checkpointing import save_checkpoint
  from megatron.training import evaluate_and_print_results
  from megatron.training import setup_model_and_optimizer
  from megatron.training import train_step
  from megatron.training import training_log
  from megatron.utils import check_adlr_autoresume_termination
  from megatron.utils import average_losses_across_data_parallel_group, print_params_min_max_norm
  from megatron.core.enums import ModelType
label_desc: Use image node_id 2 for calling a global function with example usage: build_data_loader(dataset, micro_batch_size, num_workers, drop_last, shuffle) and returns: data_loader