class_docstr: A wrapper for dataloader to enable gradient accumulation by dropping the last incomplete steps.
  
  Note:
      The dataloader would drop the last incomplete steps for gradient accumulation.
      For example, if a dataloader has 10 batches of data and accumulate size is 4. The model parameters will
      be updated only twice at step 4 and step 8. The last two batches of data do not form a complete 4-step cycle.
      Thus, they will be automatically skipped by this class. If the dataloader is not standard PyTorch dataloader,
      (e.g. Dali dataloader), this class will automatically consume (load data for nothing) the remaining 2 batches.
  
  Args:
      dataloader (``Iterable``): Your dataloader object for gradient accumulation.
      accumulate_size (int): The number of steps to accumulate gradients.
code: def __iter__(self) -> Iterable:
      self._cur_step = 0
      self._dataiter = iter(self.dataloader)
      return self
  
imports: from typing import Any, Iterable, Tuple, Union
  import torch.nn
  from torch import Tensor
  from torch.nn.parallel.distributed import DistributedDataParallel
  from torch.optim import Optimizer
  from torch.optim.lr_scheduler import _LRScheduler
  from torch.utils.data import DataLoader
  from colossalai.interface import OptimizerWrapper
  from colossalai.legacy.engine import BaseGradientHandler
  from colossalai.utils import conditional_context
label_desc: Use image node_id 4 for calling the GradAccumDataloader obj's underlying member method code with example usage: obj.__iter__() and returns: self