class_docstr: A callback which generates and logs a summary of the modules.
  
  Args:
      max_depth: The maximum depth of module summaries to keep.
      process_fn: Function to print the module summaries. Default is to log all module summary tables.
      module_inputs: A mapping from module name to (args, kwargs) for that module. Useful when wanting FLOPS, activation sizes, etc.
  
  Raises:
      RuntimeError:
          If torcheval is not installed.
class_docstr_tok: ["A","callback","which","generates","and","logs","a","summary","of","the","modules",".","Args",":","max_depth",":","The","maximum","depth","of","module","summaries","to","keep",".","process_fn",":","Function","to","print","the","module","summaries",".","Default","is","to","log","all","module","summary","tables",".","module_inputs",":","A","mapping","from","module","name","to","(","args",",","kwargs",")","for","that","module",".","Useful","when","wanting","FLOPS",",","activation","sizes",",","etc",".","Raises",":","RuntimeError",":","If","torcheval","is","not","installed","."]
code: def on_eval_start(self, state: State, unit: TEvalUnit) -> None:
      if state.entry_point != EntryPoint.EVALUATE:
          return
      self._get_and_process_summaries(unit)
  
file_path: tnt/torchtnt/framework/callbacks/module_summary.py
imports: from typing import Any, Callable, Dict, List, MutableMapping, Optional, Tuple
  from torchtnt.framework.callback import Callback
  from torchtnt.framework.state import EntryPoint, State
  from torchtnt.framework.unit import AppStateMixin, TEvalUnit, TPredictUnit, TTrainUnit
  from torchtnt.utils.module_summary import get_module_summary, get_summary_table, ModuleSummary, prune_module_summary
  from torchtnt.utils.rank_zero_log import rank_zero_info
label_desc: Use image node_id 3 for calling the ModuleSummary obj's underlying member method code with example usage: obj.on_eval_start(state, unit) without return types