class_docstr: Change gradient accumulation factor according to scheduling.
  
  Args:
      scheduling: scheduling in format {epoch: accumulation_factor}
  
  Note:
      The argument scheduling is a dictionary. Each key represent an epoch and
      its associated accumulation factor value.
      Warning: Epoch are zero-indexed c.f it means if you want to change
      the accumulation factor after 4 epochs, set ``Trainer(accumulate_grad_batches={4: factor})``
      or ``GradientAccumulationScheduler(scheduling={4: factor})``.
      For more info check the example below.
  
  Raises:
      TypeError:
          If ``scheduling`` is an empty ``dict``,
          or not all keys and values of ``scheduling`` are integers.
      IndexError:
          If ``minimal_epoch`` is less than 0.
  
  Example::
  
      >>> from lightning.pytorch import Trainer
      >>> from lightning.pytorch.callbacks import GradientAccumulationScheduler
  
      # from epoch 5, it starts accumulating every 2 batches. Here we have 4 instead of 5
      # because epoch (key) should be zero-indexed.
      >>> accumulator = GradientAccumulationScheduler(scheduling={4: 2})
      >>> trainer = Trainer(callbacks=[accumulator])
class_docstr_tok: ["Change","gradient","accumulation","factor","according","to","scheduling",".","Args",":","scheduling",":","scheduling","in","format","{","epoch",":","accumulation_factor","}","Note",":","The","argument","scheduling","is","a","dictionary",".","Each","key","represent","an","epoch","and","its","associated","accumulation","factor","value",".","Warning",":","Epoch","are","zero-indexed","c.f","it","means","if","you","want","to","change","the","accumulation","factor","after","4","epochs",",","set","``","Trainer","(","accumulate_grad_batches=","{","4",":","factor","}",")","``","or","``","GradientAccumulationScheduler","(","scheduling=","{","4",":","factor","}",")","``",".","For","more","info","check","the","example","below",".","Raises",":","TypeError",":","If","``","scheduling","``","is","an","empty","``","dict","``",",","or","not","all","keys","and","values","of","``","scheduling","``","are","integers",".","IndexError",":","If","``","minimal_epoch","``","is","less","than","0",".","Example",":",":",">",">",">","from","lightning.pytorch","import","Trainer",">",">",">","from","lightning.pytorch.callbacks","import","GradientAccumulationScheduler","#","from","epoch","5",",","it","starts","accumulating","every","2","batches",".","Here","we","have","4","instead","of","5","#","because","epoch","(","key",")","should","be","zero-indexed",".",">",">",">","accumulator","=","GradientAccumulationScheduler","(","scheduling=","{","4",":","2","}",")",">",">",">","trainer","=","Trainer","(","callbacks=","[","accumulator","]",")"]
code: def going_to_accumulate_grad_batches(self) -> bool:
      return any(v > 1 for v in self.scheduling.values())
  
file_path: pytorch-lightning/src/lightning/pytorch/callbacks/gradient_accumulation_scheduler.py
imports: from typing import Any, Dict
  from typing_extensions import override
  import lightning.pytorch
  from lightning.pytorch.callbacks.callback import Callback
  from lightning.pytorch.utilities.exceptions import MisconfigurationException
  from lightning.pytorch.utilities.imports import _LIGHTNING_COLOSSALAI_AVAILABLE
  from lightning.pytorch.utilities.model_helpers import is_overridden
  from lightning.pytorch.utilities.rank_zero import rank_zero_warn
label_desc: Use image node_id 2 for calling the GradientAccumulationScheduler obj's underlying member method code with example usage: obj.going_to_accumulate_grad_batches() and returns: any