class_docstr: This class is used to automatically find problematic nodes in a model. It takes a FX
  graphmodule and generate some submodules while traverse the graph. Then two functions
  `run_a` and `run_b` will be used to run the same submodule and a function `compare_fn`
  will be used to compare the results.
  
  Currently we provides two ways to traverse the graph and generate submodules.
      1. Sequential traversal: this will traverse the graph node by node and generate
         one submodule with one sigle node.
      2. Binary searching: this will do a binary search style traversal on the graph.
  
  For internal Users, a guide can be found here https://fb.quip.com/HDtuAgiKGfkP.
docstr: Traverse `nodes` one by one and determine if any of them is a culprit.
code: def _sequential_traverse(self, nodes: NodeList) -> NodeSet:
      """
      Traverse `nodes` one by one and determine if any of them is a culprit.
      """
      culprits: NodeSet = set()
  
      for node in nodes:
          report: List[str] = []
          self.reports.append(report)
          self.iteration += 1
          report.append(
              f"Sequential traverse iteration {self.iteration}."
          )
          report.append(f"Visit node: {node.name}")
  
          _LOGGER.info("Visit node: %s", node.name)
          cur_nodes: NodeSet = {node}
  
          if node in self.fusions:
              cur_nodes = self.fusions[node]
  
          try:
              split_module, submod_name = self._build_submodule(
                  cur_nodes
              )
              self._run_and_compare(
                  split_module, submod_name, [node.name]
              )
              self.print_report(report)
          except FxNetMinimizerResultMismatchError:
              culprits.add(node)
              report.append(f"Found culprit from numeric error: {node}")
              self.print_report(report)
              if not self.settings.find_all:
                  return culprits
          except FxNetMinimizerRunFuncError:
              culprits.update(cur_nodes)
              report.append(f"Found culprit from run error: {node}")
              self.print_report(report)
              if not self.settings.find_all:
                  return culprits
  
      return culprits
  
imports: import logging
  from dataclasses import dataclass
  from typing import Any, Callable, Dict, List, Optional, Tuple
  import torch
  import torch.fx
  from torch.fx._compatibility import compatibility
  from torch.fx.node import map_arg
  from .shape_prop import ShapeProp
  from .split_utils import split_by_tags
  from .tools_common import CALLABLE_NODE_OPS, FxNetAccFusionsFinder, Names, NodeList, NodeSet, TensorOrTensors, Tensors
label_desc: Use image node_id 11 for calling the _MinimizerBase obj's underlying member method code with example usage: obj._sequential_traverse(nodes) and returns: culprits, culprits, culprits