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 __init__(
      self,
      dataloader: DataLoader,
  ) -> None:
      self.dataloader = dataloader
  
      self.count = 0
      self.dataloader_iter = None
  
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 1 to create a new CycledDataLoader object  with example: obj = CycledDataLoader(dataloader)