docstr: Add a gradient slice on an existing slice of the parameter's gradient
  Used when no_sync is not activated.
  
  Args:
      grad (Tensor): The split gradient to append to list
      grad_idx (int): The index of the existing slice
      group_id (int): The index of a parameter group
      param_id (int): The id of a parameter
docstr_tok: ["Add","a","gradient","slice","on","an","existing","slice","of","the","parameter","'s","gradient","Used","when","no_sync","is","not","activated",".","Args",":","grad","(","Tensor",")",":","The","split","gradient","to","append","to","list","grad_idx","(","int",")",":","The","index","of","the","existing","slice","group_id","(","int",")",":","The","index","of","a","parameter","group","param_id","(","int",")",":","The","id","of","a","parameter"]
code: def add_gradients_by_param_id(
      self, grad: Tensor, grad_idx: int, group_id: int, param_id: int
  ):
      """Add a gradient slice on an existing slice of the parameter's gradient
      Used when no_sync is not activated.
  
      Args:
          grad (Tensor): The split gradient to append to list
          grad_idx (int): The index of the existing slice
          group_id (int): The index of a parameter group
          param_id (int): The id of a parameter
      """
  
      self._grads_of_params[group_id][param_id][grad_idx].add_(grad)
  
file_path: colossalai/colossalai/zero/low_level/bookkeeping/gradient_store.py
imports: from typing import List
  from torch import Tensor
  from .base_store import BaseStore
label_desc: Use image node_id 4 for calling the GradientStore obj's underlying member method code with example usage: obj.add_gradients_by_param_id(grad, grad_idx, group_id, param_id) without return types