code: def get_one_epoch_nq_dataloader(dataset, micro_batch_size=None):
      """Data loader. Note that batch-size is the local (per GPU) batch-size.
      NOTE: This dataloader is not distributed !!!
      """
  
      args = get_args()
      if micro_batch_size is None:
          micro_batch_size = args.micro_batch_size
      num_workers = args.num_workers
  
      sampler = torch.utils.data.SequentialSampler(dataset)
      # importantly, drop_last must be False to get all the data.
      batch_sampler = BatchSampler(
          sampler, batch_size=micro_batch_size, drop_last=False
      )
  
      # Data loader. Note that batch size is the per GPU batch size.
      data_loader = CustomDataLoader(
          dataset,
          batch_sampler=batch_sampler,
          num_workers=num_workers,
          pin_memory=True,
      )
      return data_loader
  
imports: from abc import ABC
  import csv
  from collections import OrderedDict
  import numpy
  import torch
  from torch.utils.data import DataLoader
  from torch.utils.data import Dataset, BatchSampler
  from megatron import print_rank_0, get_args, get_tokenizer
  from megatron.data.biencoder_dataset_utils import make_attention_mask
label_desc: Use image node_id 3 for calling a global function with example usage: get_one_epoch_nq_dataloader(dataset, micro_batch_size) and returns: data_loader