mct-nightly 2.3.0.20250401.618__tar.gz → 2.3.0.20250403.518__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/PKG-INFO +1 -1
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/mct_nightly.egg-info/PKG-INFO +1 -1
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/mct_nightly.egg-info/SOURCES.txt +2 -1
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/__init__.py +1 -1
- mct_nightly-2.3.0.20250403.518/model_compression_toolkit/core/common/fusion/fusing_info.py +374 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/fusion/graph_fuser.py +50 -28
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/graph/base_graph.py +89 -12
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/mixed_precision/mixed_precision_search_facade.py +8 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/quantization/candidate_node_quantization_config.py +8 -6
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/substitutions/batchnorm_reconstruction.py +16 -1
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/graph_prep_runner.py +5 -2
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/runner.py +3 -4
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/target_platform_capabilities/schema/mct_current_schema.py +1 -1
- mct_nightly-2.3.0.20250403.518/model_compression_toolkit/target_platform_capabilities/schema/v2.py +177 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/target_platform_capabilities/targetplatform2framework/attach2keras.py +1 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/target_platform_capabilities/targetplatform2framework/attach2pytorch.py +2 -1
- mct_nightly-2.3.0.20250401.618/model_compression_toolkit/core/common/fusion/layer_fusing.py +0 -131
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/LICENSE.md +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/README.md +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/mct_nightly.egg-info/dependency_links.txt +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/mct_nightly.egg-info/requires.txt +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/mct_nightly.egg-info/top_level.txt +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/constants.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/analyzer.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/back2framework/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/back2framework/base_model_builder.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/base_substitutions.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/collectors/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/collectors/base_collector.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/collectors/histogram_collector.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/collectors/mean_collector.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/collectors/min_max_per_channel_collector.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/collectors/statistics_collector.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/collectors/weighted_histogram_collector.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/framework_implementation.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/framework_info.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/fusion/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/graph/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/graph/base_node.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/graph/edge.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/graph/functional_node.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/graph/graph_matchers.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/graph/graph_searches.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/graph/memory_graph/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/graph/memory_graph/bipartite_graph.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/graph/memory_graph/compute_graph_max_cut.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/graph/memory_graph/cut.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/graph/memory_graph/max_cut_astar.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/graph/memory_graph/memory_element.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/graph/memory_graph/memory_graph.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/graph/virtual_activation_weights_node.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/hessian/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/hessian/hessian_info_service.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/hessian/hessian_info_utils.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/hessian/hessian_scores_calculator.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/hessian/hessian_scores_request.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/matchers/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/matchers/base_graph_filter.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/matchers/base_matcher.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/matchers/edge_matcher.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/matchers/function.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/matchers/node_matcher.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/matchers/walk_matcher.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/memory_computation.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/mixed_precision/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/mixed_precision/bit_width_setter.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/mixed_precision/configurable_quant_id.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/mixed_precision/configurable_quantizer_utils.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/mixed_precision/distance_weighting.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/mixed_precision/mixed_precision_candidates_filter.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/mixed_precision/mixed_precision_quantization_config.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/mixed_precision/mixed_precision_ru_helper.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/mixed_precision/mixed_precision_search_manager.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/mixed_precision/resource_utilization_tools/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/mixed_precision/resource_utilization_tools/resource_utilization.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/mixed_precision/resource_utilization_tools/resource_utilization_calculator.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/mixed_precision/resource_utilization_tools/resource_utilization_data.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/mixed_precision/search_methods/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/mixed_precision/search_methods/linear_programming.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/mixed_precision/sensitivity_evaluation.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/mixed_precision/set_layer_to_bitwidth.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/mixed_precision/solution_refinement_procedure.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/model_builder_mode.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/model_collector.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/model_validation.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/network_editors/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/network_editors/actions.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/network_editors/edit_network.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/network_editors/node_filters.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/node_prior_info.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/pruning/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/pruning/channels_grouping.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/pruning/greedy_mask_calculator.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/pruning/importance_metrics/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/pruning/importance_metrics/base_importance_metric.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/pruning/importance_metrics/importance_metric_factory.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/pruning/importance_metrics/lfh_importance_metric.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/pruning/mask/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/pruning/mask/per_channel_mask.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/pruning/mask/per_simd_group_mask.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/pruning/memory_calculator.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/pruning/prune_graph.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/pruning/pruner.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/pruning/pruning_config.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/pruning/pruning_framework_implementation.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/pruning/pruning_info.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/pruning/pruning_section.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/quantization/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/quantization/bit_width_config.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/quantization/core_config.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/quantization/debug_config.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/quantization/filter_nodes_candidates.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/quantization/node_quantization_config.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/quantization/quantization_config.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/quantization/quantization_fn_selection.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/quantization/quantization_params_fn_selection.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/quantization/quantization_params_generation/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/quantization/quantization_params_generation/error_functions.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/quantization/quantization_params_generation/lut_kmeans_params.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/quantization/quantization_params_generation/outlier_filter.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/quantization/quantization_params_generation/power_of_two_selection.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/quantization/quantization_params_generation/qparams_activations_computation.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/quantization/quantization_params_generation/qparams_computation.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/quantization/quantization_params_generation/qparams_search.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/quantization/quantization_params_generation/qparams_weights_computation.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/quantization/quantization_params_generation/symmetric_selection.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/quantization/quantization_params_generation/uniform_selection.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/quantization/quantize_graph_weights.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/quantization/quantize_node.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/quantization/quantizers/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/quantization/quantizers/lut_kmeans_quantizer.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/quantization/quantizers/quantizers_helpers.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/quantization/quantizers/uniform_quantizers.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/quantization/set_node_quantization_config.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/similarity_analyzer.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/statistics_correction/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/statistics_correction/apply_activation_bias_correction_to_graph.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/statistics_correction/apply_bias_correction_to_graph.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/statistics_correction/apply_second_moment_correction_to_graph.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/statistics_correction/compute_activation_bias_correction_of_graph.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/statistics_correction/compute_bias_correction_of_graph.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/statistics_correction/statistics_correction.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/substitutions/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/substitutions/apply_substitutions.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/substitutions/batchnorm_folding.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/substitutions/batchnorm_refusing.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/substitutions/linear_collapsing.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/substitutions/linear_collapsing_substitution.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/substitutions/remove_identity.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/substitutions/residual_collapsing.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/substitutions/scale_equalization.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/substitutions/shift_negative_activation.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/substitutions/softmax_shift.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/substitutions/virtual_activation_weights_composition.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/substitutions/weights_activation_split.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/user_info.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/visualization/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/visualization/final_config_visualizer.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/visualization/nn_visualizer.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/common/visualization/tensorboard_writer.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/back2framework/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/back2framework/factory_model_builder.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/back2framework/float_model_builder.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/back2framework/instance_builder.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/back2framework/keras_model_builder.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/back2framework/mixed_precision_model_builder.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/back2framework/quantized_model_builder.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/constants.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/custom_layer_validation.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/data_util.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/default_framework_info.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/graph_substitutions/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/activation_decomposition.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/batchnorm_folding.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/batchnorm_reconstruction.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/batchnorm_refusing.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/concat_threshold_update.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/conv_funcs_to_layer.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/dwconv_to_conv.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/input_scaling.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/linear_collapsing.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/matmul_substitution.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/multi_head_attention_decomposition.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/relu_bound_to_power_of_2.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/remove_identity.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/residual_collapsing.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/scale_equalization.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/separableconv_decomposition.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/shift_negative_activation.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/sigmoid_mul_to_swish.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/softmax_shift.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/virtual_activation_weights_composition.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/weights_activation_split.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/hessian/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/hessian/activation_hessian_scores_calculator_keras.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/hessian/hessian_scores_calculator_keras.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/hessian/weights_hessian_scores_calculator_keras.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/keras_implementation.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/keras_model_validation.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/keras_node_prior_info.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/mixed_precision/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/mixed_precision/configurable_activation_quantizer.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/mixed_precision/configurable_weights_quantizer.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/pruning/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/pruning/pruning_keras_implementation.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/quantizer/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/quantizer/fake_quant_builder.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/quantizer/lut_fake_quant.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/reader/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/reader/common.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/reader/connectivity_handler.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/reader/nested_model/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/reader/nested_model/edges_merger.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/reader/nested_model/nested_model_handler.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/reader/nested_model/nodes_merger.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/reader/nested_model/outputs_merger.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/reader/node_builder.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/reader/reader.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/resource_utilization_data_facade.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/statistics_correction/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/statistics_correction/apply_second_moment_correction.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/statistics_correction/keras_compute_activation_bias_correction_of_graph.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/tf_tensor_numpy.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/keras/visualization/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/back2framework/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/back2framework/factory_model_builder.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/back2framework/float_model_builder.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/back2framework/instance_builder.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/back2framework/mixed_precision_model_builder.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/back2framework/pytorch_model_builder.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/back2framework/quantization_wrapper/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/back2framework/quantization_wrapper/quantized_layer_wrapper.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/back2framework/quantization_wrapper/wrapper_quantize_config.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/back2framework/quantized_model_builder.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/constants.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/data_util.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/default_framework_info.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/graph_substitutions/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/batchnorm_folding.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/batchnorm_reconstruction.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/batchnorm_refusing.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/concat_threshold_update.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/const_holder_conv.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/convtranspose_dynamic_padding.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/functional_batch_norm.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/functional_layer_norm.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/functional_linear.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/linear_collapsing.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/matmul_decomposition.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/multi_head_attention_decomposition.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/relu_bound_to_power_of_2.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/remove_identity.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/reshape_with_static_shapes.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/residual_collapsing.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/scale_equalization.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/scaled_dot_product_attention.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/shift_negative_activation.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/softmax_shift.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/transform_function_call_method.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/virtual_activation_weights_composition.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/weights_activation_split.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/hessian/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/hessian/activation_hessian_scores_calculator_pytorch.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/hessian/hessian_scores_calculator_pytorch.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/hessian/weights_hessian_scores_calculator_pytorch.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/mixed_precision/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/mixed_precision/configurable_activation_quantizer.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/mixed_precision/configurable_weights_quantizer.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/pruning/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/pruning/pruning_pytorch_implementation.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/pytorch_device_config.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/pytorch_implementation.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/pytorch_node_prior_info.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/quantizer/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/quantizer/fake_quant_builder.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/quantizer/lut_fake_quant.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/reader/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/reader/graph_builders.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/reader/node_holders.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/reader/reader.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/resource_utilization_data_facade.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/statistics_correction/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/statistics_correction/apply_second_moment_correction.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/statistics_correction/pytorch_compute_activation_bias_correction_of_graph.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/pytorch/utils.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/core/quantization_prep_runner.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/data_generation/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/data_generation/common/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/data_generation/common/constants.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/data_generation/common/data_generation.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/data_generation/common/data_generation_config.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/data_generation/common/enums.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/data_generation/common/image_pipeline.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/data_generation/common/model_info_exctractors.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/data_generation/common/optimization_utils.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/data_generation/keras/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/data_generation/keras/constants.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/data_generation/keras/image_operations.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/data_generation/keras/image_pipeline.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/data_generation/keras/keras_data_generation.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/data_generation/keras/model_info_exctractors.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/data_generation/keras/optimization_functions/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/data_generation/keras/optimization_functions/batchnorm_alignment_functions.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/data_generation/keras/optimization_functions/bn_layer_weighting_functions.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/data_generation/keras/optimization_functions/image_initilization.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/data_generation/keras/optimization_functions/lr_scheduler.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/data_generation/keras/optimization_functions/output_loss_functions.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/data_generation/keras/optimization_functions/scheduler_step_functions.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/data_generation/keras/optimization_utils.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/data_generation/pytorch/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/data_generation/pytorch/constants.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/data_generation/pytorch/image_operations.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/data_generation/pytorch/image_pipeline.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/data_generation/pytorch/model_info_exctractors.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/data_generation/pytorch/optimization_functions/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/data_generation/pytorch/optimization_functions/batchnorm_alignment_functions.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/data_generation/pytorch/optimization_functions/bn_layer_weighting_functions.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/data_generation/pytorch/optimization_functions/image_initilization.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/data_generation/pytorch/optimization_functions/lr_scheduler.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/data_generation/pytorch/optimization_functions/output_loss_functions.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/data_generation/pytorch/optimization_functions/scheduler_step_functions.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/data_generation/pytorch/optimization_utils.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/data_generation/pytorch/pytorch_data_generation.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/defaultdict.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/exporter/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/exporter/model_exporter/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/exporter/model_exporter/fw_agonstic/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/exporter/model_exporter/fw_agonstic/exporter.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/exporter/model_exporter/fw_agonstic/quantization_format.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/exporter/model_exporter/keras/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/exporter/model_exporter/keras/base_keras_exporter.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/exporter/model_exporter/keras/export_serialization_format.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/exporter/model_exporter/keras/fakely_quant_keras_exporter.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/exporter/model_exporter/keras/fakely_quant_tflite_exporter.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/exporter/model_exporter/keras/int8_tflite_exporter.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/exporter/model_exporter/keras/keras_export_facade.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/exporter/model_exporter/keras/mctq_keras_exporter.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/exporter/model_exporter/pytorch/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/exporter/model_exporter/pytorch/base_pytorch_exporter.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/exporter/model_exporter/pytorch/export_serialization_format.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/exporter/model_exporter/pytorch/fakely_quant_onnx_pytorch_exporter.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/exporter/model_exporter/pytorch/fakely_quant_torchscript_pytorch_exporter.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/exporter/model_exporter/pytorch/pytorch_export_facade.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/exporter/model_wrapper/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/exporter/model_wrapper/fw_agnostic/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/exporter/model_wrapper/fw_agnostic/get_inferable_quantizers.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/exporter/model_wrapper/keras/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/exporter/model_wrapper/keras/builder/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/exporter/model_wrapper/keras/builder/fully_quantized_model_builder.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/exporter/model_wrapper/keras/builder/node_to_quantizer.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/exporter/model_wrapper/keras/validate_layer.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/exporter/model_wrapper/pytorch/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/exporter/model_wrapper/pytorch/builder/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/exporter/model_wrapper/pytorch/builder/fully_quantized_model_builder.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/exporter/model_wrapper/pytorch/builder/node_to_quantizer.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/exporter/model_wrapper/pytorch/validate_layer.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/gptq/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/gptq/common/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/gptq/common/gptq_config.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/gptq/common/gptq_constants.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/gptq/common/gptq_framework_implementation.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/gptq/common/gptq_graph.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/gptq/common/gptq_training.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/gptq/common/gradual_activation_quantization.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/gptq/common/regularization_factory.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/gptq/keras/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/gptq/keras/gptq_keras_implementation.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/gptq/keras/gptq_loss.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/gptq/keras/gptq_training.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/gptq/keras/graph_info.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/gptq/keras/quantization_facade.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/gptq/keras/quantizer/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/gptq/keras/quantizer/base_keras_gptq_quantizer.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/gptq/keras/quantizer/quant_utils.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/gptq/keras/quantizer/quantization_builder.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/gptq/keras/quantizer/soft_rounding/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/gptq/keras/quantizer/soft_rounding/soft_quantizer_reg.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/gptq/keras/quantizer/soft_rounding/symmetric_soft_quantizer.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/gptq/keras/quantizer/soft_rounding/uniform_soft_quantizer.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/gptq/keras/quantizer/ste_rounding/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/gptq/keras/quantizer/ste_rounding/symmetric_ste.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/gptq/pytorch/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/gptq/pytorch/gptq_loss.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/gptq/pytorch/gptq_pytorch_implementation.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/gptq/pytorch/gptq_training.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/gptq/pytorch/graph_info.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/gptq/pytorch/quantization_facade.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/gptq/pytorch/quantizer/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/gptq/pytorch/quantizer/base_pytorch_gptq_quantizer.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/gptq/pytorch/quantizer/quant_utils.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/gptq/pytorch/quantizer/quantization_builder.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/gptq/pytorch/quantizer/soft_rounding/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/gptq/pytorch/quantizer/soft_rounding/soft_quantizer_reg.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/gptq/pytorch/quantizer/soft_rounding/symmetric_soft_quantizer.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/gptq/pytorch/quantizer/soft_rounding/uniform_soft_quantizer.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/gptq/pytorch/quantizer/ste_rounding/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/gptq/pytorch/quantizer/ste_rounding/symmetric_ste.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/gptq/runner.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/logger.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/metadata.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/pruning/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/pruning/keras/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/pruning/keras/pruning_facade.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/pruning/pytorch/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/pruning/pytorch/pruning_facade.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/ptq/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/ptq/keras/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/ptq/keras/quantization_facade.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/ptq/pytorch/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/ptq/pytorch/quantization_facade.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/ptq/runner.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/qat/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/qat/common/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/qat/common/qat_config.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/qat/keras/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/qat/keras/quantization_facade.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/qat/keras/quantizer/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/qat/keras/quantizer/base_keras_qat_weight_quantizer.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/qat/keras/quantizer/lsq/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/qat/keras/quantizer/lsq/symmetric_lsq.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/qat/keras/quantizer/lsq/uniform_lsq.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/qat/keras/quantizer/quant_utils.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/qat/keras/quantizer/quantization_builder.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/qat/keras/quantizer/ste_rounding/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/qat/keras/quantizer/ste_rounding/symmetric_ste.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/qat/keras/quantizer/ste_rounding/uniform_ste.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/qat/pytorch/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/qat/pytorch/quantization_facade.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/qat/pytorch/quantizer/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/qat/pytorch/quantizer/base_pytorch_qat_weight_quantizer.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/qat/pytorch/quantizer/lsq/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/qat/pytorch/quantizer/lsq/symmetric_lsq.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/qat/pytorch/quantizer/lsq/uniform_lsq.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/qat/pytorch/quantizer/quantization_builder.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/qat/pytorch/quantizer/ste_rounding/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/qat/pytorch/quantizer/ste_rounding/symmetric_ste.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/qat/pytorch/quantizer/ste_rounding/uniform_ste.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/target_platform_capabilities/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/target_platform_capabilities/constants.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/target_platform_capabilities/immutable.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/target_platform_capabilities/schema/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/target_platform_capabilities/schema/schema_functions.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/target_platform_capabilities/schema/v1.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/target_platform_capabilities/targetplatform2framework/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/target_platform_capabilities/targetplatform2framework/attach2fw.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/target_platform_capabilities/targetplatform2framework/attribute_filter.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/target_platform_capabilities/targetplatform2framework/current_tpc.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/target_platform_capabilities/targetplatform2framework/framework_quantization_capabilities.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/target_platform_capabilities/targetplatform2framework/framework_quantization_capabilities_component.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/target_platform_capabilities/targetplatform2framework/layer_filter_params.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/target_platform_capabilities/targetplatform2framework/operations_to_layers.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/target_platform_capabilities/tpc_io_handler.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/target_platform_capabilities/tpc_models/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/target_platform_capabilities/tpc_models/get_target_platform_capabilities.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/latest/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/tpc.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/latest/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/tpc.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/latest/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/tpc.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/trainable_infrastructure/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/trainable_infrastructure/common/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/trainable_infrastructure/common/annealing_schedulers.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/trainable_infrastructure/common/base_trainable_quantizer.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/trainable_infrastructure/common/constants.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/trainable_infrastructure/common/get_quantizer_config.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/trainable_infrastructure/common/get_quantizers.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/trainable_infrastructure/common/quant_utils.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/trainable_infrastructure/common/trainable_quantizer_config.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/trainable_infrastructure/common/training_method.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/trainable_infrastructure/common/util.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/trainable_infrastructure/keras/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/trainable_infrastructure/keras/activation_quantizers/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/trainable_infrastructure/keras/activation_quantizers/base_activation_quantizer.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/trainable_infrastructure/keras/activation_quantizers/lsq/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/trainable_infrastructure/keras/activation_quantizers/lsq/symmetric_lsq.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/trainable_infrastructure/keras/activation_quantizers/lsq/uniform_lsq.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/trainable_infrastructure/keras/activation_quantizers/ste/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/trainable_infrastructure/keras/activation_quantizers/ste/symmetric_ste.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/trainable_infrastructure/keras/activation_quantizers/ste/uniform_ste.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/trainable_infrastructure/keras/annealing_schedulers.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/trainable_infrastructure/keras/base_keras_quantizer.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/trainable_infrastructure/keras/config_serialization.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/trainable_infrastructure/keras/load_model.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/trainable_infrastructure/keras/quantize_wrapper.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/trainable_infrastructure/keras/quantizer_utils.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/trainable_infrastructure/pytorch/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/trainable_infrastructure/pytorch/activation_quantizers/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/trainable_infrastructure/pytorch/activation_quantizers/base_activation_quantizer.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/trainable_infrastructure/pytorch/activation_quantizers/lsq/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/trainable_infrastructure/pytorch/activation_quantizers/lsq/symmetric_lsq.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/trainable_infrastructure/pytorch/activation_quantizers/lsq/uniform_lsq.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/trainable_infrastructure/pytorch/activation_quantizers/ste/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/trainable_infrastructure/pytorch/activation_quantizers/ste/symmetric_ste.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/trainable_infrastructure/pytorch/activation_quantizers/ste/uniform_ste.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/trainable_infrastructure/pytorch/annealing_schedulers.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/trainable_infrastructure/pytorch/base_pytorch_quantizer.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/trainable_infrastructure/pytorch/quantizer_utils.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/verify_packages.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/xquant/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/xquant/common/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/xquant/common/constants.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/xquant/common/core_report_generator.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/xquant/common/dataset_utils.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/xquant/common/framework_report_utils.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/xquant/common/model_analyzer.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/xquant/common/model_folding_utils.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/xquant/common/similarity_calculator.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/xquant/common/similarity_functions.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/xquant/common/tensorboard_utils.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/xquant/common/xquant_config.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/xquant/keras/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/xquant/keras/dataset_utils.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/xquant/keras/facade_xquant_report.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/xquant/keras/keras_report_utils.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/xquant/keras/model_analyzer.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/xquant/keras/similarity_functions.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/xquant/keras/tensorboard_utils.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/xquant/pytorch/__init__.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/xquant/pytorch/dataset_utils.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/xquant/pytorch/facade_xquant_report.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/xquant/pytorch/model_analyzer.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/xquant/pytorch/pytorch_report_utils.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/xquant/pytorch/similarity_functions.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/model_compression_toolkit/xquant/pytorch/tensorboard_utils.py +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/setup.cfg +0 -0
- {mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/setup.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: mct-nightly
|
3
|
-
Version: 2.3.0.
|
3
|
+
Version: 2.3.0.20250403.518
|
4
4
|
Summary: A Model Compression Toolkit for neural networks
|
5
5
|
Classifier: Programming Language :: Python :: 3
|
6
6
|
Classifier: License :: OSI Approved :: Apache Software License
|
{mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/mct_nightly.egg-info/PKG-INFO
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: mct-nightly
|
3
|
-
Version: 2.3.0.
|
3
|
+
Version: 2.3.0.20250403.518
|
4
4
|
Summary: A Model Compression Toolkit for neural networks
|
5
5
|
Classifier: Programming Language :: Python :: 3
|
6
6
|
Classifier: License :: OSI Approved :: Apache Software License
|
{mct_nightly-2.3.0.20250401.618 → mct_nightly-2.3.0.20250403.518}/mct_nightly.egg-info/SOURCES.txt
RENAMED
@@ -39,8 +39,8 @@ model_compression_toolkit/core/common/collectors/min_max_per_channel_collector.p
|
|
39
39
|
model_compression_toolkit/core/common/collectors/statistics_collector.py
|
40
40
|
model_compression_toolkit/core/common/collectors/weighted_histogram_collector.py
|
41
41
|
model_compression_toolkit/core/common/fusion/__init__.py
|
42
|
+
model_compression_toolkit/core/common/fusion/fusing_info.py
|
42
43
|
model_compression_toolkit/core/common/fusion/graph_fuser.py
|
43
|
-
model_compression_toolkit/core/common/fusion/layer_fusing.py
|
44
44
|
model_compression_toolkit/core/common/graph/__init__.py
|
45
45
|
model_compression_toolkit/core/common/graph/base_graph.py
|
46
46
|
model_compression_toolkit/core/common/graph/base_node.py
|
@@ -446,6 +446,7 @@ model_compression_toolkit/target_platform_capabilities/schema/__init__.py
|
|
446
446
|
model_compression_toolkit/target_platform_capabilities/schema/mct_current_schema.py
|
447
447
|
model_compression_toolkit/target_platform_capabilities/schema/schema_functions.py
|
448
448
|
model_compression_toolkit/target_platform_capabilities/schema/v1.py
|
449
|
+
model_compression_toolkit/target_platform_capabilities/schema/v2.py
|
449
450
|
model_compression_toolkit/target_platform_capabilities/targetplatform2framework/__init__.py
|
450
451
|
model_compression_toolkit/target_platform_capabilities/targetplatform2framework/attach2fw.py
|
451
452
|
model_compression_toolkit/target_platform_capabilities/targetplatform2framework/attach2keras.py
|
@@ -27,4 +27,4 @@ from model_compression_toolkit import data_generation
|
|
27
27
|
from model_compression_toolkit import pruning
|
28
28
|
from model_compression_toolkit.trainable_infrastructure.keras.load_model import keras_load_quantized_model
|
29
29
|
|
30
|
-
__version__ = "2.3.0.
|
30
|
+
__version__ = "2.3.0.20250403.000518"
|
@@ -0,0 +1,374 @@
|
|
1
|
+
# Copyright 2025 Sony Semiconductor Israel, Inc. All rights reserved.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
# ==============================================================================
|
15
|
+
|
16
|
+
from model_compression_toolkit.target_platform_capabilities import LayerFilterParams
|
17
|
+
from dataclasses import dataclass, field
|
18
|
+
|
19
|
+
from typing import Optional, List, Dict, Any, Tuple
|
20
|
+
import copy
|
21
|
+
|
22
|
+
# The prefix of each fused operator (the suffix is a combination of the
|
23
|
+
# nodes names that combine the fused operator).
|
24
|
+
FUSED_OP_ID_PREFIX = "FusedNode_"
|
25
|
+
|
26
|
+
|
27
|
+
@dataclass
|
28
|
+
class FusingInfo:
|
29
|
+
"""
|
30
|
+
This class manages information about fused operations in a graph.
|
31
|
+
|
32
|
+
The key responsibility of this class is maintaining a mapping between original nodes
|
33
|
+
and their corresponding fused operation IDs. This mapping helps track which nodes
|
34
|
+
belong to fused operations and validate this info is correct after changes in the graph.
|
35
|
+
|
36
|
+
The core structures maintained are:
|
37
|
+
- `fusing_data`: A dictionary mapping fused operation IDs to lists of nodes that belong to that operation.
|
38
|
+
- `node_to_fused_node_map`: A dictionary mapping each node name to the ID of the fused operation it belongs to.
|
39
|
+
|
40
|
+
"""
|
41
|
+
fusing_patterns: any = None
|
42
|
+
fusing_data: Dict[str, Tuple['BaseNode']] = field(default_factory=dict)
|
43
|
+
node_to_fused_node_map: Dict[str, str] = field(init=False, default_factory=dict)
|
44
|
+
|
45
|
+
def __post_init__(self):
|
46
|
+
"""Validates and initializes mappings after dataclass instantiation."""
|
47
|
+
for op_id, op_nodes in self.fusing_data.items():
|
48
|
+
assert isinstance(op_id, str) and op_id.startswith(FUSED_OP_ID_PREFIX), f"Found invalid fused op id: {op_id}"
|
49
|
+
assert isinstance(op_nodes, tuple) and len(op_nodes) > 1, f"Found invalid fused op nodes: {op_nodes}"
|
50
|
+
|
51
|
+
self._init_node_mapping()
|
52
|
+
|
53
|
+
def _init_node_mapping(self) -> None:
|
54
|
+
"""
|
55
|
+
Init the node-to-fused-node mapping based on the initial fusing data.
|
56
|
+
"""
|
57
|
+
self.node_to_fused_node_map.clear()
|
58
|
+
for op_id, nodes in self.fusing_data.items():
|
59
|
+
for node in nodes:
|
60
|
+
self.node_to_fused_node_map[node.name] = op_id
|
61
|
+
|
62
|
+
def add_fused_operation(self, op_id: str, nodes: Tuple['BaseNode']) -> None:
|
63
|
+
"""
|
64
|
+
Add a new fused operation with the given ID and set of nodes.
|
65
|
+
|
66
|
+
Args:
|
67
|
+
op_id (str): The identifier for the fused operation.
|
68
|
+
nodes (Tuple[BaseNode]): The tuple of nodes that form the fused operation.
|
69
|
+
|
70
|
+
Raises:
|
71
|
+
ValueError: If the operation ID already exists.
|
72
|
+
"""
|
73
|
+
if op_id in self.fusing_data:
|
74
|
+
raise ValueError(f"Fused operation {op_id} already exists.")
|
75
|
+
assert isinstance(nodes, tuple), f"Expected nodes to be a tuple but its type is {type(nodes)}"
|
76
|
+
self.fusing_data[op_id] = nodes
|
77
|
+
# Update the mapping for these nodes
|
78
|
+
for node in nodes:
|
79
|
+
self.node_to_fused_node_map[node.name] = op_id
|
80
|
+
|
81
|
+
def remove_fused_operation(self, op_id: str) -> None:
|
82
|
+
"""
|
83
|
+
Remove a fused operation by its ID.
|
84
|
+
|
85
|
+
Args:
|
86
|
+
op_id (str): The identifier for the fused operation to remove.
|
87
|
+
|
88
|
+
Raises:
|
89
|
+
ValueError: If the operation ID does not exist.
|
90
|
+
"""
|
91
|
+
if op_id not in self.fusing_data:
|
92
|
+
raise ValueError(f"Fused operation {op_id} does not exist.")
|
93
|
+
# Remove nodes from the mapping
|
94
|
+
nodes = self.fusing_data[op_id]
|
95
|
+
for node in nodes:
|
96
|
+
self.node_to_fused_node_map.pop(node.name, None)
|
97
|
+
del self.fusing_data[op_id]
|
98
|
+
|
99
|
+
def get_fused_node_name(self, node_name: str) -> Optional[str]:
|
100
|
+
"""
|
101
|
+
Get the name of the fused node containing the given original node name.
|
102
|
+
|
103
|
+
Args:
|
104
|
+
node_name: The name of a node from the original graph.
|
105
|
+
|
106
|
+
Returns:
|
107
|
+
The name of the fused node containing this node, or None if not fused.
|
108
|
+
"""
|
109
|
+
return self.node_to_fused_node_map.get(node_name)
|
110
|
+
|
111
|
+
def get_node_to_fused_node_map(self) -> Dict[str, str]:
|
112
|
+
"""
|
113
|
+
Retrieve a copy of the mapping from original node names to fused node names.
|
114
|
+
|
115
|
+
Returns:
|
116
|
+
A dictionary mapping each original node name to its fused node name.
|
117
|
+
"""
|
118
|
+
return self.node_to_fused_node_map.copy()
|
119
|
+
|
120
|
+
def get_fused_nodes(self, op_id: str) -> Optional[List['BaseNode']]:
|
121
|
+
"""
|
122
|
+
Retrieve the list of nodes for a given fused operation ID.
|
123
|
+
|
124
|
+
Args:
|
125
|
+
op_id (str): The identifier for the fused operation.
|
126
|
+
|
127
|
+
Returns:
|
128
|
+
Optional[List[BaseNode]]: The list of nodes for the operation, or None if not found.
|
129
|
+
"""
|
130
|
+
return self.fusing_data.get(op_id)
|
131
|
+
|
132
|
+
def is_node_in_fused_op(self, node: 'BaseNode') -> bool:
|
133
|
+
"""
|
134
|
+
Check if a node is part of any fused operation.
|
135
|
+
|
136
|
+
Args:
|
137
|
+
node (BaseNode): The node to check.
|
138
|
+
|
139
|
+
Returns:
|
140
|
+
bool: True if the node is in any fused operation, False otherwise.
|
141
|
+
"""
|
142
|
+
return any(node in nodes for nodes in self.fusing_data.values())
|
143
|
+
|
144
|
+
def get_all_fused_operations(self) -> Dict[str, Tuple['BaseNode']]:
|
145
|
+
"""
|
146
|
+
Retrieve fused information.
|
147
|
+
|
148
|
+
Returns:
|
149
|
+
Dict[str, List[BaseNode]]: The fusing data.
|
150
|
+
"""
|
151
|
+
return self.fusing_data
|
152
|
+
|
153
|
+
|
154
|
+
@staticmethod
|
155
|
+
def generate_fused_op_id(nodes: List['BaseNode']) -> str:
|
156
|
+
"""
|
157
|
+
Generates an identifier for a fused operation by concatenating
|
158
|
+
the names of the given nodes with a prefix.
|
159
|
+
|
160
|
+
Args:
|
161
|
+
nodes (List[BaseNode]): A list of nodes to be fused.
|
162
|
+
|
163
|
+
Returns:
|
164
|
+
str: An identifier string for the fused operation.
|
165
|
+
"""
|
166
|
+
id = FUSED_OP_ID_PREFIX + '_'.join([node.name for node in nodes])
|
167
|
+
return id
|
168
|
+
|
169
|
+
def validate(self, graph) -> None:
|
170
|
+
"""
|
171
|
+
Validate that the fusing information is consistent with the given graph and generation logic.
|
172
|
+
|
173
|
+
This method performs the following checks:
|
174
|
+
1. All nodes in the fusing data exist in the graph.
|
175
|
+
2. Each fused sequence forms a valid linear chain in the graph:
|
176
|
+
- Each node (except the last) has exactly one successor, which is the next node in the sequence.
|
177
|
+
3. No node is part of more than one fused operation.
|
178
|
+
4. Each fused sequence matches a valid fusing pattern from the original set.
|
179
|
+
|
180
|
+
Args:
|
181
|
+
graph: The computational graph to validate against. It is expected to have:
|
182
|
+
- `get_topo_sorted_nodes()`: Returns a list of nodes in topological order.
|
183
|
+
- `get_next_nodes(node)`: Returns a list of direct successor nodes.
|
184
|
+
|
185
|
+
Raises:
|
186
|
+
ValueError: If any validation check fails.
|
187
|
+
"""
|
188
|
+
graph_nodes = set(graph.get_topo_sorted_nodes()) # Retrieve all nodes from the graph
|
189
|
+
all_fused_nodes = set() # Track all nodes used in fusions to ensure no overlap
|
190
|
+
|
191
|
+
for op_id, nodes in self.fusing_data.items():
|
192
|
+
# Check 1: Ensure all fused nodes exist in the graph
|
193
|
+
for node in nodes:
|
194
|
+
if node not in graph_nodes:
|
195
|
+
raise ValueError(f"Fused operation {op_id} contains node {node.name} not present in the graph.")
|
196
|
+
|
197
|
+
# Check 2: Validate the fusion sequence forms a valid linear chain
|
198
|
+
for i in range(len(nodes) - 1): # Up to the second-to-last node
|
199
|
+
current_node = nodes[i]
|
200
|
+
next_node = nodes[i + 1]
|
201
|
+
successors = graph.get_next_nodes(current_node)
|
202
|
+
if len(successors) != 1 or successors[0] != next_node:
|
203
|
+
raise ValueError(
|
204
|
+
f"Fused operation {op_id} is not a valid linear chain: "
|
205
|
+
f"node {current_node.name} does not connect directly to {next_node.name} "
|
206
|
+
f"with exactly one successor (found successors: {[n.name for n in successors]})."
|
207
|
+
)
|
208
|
+
|
209
|
+
# Check 3: Ensure no node is reused across fusions
|
210
|
+
node_set = set(nodes)
|
211
|
+
overlap = node_set & all_fused_nodes
|
212
|
+
if overlap:
|
213
|
+
raise ValueError(
|
214
|
+
f"Fused operation {op_id} contains nodes already used in another fusion: "
|
215
|
+
f"{[node.name for node in overlap]}."
|
216
|
+
)
|
217
|
+
all_fused_nodes.update(node_set)
|
218
|
+
|
219
|
+
# Check 4: Ensure the sequence matches a valid fusing pattern
|
220
|
+
if not is_valid_fusion(self.fusing_patterns, nodes):
|
221
|
+
raise ValueError(
|
222
|
+
f"Fused operation {op_id} does not match any valid fusing pattern "
|
223
|
+
f"from {self.fusing_patterns}."
|
224
|
+
)
|
225
|
+
|
226
|
+
def is_nodes_eligible_to_be_fused(self, nodes: List['BaseNode']) -> bool:
|
227
|
+
"""
|
228
|
+
Check whether the given nodes are eligible to be fused based on predefined fusing patterns.
|
229
|
+
|
230
|
+
This method retrieves the fusing patterns from `self.fqc` and verifies whether the
|
231
|
+
given sequence of nodes matches any of the valid patterns.
|
232
|
+
|
233
|
+
Args:
|
234
|
+
nodes (List[BaseNode]): The list of nodes to check for fusion eligibility.
|
235
|
+
|
236
|
+
Returns:
|
237
|
+
bool: True if the nodes can be fused according to fusing patterns, otherwise False.
|
238
|
+
"""
|
239
|
+
# If no fusing patterns are defined, fusion is not possible
|
240
|
+
if not self.fusing_patterns:
|
241
|
+
return False
|
242
|
+
|
243
|
+
# Check if the provided nodes match a valid fusion pattern
|
244
|
+
return is_valid_fusion(fusing_patterns=self.fusing_patterns, nodes=nodes)
|
245
|
+
|
246
|
+
def __repr__(self) -> str:
|
247
|
+
"""
|
248
|
+
Return a string representation of the fusing information.
|
249
|
+
"""
|
250
|
+
fusing_data_repr = "\n".join(
|
251
|
+
f" {op_id}: [{', '.join(node.name for node in nodes)}]"
|
252
|
+
for op_id, nodes in self.fusing_data.items()
|
253
|
+
)
|
254
|
+
mapping_repr = ", ".join(
|
255
|
+
f"{node} -> {op_id}" for node, op_id in self.node_to_fused_node_map.items()
|
256
|
+
)
|
257
|
+
return (
|
258
|
+
f"FusingInfo(\n"
|
259
|
+
f" Total fused operations: {len(self.fusing_data)}\n"
|
260
|
+
f" Fusing Data:\n{fusing_data_repr}\n"
|
261
|
+
f" Node-to-Fused Mapping:\n {mapping_repr}\n"
|
262
|
+
f")"
|
263
|
+
)
|
264
|
+
|
265
|
+
|
266
|
+
class FusingInfoGenerator:
|
267
|
+
def __init__(self, fusing_patterns):
|
268
|
+
self._fusing_patterns = fusing_patterns
|
269
|
+
|
270
|
+
def generate_fusing_info(self, graph) -> FusingInfo:
|
271
|
+
"""
|
272
|
+
Generate fusing information based on the graph and fusing patterns.
|
273
|
+
|
274
|
+
Args:
|
275
|
+
graph: The input graph to analyze, expected to have methods like
|
276
|
+
get_topo_sorted_nodes() and get_next_nodes(node).
|
277
|
+
|
278
|
+
Returns:
|
279
|
+
A dictionary where keys are unique fusion identifiers (e.g., 'fused_op_0')
|
280
|
+
and values are lists of BaseNode objects representing nodes in that fusion.
|
281
|
+
|
282
|
+
Notes:
|
283
|
+
- Assumes get_valid_fusing_patterns_for_node and is_valid_fusion functions are defined elsewhere.
|
284
|
+
- Nodes are processed in topological order to respect operation sequence.
|
285
|
+
- Fusions are linear sequences (each node has exactly one successor).
|
286
|
+
- Each node belongs to at most one fused operation.
|
287
|
+
"""
|
288
|
+
if not self._fusing_patterns:
|
289
|
+
return FusingInfo(fusing_patterns=self._fusing_patterns)
|
290
|
+
|
291
|
+
# Find max fusion
|
292
|
+
max_layers_fusing = 0 if len(self._fusing_patterns) == 0 else max([len(fusing_pattern) for fusing_pattern in self._fusing_patterns])
|
293
|
+
|
294
|
+
# Travel along the graph to find layers for fusing
|
295
|
+
nodes = graph.get_topo_sorted_nodes()
|
296
|
+
|
297
|
+
fusing_info: Dict[str, Tuple['BaseNode']] = {}
|
298
|
+
fused_nodes = [] # nodes that are participating in fusing
|
299
|
+
|
300
|
+
for node in nodes:
|
301
|
+
# Skip if already in fusing
|
302
|
+
if node in fused_nodes:
|
303
|
+
continue
|
304
|
+
# Start fusing search
|
305
|
+
fusing_nodes = [] # nodes that are candidates for participating in fusing
|
306
|
+
patterns = copy.deepcopy(self._fusing_patterns)
|
307
|
+
next_nodes = [node]
|
308
|
+
for i in range(max_layers_fusing):
|
309
|
+
patterns = get_valid_fusing_patterns_for_node(patterns, next_nodes[0], i)
|
310
|
+
if len(patterns) == 0: # Give up if no more fusion pattern
|
311
|
+
break
|
312
|
+
fusing_nodes.append(next_nodes[0])
|
313
|
+
next_nodes = graph.get_next_nodes(fusing_nodes[-1])
|
314
|
+
if len(next_nodes) != 1: # Give up if node has more than one connection (not supported for fusion)
|
315
|
+
break
|
316
|
+
|
317
|
+
# New fusion
|
318
|
+
if is_valid_fusion(self._fusing_patterns, fusing_nodes):
|
319
|
+
fused_op_id = FusingInfo.generate_fused_op_id(fusing_nodes)
|
320
|
+
assert fused_op_id not in fusing_info, f"{fused_op_id} is already in fusing info: {fusing_info}"
|
321
|
+
fusing_info[fused_op_id] = tuple(fusing_nodes)
|
322
|
+
fused_nodes.extend(fusing_nodes)
|
323
|
+
|
324
|
+
return FusingInfo(fusing_data=fusing_info, fusing_patterns=self._fusing_patterns)
|
325
|
+
|
326
|
+
|
327
|
+
def get_valid_fusing_patterns_for_node(fusing_patterns: List[List[Any]],
|
328
|
+
node: 'BaseNode',
|
329
|
+
idx: int = 0) -> List[List[Any]]:
|
330
|
+
"""
|
331
|
+
Returns only the fusing patterns where a specific layer (at index idx) matches the given node — either by type or filter params.
|
332
|
+
|
333
|
+
Args:
|
334
|
+
fusing_patterns: supported fusings
|
335
|
+
node: node to decide if it can be a part of fusion
|
336
|
+
idx: index of layer in the fusion
|
337
|
+
|
338
|
+
Returns:
|
339
|
+
fusing_patterns after filtering non-relevant fusions
|
340
|
+
"""
|
341
|
+
valid_fusing_patterns = []
|
342
|
+
for i, fusing_pattern in enumerate(fusing_patterns):
|
343
|
+
if idx < len(fusing_pattern):
|
344
|
+
if ((type(fusing_pattern[idx]) == LayerFilterParams and node.is_match_filter_params(
|
345
|
+
fusing_pattern[idx])) or node.is_match_type(fusing_pattern[idx])):
|
346
|
+
valid_fusing_patterns.append(fusing_pattern)
|
347
|
+
|
348
|
+
# Return only valid patterns for this node
|
349
|
+
return valid_fusing_patterns
|
350
|
+
|
351
|
+
|
352
|
+
def is_valid_fusion(fusing_patterns: List[List[Any]], nodes: List['BaseNode']) -> bool:
|
353
|
+
"""
|
354
|
+
Check if the fusion is valid: exist in fusing_patterns
|
355
|
+
Args:
|
356
|
+
fusing_patterns: supported fusing patterns
|
357
|
+
nodes: nodes which are participating in fusion
|
358
|
+
Returns:
|
359
|
+
whether the fusion in valid
|
360
|
+
"""
|
361
|
+
fusion_depth = len(nodes)
|
362
|
+
if fusion_depth <= 1:
|
363
|
+
return False
|
364
|
+
for fusing_pattern in fusing_patterns:
|
365
|
+
if fusion_depth != len(fusing_pattern):
|
366
|
+
continue
|
367
|
+
counter = 0
|
368
|
+
for i, layer in enumerate(fusing_pattern):
|
369
|
+
if (type(layer) == LayerFilterParams and nodes[i].is_match_filter_params(layer)) or \
|
370
|
+
nodes[i].is_match_type(layer):
|
371
|
+
counter += 1
|
372
|
+
if counter == fusion_depth:
|
373
|
+
return True
|
374
|
+
return False
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright
|
1
|
+
# Copyright 2025 Sony Semiconductor Israel, Inc. All rights reserved.
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -13,10 +13,13 @@
|
|
13
13
|
# limitations under the License.
|
14
14
|
# ==============================================================================
|
15
15
|
|
16
|
-
|
16
|
+
import copy
|
17
|
+
from typing import List, Tuple
|
17
18
|
|
18
|
-
from model_compression_toolkit.core.common import
|
19
|
-
from model_compression_toolkit.core.common.graph.base_graph import OutTensor
|
19
|
+
from model_compression_toolkit.core.common.fusion.fusing_info import FusingInfoGenerator
|
20
|
+
from model_compression_toolkit.core.common.graph.base_graph import Graph, BaseNode, OutTensor
|
21
|
+
from model_compression_toolkit.core.common.quantization.candidate_node_quantization_config import CandidateNodeQuantizationConfig
|
22
|
+
from itertools import product
|
20
23
|
|
21
24
|
|
22
25
|
class FusedLayerType:
|
@@ -27,35 +30,41 @@ class FusedLayerType:
|
|
27
30
|
def __init__(self):
|
28
31
|
self.__name__ = 'FusedLayer'
|
29
32
|
|
30
|
-
|
31
33
|
class GraphFuser:
|
32
|
-
|
33
|
-
def create_fused_graph(self, graph: Graph) -> Dict[str, str]:
|
34
|
+
def apply_node_fusion(self, graph: Graph) -> Graph:
|
34
35
|
"""
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
36
|
+
Applies node fusion to the graph according the fusing_info it has.
|
37
|
+
|
38
|
+
The fusion process includes:
|
39
|
+
1. Generating new fused nodes to replace groups of original nodes.
|
40
|
+
2. Updating the graph structure to replace those nodes with the fused representations.
|
40
41
|
|
41
42
|
Args:
|
42
|
-
graph:
|
43
|
+
graph: The graph and its fusing metadata.
|
43
44
|
|
44
45
|
Returns:
|
45
|
-
|
46
|
+
The updated graph with fused nodes replacing the original node groups.
|
46
47
|
"""
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
48
|
+
graph_copy = copy.deepcopy(graph)
|
49
|
+
expected_fusing_info = FusingInfoGenerator(graph_copy.fusing_info.fusing_patterns).generate_fusing_info(graph_copy)
|
50
|
+
|
51
|
+
if expected_fusing_info != graph_copy.fusing_info:
|
52
|
+
raise ValueError(
|
53
|
+
f"Mismatch between expected and existing fusing information.\n"
|
54
|
+
f"Expected:\n{expected_fusing_info}\nExisting:\n{graph_copy.fusing_info}"
|
55
|
+
)
|
56
|
+
|
57
|
+
fused_operations = list(graph_copy.fusing_info.get_all_fused_operations().items())
|
58
|
+
for fused_node_id, original_nodes in fused_operations:
|
59
|
+
fused_node = self._create_fused_node(fused_node_id, original_nodes)
|
60
|
+
graph_copy.fusing_info.remove_fused_operation(fused_node_id)
|
61
|
+
self._replace_nodes_with_fused_node(graph_copy, original_nodes, fused_node)
|
62
|
+
|
63
|
+
return graph_copy
|
64
|
+
|
56
65
|
|
57
66
|
@staticmethod
|
58
|
-
def _create_fused_node(nodes:
|
67
|
+
def _create_fused_node(fused_node_id: str, nodes: Tuple[BaseNode]) -> BaseNode:
|
59
68
|
"""
|
60
69
|
Create a new node that represents the fusion of the given nodes.
|
61
70
|
|
@@ -67,22 +76,28 @@ class GraphFuser:
|
|
67
76
|
"""
|
68
77
|
# Create a new node with a name that reflects its components
|
69
78
|
# Use the input shape of the first node and output shape of the last node
|
70
|
-
|
79
|
+
# TODO: consider replacing the fused node with a sub-model to allow inference on it, etc.
|
80
|
+
fused_node = BaseNode(name=fused_node_id,
|
71
81
|
framework_attr={},
|
72
82
|
input_shape=nodes[0].input_shape,
|
73
83
|
output_shape=nodes[-1].output_shape,
|
74
84
|
weights={},
|
75
85
|
layer_class=FusedLayerType)
|
76
86
|
|
77
|
-
|
78
|
-
|
87
|
+
activation_cfgs = [c.activation_quantization_cfg for c in nodes[-1].candidates_quantization_cfg]
|
88
|
+
fused_node.candidates_quantization_cfg = [
|
89
|
+
CandidateNodeQuantizationConfig(weights_quantization_cfg=None, activation_quantization_cfg=a) for a in
|
90
|
+
activation_cfgs]
|
91
|
+
|
92
|
+
# Keep the final configurations if they were set already.
|
93
|
+
fused_node.final_weights_quantization_cfg = nodes[0].final_weights_quantization_cfg
|
79
94
|
fused_node.final_activation_quantization_cfg = nodes[-1].final_activation_quantization_cfg
|
80
95
|
|
81
96
|
return fused_node
|
82
97
|
|
83
98
|
@staticmethod
|
84
99
|
def _replace_nodes_with_fused_node(graph: Graph,
|
85
|
-
nodes_to_fuse:
|
100
|
+
nodes_to_fuse: Tuple[BaseNode],
|
86
101
|
fused_node: BaseNode):
|
87
102
|
"""
|
88
103
|
Replace the specified nodes in the graph with a new fused node.
|
@@ -118,6 +133,11 @@ class GraphFuser:
|
|
118
133
|
for next_node in subsequent_nodes:
|
119
134
|
assert next_node in nodes_to_fuse # Ensure we're not removing edges outside the fusion
|
120
135
|
graph.remove_edge(current_node, next_node)
|
136
|
+
# next_node can have more incoming edges from other nodes that are not
|
137
|
+
# in the fusion and we should remove them to:
|
138
|
+
in_edges = graph.incoming_edges(next_node)
|
139
|
+
for ie in in_edges:
|
140
|
+
graph.remove_edge(ie.source_node, next_node)
|
121
141
|
|
122
142
|
# Handle the case where fused nodes are part of the graph's outputs
|
123
143
|
graph_output_tensors = graph.get_outputs()
|
@@ -136,3 +156,5 @@ class GraphFuser:
|
|
136
156
|
|
137
157
|
# Finally, add the new fused node to the graph
|
138
158
|
graph.add_node(fused_node)
|
159
|
+
|
160
|
+
|