MCPcopy
hub / github.com/OpenPPL/ppq / optimize

Method optimize

ppq/quantization/optim/refine.py:541–571  ·  view source on GitHub ↗
(self, graph: BaseGraph,
                 dataloader: Iterable, executor: BaseGraphExecutor, **kwargs)

Source from the content-addressed store, hash-verified

539 super().__init__('Swish Fusion')
540
541 def optimize(self, graph: BaseGraph,
542 dataloader: Iterable, executor: BaseGraphExecutor, **kwargs) -> None:
543 search_engine = SearchableGraph(graph)
544 patterns = search_engine.pattern_matching(
545 patterns = [lambda x: x.is_computing_op, 'Sigmoid', 'Mul'],
546 edges = [[0, 1], [1, 2], [0, 2]],
547 exclusive = True)
548
549 for pattern in patterns:
550 if any([not isinstance(op, QuantableOperation) for op in pattern]):
551 ppq_warning(f'There is a pattern of swish activation in your network start from {pattern[0]}, '
552 'however part of your swish activation is not quantable, '
553 'so that graph fusion can not merge their quantization configuration.')
554 continue
555 if any([op.platform != pattern[0].platform for op in pattern]):
556 ppq_warning(f'There is a pattern of swish activation in your network start from {pattern[0]}, '
557 'however part of your swish activation is not quantable, '
558 'so that graph fusion can not merge their quantization configuration.')
559 continue
560 computing, sigmoid, mul = pattern
561
562 assert isinstance(computing, QuantableOperation)
563 assert isinstance(sigmoid, QuantableOperation)
564 assert isinstance(mul, QuantableOperation)
565
566 master_config = mul.config.output_quantization_config[0]
567 computing.config.output_quantization_config[0].dominated_by = master_config
568 sigmoid.config.input_quantization_config[0].dominated_by = master_config
569 sigmoid.config.output_quantization_config[0].dominated_by = master_config
570 mul.config.input_quantization_config[0].dominated_by = master_config
571 mul.config.input_quantization_config[1].dominated_by = master_config
572
573
574class MishFusionPass(QuantizationOptimizationPass):

Callers

nothing calls this directly

Calls 3

pattern_matchingMethod · 0.95
SearchableGraphClass · 0.90
ppq_warningFunction · 0.90

Tested by

no test coverage detected