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

Method optimize

ppq/quantization/optim/refine.py:578–610  ·  view source on GitHub ↗
(self, graph: BaseGraph, **kwargs)

Source from the content-addressed store, hash-verified

576 super().__init__('Mish Fusion')
577
578 def optimize(self, graph: BaseGraph, **kwargs) -> None:
579 search_engine = SearchableGraph(graph)
580 patterns = search_engine.pattern_matching(
581 patterns = [lambda x: x.is_computing_op, 'Softplus', 'Tanh', 'Mul'],
582 edges = [[0, 1], [1, 2], [2, 3], [0, 3]],
583 exclusive = True)
584
585 for pattern in patterns:
586 if any([not isinstance(op, QuantableOperation) for op in pattern]):
587 ppq_warning(f'There is a pattern of mish activation in your network start from {pattern[0]}, '
588 'however part of your mish activation is not quantable, '
589 'so that graph fusion can not merge their quantization configuration.')
590 continue
591 if any([op.platform != pattern[0].platform for op in pattern]):
592 ppq_warning(f'There is a pattern of mish activation in your network start from {pattern[0]}, '
593 'however part of your mish activation is not quantable, '
594 'so that graph fusion can not merge their quantization configuration.')
595 continue
596 computing, softplus, tanh, mul = pattern
597
598 assert isinstance(computing, QuantableOperation)
599 assert isinstance(softplus, QuantableOperation)
600 assert isinstance(tanh, QuantableOperation)
601 assert isinstance(mul, QuantableOperation)
602
603 master_config = mul.config.output_quantization_config[0]
604 computing.config.output_quantization_config[0].dominated_by = master_config
605 tanh.config.input_quantization_config[0].dominated_by = master_config
606 tanh.config.output_quantization_config[0].dominated_by = master_config
607 softplus.config.input_quantization_config[0].dominated_by = master_config
608 softplus.config.output_quantization_config[0].dominated_by = master_config
609 mul.config.input_quantization_config[0].dominated_by = master_config
610 mul.config.input_quantization_config[1].dominated_by = master_config
611
612
613class NxpInputRoundingRefinePass(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