docstr: main processes to direct update sparsity
  default action:
      calc the out_mask from the node_info.output_grad and store to node_info.output_masks.
      get all input from node_info.output_origin, randomize it, apply the node_info.output_masks, and do tensor_requires_grad;
      execute the node and get the output;
      do backward to output, and for each input, store the grad to node_info.output_grad;
      for each named_parameters in submodules, update param_masks_1 from grad.
docstr_tok: ["main","processes","to","direct","update","sparsity","default","action",":","calc","the","out_mask","from","the","node_info.output_grad","and","store","to","node_info.output_masks",".","get","all","input","from","node_info.output_origin",",","randomize","it",",","apply","the","node_info.output_masks",",","and","do","tensor_requires_grad",";","execute","the","node","and","get","the","output",";","do","backward","to","output",",","and","for","each","input",",","store","the","grad","to","node_info.output_grad",";","for","each","named_parameters","in","submodules",",","update","param_masks_1","from","grad","."]
code: def indirect_update_process(
      self, model_speedup: "ModelSpeedup", node: Node
  ):
      """
      main processes to direct update sparsity
      default action:
          calc the out_mask from the node_info.output_grad and store to node_info.output_masks.
          get all input from node_info.output_origin, randomize it, apply the node_info.output_masks, and do tensor_requires_grad;
          execute the node and get the output;
          do backward to output, and for each input, store the grad to node_info.output_grad;
          for each named_parameters in submodules, update param_masks_1 from grad.
      """
      raise RuntimeError(
          "indirect_update_process method should be overrided!"
      )
  
imports: from __future__ import annotations
  from typing import TYPE_CHECKING, Tuple
  import operator
  import torch
  from torch.nn import functional
  from torch.fx.node import Node
  from torch.utils._pytree import tree_flatten, tree_unflatten
  from .utils import randomize_tensor_inplace, randomize_if_tensor, tree_map_zip, torch_float_dtype, poss_deepcopy
label_desc: Use image node_id 6 for calling the MaskUpdater obj's underlying member method code with example usage: obj.indirect_update_process(model_speedup, node) without return types