class_docstr: Analyse time ranges for each TracerEventType, and summarize the time.
code: def add_model_perspective_item(self, model_perspective_node):
      if model_perspective_node.type == "Forward":
          name = "Forward"
      elif model_perspective_node.type == "Backward":
          name = "Backward"
      elif model_perspective_node.type == "Optimization":
          name = "Optimization"
      elif model_perspective_node.type == "Dataloader":
          name = "Dataloader"
      elif model_perspective_node.type == "ProfileStep":
          name = "ProfileStep"
      else:
          return
      if name not in self.model_perspective_items:
          self.model_perspective_items[name] = ModelPerspectiveItem(
              name
          )
      self.model_perspective_items[name].add_cpu_time(
          model_perspective_node.cpu_time
      )
  
imports: import collections
  from .utils import merge_ranges
  from .utils import merge_self_ranges
  from .utils import rebuild_node_trees
  from .utils import sum_ranges
  from .utils import traverse_tree
label_desc: Use image node_id 7 for calling the OverviewParser obj's underlying member method code with example usage: obj.add_model_perspective_item(model_perspective_node) without return types