def __init__(
        self,
        model: "ExportedProgram",
        num_predict_intermediate_outputs: int = 20,
        target_device: Optional[Device] = None,
        **converter_kwargs,
    ):
        """
        Initialize the TorchExportMLModelComparator.

        Parameters
        ----------
        model : torch.export.ExportedProgram
            The ExportedProgram to be compared.

        num_predict_intermediate_outputs : int
            The number of intermediate outputs to retrieve in each ``MLModel`` prediction call. Defaults to 20.

        target_device : Optional[Device]
            The target device on which to run the Core ML model. If None, the current default device will be used.

        **converter_kwargs : Any
            Additional keyword arguments to be passed to the Core ML converter. These can include
            options like 'minimum_deployment_target', 'compute_units', etc., allowing for fine-tuning
            of the conversion process.

        """
        self.source_model = model
        self._source_model_inspector = _TorchFXNodeValueInterpreter(
            module=model.graph_module,
        )

        (
            target_model,
            source_to_target_ops_mapping,
        ) = _convert_and_retrieve_exported_program_op_mapping(
            model=model,
            **converter_kwargs,
        )

        self._source_to_target_ops_mapping = source_to_target_ops_mapping
        self.target_model = target_model

        self._target_model_inspector = MLModelInspector(
            model=self.target_model,
            function_name="main",
            device=target_device,
        )

        self._target_output_name_to_op_map = self._target_model_inspector.output_name_to_op_map
        self._target_model_input_names = _get_model_input_names(
            model=self.target_model,
            function_name="main",
        )

        self._source_outputs = {}
        self._target_outputs = {}
        self._num_predict_intermediate_outputs = num_predict_intermediate_outputs
        self._visited = set()

        Initialize the TorchExportMLModelComparator.

        Parameters
        ----------
        model : torch.export.ExportedProgram
            The ExportedProgram to be compared.

        num_predict_intermediate_outputs : int
            The number of intermediate outputs to retrieve in each ``MLModel`` prediction call. Defaults to 20.

        target_device : Optional[Device]
            The target device on which to run the Core ML model. If None, the current default device will be used.

        **converter_kwargs : Any
            Additional keyword arguments to be passed to the Core ML converter. These can include
            options like 'minimum_deployment_target', 'compute_units', etc., allowing for fine-tuning
            of the conversion process.

        
coremltools/models/ml_program/experimental/torch/debugging_utils.py