class_docstr: Why do we need this class?
  In version 4da324cd60, "prompts = next(iter(self.prompt_dataloader))" is used to sample a batch of prompts/pretrain.
  However, this may be inefficient due to frequent re-initialization of the dataloader. (re-initialize workers...)
  NOTE: next(iter(dataloader)) is not equivalent to for batch in dataloader: break, it causes slightly different behavior.
code: def next(self):
      # defer initialization
      if self.dataloader_iter is None:
          self.dataloader_iter = iter(self.dataloader)
  
      self.count += 1
      try:
          return next(self.dataloader_iter)
      except StopIteration:
          self.count = 0
          self.dataloader_iter = iter(self.dataloader)
          return next(self.dataloader_iter)
  
file_path: ColossalAI/applications/Chat/coati/trainer/utils.py
imports: from typing import Any
  import torch
  import torch.distributed
  from torch.utils._pytree import tree_map
  from torch.utils.data import DataLoader
label_desc: Use image node_id 2 for calling the CycledDataLoader obj's underlying member method code with example usage: obj.next() and returns: next, next