def _mark_fixed_qparams_modules_for_replacement(self, model: _fx.GraphModule):
        """
        If a fixed qparams activation is fused, with conv/linear, we need to make sure
        its qconfig is inherited by the fused op's activation quantizer. Before this step,
        all fused layers will have symmetric/affine activation quantizer.
        """
        for node in model.graph.nodes:
            if node.op == "call_module":
                layer = _find_target(model, node.target)
                if isinstance(layer, tuple(_fused_quantized_layers)):
                    # If output of this layer is being cat with another layer, we don't want
                    # to enforce that layer to use the same activation quantizer, so we ignore it
                    if _torch.cat in [
                        child_node.target for child_node in self._act_quant_groups[id(layer)]
                    ]:
                        continue
                    elif type(layer.act) in _fixed_qparams_modules:
                        act_post_process = self._qconfig_mapping.object_type_qconfigs[
                            type(layer.act)
                        ].activation()
                        self._mark_act_post_process_for_replacement(node, model, act_post_process)

        If a fixed qparams activation is fused, with conv/linear, we need to make sure
        its qconfig is inherited by the fused op's activation quantizer. Before this step,
        all fused layers will have symmetric/affine activation quantizer.
        
coremltools/optimize/torch/quantization/_configure.py