mct-nightly 2.0.0.20240417.406__tar.gz → 2.0.0.20240419.358__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.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/PKG-INFO +1 -1
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/mct_nightly.egg-info/PKG-INFO +1 -1
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/mct_nightly.egg-info/SOURCES.txt +3 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/__init__.py +1 -1
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/constants.py +2 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/graph/base_graph.py +2 -2
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/graph/base_node.py +26 -9
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/graph/functional_node.py +18 -1
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/hessian/hessian_info_service.py +2 -3
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/hessian/trace_hessian_request.py +1 -3
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/network_editors/node_filters.py +4 -3
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/node_quantization_config.py +0 -5
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantization_config.py +5 -2
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantization_params_generation/error_functions.py +67 -4
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantization_params_generation/lut_kmeans_params.py +12 -4
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantization_params_generation/power_of_two_selection.py +14 -4
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantization_params_generation/qparams_computation.py +30 -3
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantization_params_generation/qparams_weights_computation.py +17 -7
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantization_params_generation/symmetric_selection.py +14 -3
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantization_params_generation/uniform_selection.py +13 -3
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/set_node_quantization_config.py +16 -3
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/similarity_analyzer.py +16 -4
- mct-nightly-2.0.0.20240419.358/model_compression_toolkit/core/common/substitutions/remove_identity.py +48 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/graph_prep_runner.py +10 -4
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/back2framework/keras_model_builder.py +4 -1
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/batchnorm_folding.py +7 -7
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/linear_collapsing.py +1 -1
- mct-nightly-2.0.0.20240419.358/model_compression_toolkit/core/keras/graph_substitutions/substitutions/remove_identity.py +51 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/residual_collapsing.py +1 -1
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/keras_implementation.py +13 -11
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/keras_node_prior_info.py +4 -4
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/pruning/pruning_keras_implementation.py +4 -5
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/reader/common.py +2 -2
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/reader/node_builder.py +28 -9
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/tf_tensor_numpy.py +5 -2
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/back2framework/pytorch_model_builder.py +34 -21
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/batchnorm_folding.py +8 -8
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/const_holder_conv.py +2 -2
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/linear_collapsing.py +1 -1
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/relu_bound_to_power_of_2.py +4 -4
- mct-nightly-2.0.0.20240419.358/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/remove_identity.py +50 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/residual_collapsing.py +1 -1
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/pruning/pruning_pytorch_implementation.py +8 -8
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/pytorch_implementation.py +7 -6
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/pytorch_node_prior_info.py +2 -2
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/quantization_prep_runner.py +6 -2
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/runner.py +5 -2
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_wrapper/keras/builder/fully_quantized_model_builder.py +5 -1
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_wrapper/pytorch/builder/fully_quantized_model_builder.py +9 -2
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/quantization_facade.py +2 -1
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/quantization_facade.py +3 -1
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/runner.py +1 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/latest/__init__.py +5 -5
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_lut/tp_model.py +1 -1
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2/tp_model.py +20 -6
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2/tpc_keras.py +1 -1
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2_lut/tp_model.py +22 -8
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2_lut/tpc_keras.py +1 -1
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/LICENSE.md +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/README.md +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/mct_nightly.egg-info/dependency_links.txt +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/mct_nightly.egg-info/requires.txt +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/mct_nightly.egg-info/top_level.txt +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/analyzer.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/back2framework/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/back2framework/base_model_builder.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/base_substitutions.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/collectors/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/collectors/base_collector.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/collectors/histogram_collector.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/collectors/mean_collector.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/collectors/min_max_per_channel_collector.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/collectors/statistics_collector.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/framework_implementation.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/framework_info.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/fusion/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/fusion/layer_fusing.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/graph/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/graph/edge.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/graph/graph_matchers.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/graph/graph_searches.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/graph/memory_graph/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/graph/memory_graph/bipartite_graph.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/graph/memory_graph/compute_graph_max_cut.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/graph/memory_graph/cut.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/graph/memory_graph/max_cut_astar.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/graph/memory_graph/memory_element.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/graph/memory_graph/memory_graph.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/graph/virtual_activation_weights_node.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/hessian/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/hessian/hessian_info_utils.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/hessian/trace_hessian_calculator.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/matchers/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/matchers/base_graph_filter.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/matchers/base_matcher.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/matchers/edge_matcher.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/matchers/function.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/matchers/node_matcher.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/matchers/walk_matcher.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/memory_computation.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/bit_width_setter.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/configurable_quant_id.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/configurable_quantizer_utils.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/distance_weighting.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/mixed_precision_quantization_config.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/mixed_precision_search_facade.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/mixed_precision_search_manager.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/resource_utilization_tools/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/resource_utilization_tools/resource_utilization.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/resource_utilization_tools/resource_utilization_data.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/resource_utilization_tools/ru_aggregation_methods.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/resource_utilization_tools/ru_functions_mapping.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/resource_utilization_tools/ru_methods.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/search_methods/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/search_methods/linear_programming.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/sensitivity_evaluation.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/set_layer_to_bitwidth.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/solution_refinement_procedure.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/model_builder_mode.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/model_collector.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/model_validation.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/network_editors/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/network_editors/actions.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/network_editors/edit_network.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/node_prior_info.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/channels_grouping.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/greedy_mask_calculator.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/importance_metrics/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/importance_metrics/base_importance_metric.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/importance_metrics/importance_metric_factory.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/importance_metrics/lfh_importance_metric.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/mask/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/mask/per_channel_mask.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/mask/per_simd_group_mask.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/memory_calculator.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/prune_graph.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/pruner.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/pruning_config.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/pruning_framework_implementation.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/pruning_info.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/pruning_section.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/candidate_node_quantization_config.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/core_config.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/debug_config.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/filter_nodes_candidates.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantization_fn_selection.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantization_params_fn_selection.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantization_params_generation/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantization_params_generation/outlier_filter.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantization_params_generation/qparams_activations_computation.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantization_params_generation/qparams_search.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantize_graph_weights.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantize_node.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantizers/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantizers/lut_kmeans_quantizer.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantizers/quantizers_helpers.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantizers/uniform_quantizers.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/statistics_correction/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/statistics_correction/apply_bias_correction_to_graph.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/statistics_correction/apply_second_moment_correction_to_graph.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/statistics_correction/compute_bias_correction_of_graph.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/statistics_correction/statistics_correction.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/substitutions/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/substitutions/apply_substitutions.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/substitutions/batchnorm_folding.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/substitutions/batchnorm_reconstruction.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/substitutions/batchnorm_refusing.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/substitutions/linear_collapsing.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/substitutions/linear_collapsing_substitution.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/substitutions/residual_collapsing.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/substitutions/scale_equalization.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/substitutions/shift_negative_activation.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/substitutions/softmax_shift.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/substitutions/virtual_activation_weights_composition.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/substitutions/weights_activation_split.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/user_info.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/visualization/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/visualization/final_config_visualizer.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/visualization/nn_visualizer.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/visualization/tensorboard_writer.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/back2framework/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/back2framework/factory_model_builder.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/back2framework/float_model_builder.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/back2framework/instance_builder.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/back2framework/mixed_precision_model_builder.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/back2framework/quantized_model_builder.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/constants.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/custom_layer_validation.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/default_framework_info.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/activation_decomposition.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/batchnorm_reconstruction.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/batchnorm_refusing.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/concat_threshold_update.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/dwconv_to_conv.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/input_scaling.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/matmul_substitution.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/multi_head_attention_decomposition.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/relu_bound_to_power_of_2.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/scale_equalization.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/separableconv_decomposition.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/shift_negative_activation.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/softmax_shift.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/virtual_activation_weights_composition.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/weights_activation_split.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/hessian/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/hessian/activation_trace_hessian_calculator_keras.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/hessian/trace_hessian_calculator_keras.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/hessian/weights_trace_hessian_calculator_keras.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/keras_model_validation.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/mixed_precision/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/mixed_precision/configurable_activation_quantizer.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/mixed_precision/configurable_weights_quantizer.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/pruning/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/quantizer/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/quantizer/base_quantizer.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/quantizer/fake_quant_builder.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/quantizer/lut_fake_quant.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/reader/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/reader/connectivity_handler.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/reader/nested_model/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/reader/nested_model/edges_merger.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/reader/nested_model/nested_model_handler.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/reader/nested_model/nodes_merger.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/reader/nested_model/outputs_merger.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/reader/reader.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/resource_utilization_data_facade.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/statistics_correction/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/statistics_correction/apply_second_moment_correction.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/visualization/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/back2framework/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/back2framework/factory_model_builder.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/back2framework/float_model_builder.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/back2framework/instance_builder.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/back2framework/mixed_precision_model_builder.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/back2framework/quantization_wrapper/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/back2framework/quantization_wrapper/quantized_layer_wrapper.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/back2framework/quantization_wrapper/wrapper_quantize_config.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/back2framework/quantized_model_builder.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/constants.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/default_framework_info.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/batchnorm_reconstruction.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/batchnorm_refusing.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/concat_threshold_update.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/functional_batch_norm.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/functional_layer_norm.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/multi_head_attention_decomposition.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/permute_call_method.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/reshape_with_static_shapes.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/scale_equalization.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/shift_negative_activation.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/softmax_shift.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/virtual_activation_weights_composition.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/weights_activation_split.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/hessian/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/hessian/activation_trace_hessian_calculator_pytorch.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/hessian/trace_hessian_calculator_pytorch.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/hessian/weights_trace_hessian_calculator_pytorch.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/mixed_precision/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/mixed_precision/configurable_activation_quantizer.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/mixed_precision/configurable_weights_quantizer.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/pruning/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/pytorch_device_config.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/quantizer/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/quantizer/fake_quant_builder.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/quantizer/lut_fake_quant.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/reader/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/reader/graph_builders.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/reader/node_holders.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/reader/reader.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/resource_utilization_data_facade.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/statistics_correction/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/statistics_correction/apply_second_moment_correction.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/utils.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/common/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/common/constants.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/common/data_generation.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/common/data_generation_config.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/common/enums.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/common/image_pipeline.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/common/model_info_exctractors.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/common/optimization_utils.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/keras/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/keras/constants.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/keras/image_pipeline.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/keras/keras_data_generation.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/keras/model_info_exctractors.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/keras/optimization_functions/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/keras/optimization_functions/batchnorm_alignment_functions.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/keras/optimization_functions/bn_layer_weighting_functions.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/keras/optimization_functions/image_initilization.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/keras/optimization_functions/output_loss_functions.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/keras/optimization_functions/scheduler_step_functions.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/keras/optimization_utils.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/pytorch/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/pytorch/constants.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/pytorch/image_pipeline.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/pytorch/model_info_exctractors.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/pytorch/optimization_functions/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/pytorch/optimization_functions/batchnorm_alignment_functions.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/pytorch/optimization_functions/bn_layer_weighting_functions.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/pytorch/optimization_functions/image_initilization.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/pytorch/optimization_functions/output_loss_functions.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/pytorch/optimization_functions/scheduler_step_functions.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/pytorch/optimization_utils.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/pytorch/pytorch_data_generation.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/defaultdict.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/fw_agonstic/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/fw_agonstic/exporter.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/fw_agonstic/quantization_format.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/keras/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/keras/base_keras_exporter.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/keras/export_serialization_format.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/keras/fakely_quant_keras_exporter.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/keras/fakely_quant_tflite_exporter.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/keras/int8_tflite_exporter.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/keras/keras_export_facade.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/keras/mctq_keras_exporter.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/pytorch/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/pytorch/base_pytorch_exporter.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/pytorch/export_serialization_format.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/pytorch/fakely_quant_onnx_pytorch_exporter.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/pytorch/fakely_quant_torchscript_pytorch_exporter.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/pytorch/pytorch_export_facade.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_wrapper/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_wrapper/fw_agnostic/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_wrapper/fw_agnostic/get_inferable_quantizers.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_wrapper/keras/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_wrapper/keras/builder/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_wrapper/keras/builder/node_to_quantizer.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_wrapper/keras/validate_layer.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_wrapper/pytorch/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_wrapper/pytorch/builder/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_wrapper/pytorch/builder/node_to_quantizer.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_wrapper/pytorch/validate_layer.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/common/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/common/gptq_config.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/common/gptq_constants.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/common/gptq_framework_implementation.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/common/gptq_graph.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/common/gptq_training.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/gptq_keras_implementation.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/gptq_loss.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/gptq_training.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/graph_info.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/quantizer/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/quantizer/base_keras_gptq_quantizer.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/quantizer/quant_utils.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/quantizer/quantization_builder.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/quantizer/regularization_factory.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/quantizer/soft_rounding/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/quantizer/soft_rounding/soft_quantizer_reg.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/quantizer/soft_rounding/symmetric_soft_quantizer.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/quantizer/soft_rounding/uniform_soft_quantizer.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/quantizer/ste_rounding/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/quantizer/ste_rounding/symmetric_ste.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/gptq_loss.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/gptq_pytorch_implementation.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/gptq_training.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/graph_info.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/quantizer/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/quantizer/base_pytorch_gptq_quantizer.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/quantizer/quant_utils.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/quantizer/quantization_builder.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/quantizer/regularization_factory.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/quantizer/soft_rounding/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/quantizer/soft_rounding/soft_quantizer_reg.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/quantizer/soft_rounding/symmetric_soft_quantizer.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/quantizer/soft_rounding/uniform_soft_quantizer.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/quantizer/ste_rounding/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/quantizer/ste_rounding/symmetric_ste.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/logger.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/metadata.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/pruning/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/pruning/keras/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/pruning/keras/pruning_facade.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/pruning/pytorch/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/pruning/pytorch/pruning_facade.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/ptq/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/ptq/keras/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/ptq/keras/quantization_facade.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/ptq/pytorch/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/ptq/pytorch/quantization_facade.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/ptq/runner.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/common/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/common/qat_config.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/keras/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/keras/quantization_facade.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/keras/quantizer/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/keras/quantizer/base_keras_qat_quantizer.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/keras/quantizer/lsq/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/keras/quantizer/lsq/symmetric_lsq.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/keras/quantizer/lsq/uniform_lsq.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/keras/quantizer/quant_utils.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/keras/quantizer/quantization_builder.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/keras/quantizer/ste_rounding/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/keras/quantizer/ste_rounding/symmetric_ste.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/keras/quantizer/ste_rounding/uniform_ste.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/pytorch/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/pytorch/quantization_facade.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/pytorch/quantizer/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/pytorch/quantizer/base_pytorch_qat_quantizer.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/pytorch/quantizer/lsq/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/pytorch/quantizer/lsq/symmetric_lsq.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/pytorch/quantizer/lsq/uniform_lsq.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/pytorch/quantizer/quantization_builder.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/pytorch/quantizer/quantizer_utils.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/pytorch/quantizer/ste_rounding/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/pytorch/quantizer/ste_rounding/symmetric_ste.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/pytorch/quantizer/ste_rounding/uniform_ste.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/constants.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/immutable.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/target_platform/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/target_platform/current_tp_model.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/target_platform/fusing.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/target_platform/op_quantization_config.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/target_platform/operators.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/target_platform/target_platform_model.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/target_platform/target_platform_model_component.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/attribute_filter.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/current_tpc.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/layer_filter_params.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/operations_to_layers.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/target_platform_capabilities.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/target_platform_capabilities_component.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/get_target_platform_capabilities.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/target_platform_capabilities.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/tp_model.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/tpc_keras.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/tpc_pytorch.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_lut/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_lut/tpc_keras.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_lut/tpc_pytorch.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_pot/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_pot/tp_model.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_pot/tpc_keras.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_pot/tpc_pytorch.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2/tpc_pytorch.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2_lut/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2_lut/tpc_pytorch.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/latest/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/target_platform_capabilities.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/tp_model.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/tpc_keras.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/tpc_pytorch.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/latest/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/target_platform_capabilities.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/tp_model.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/tpc_keras.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/tpc_pytorch.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/trainable_infrastructure/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/trainable_infrastructure/common/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/trainable_infrastructure/common/base_trainable_quantizer.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/trainable_infrastructure/common/constants.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/trainable_infrastructure/common/get_quantizer_config.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/trainable_infrastructure/common/get_quantizers.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/trainable_infrastructure/common/quant_utils.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/trainable_infrastructure/common/trainable_quantizer_config.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/trainable_infrastructure/keras/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/trainable_infrastructure/keras/base_keras_quantizer.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/trainable_infrastructure/keras/config_serialization.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/trainable_infrastructure/keras/load_model.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/trainable_infrastructure/keras/quantize_wrapper.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/trainable_infrastructure/keras/quantizer_utils.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/trainable_infrastructure/pytorch/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/trainable_infrastructure/pytorch/base_pytorch_quantizer.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/setup.cfg +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/setup.py +0 -0
{mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/mct_nightly.egg-info/SOURCES.txt
RENAMED
|
@@ -144,6 +144,7 @@ model_compression_toolkit/core/common/substitutions/batchnorm_reconstruction.py
|
|
|
144
144
|
model_compression_toolkit/core/common/substitutions/batchnorm_refusing.py
|
|
145
145
|
model_compression_toolkit/core/common/substitutions/linear_collapsing.py
|
|
146
146
|
model_compression_toolkit/core/common/substitutions/linear_collapsing_substitution.py
|
|
147
|
+
model_compression_toolkit/core/common/substitutions/remove_identity.py
|
|
147
148
|
model_compression_toolkit/core/common/substitutions/residual_collapsing.py
|
|
148
149
|
model_compression_toolkit/core/common/substitutions/scale_equalization.py
|
|
149
150
|
model_compression_toolkit/core/common/substitutions/shift_negative_activation.py
|
|
@@ -183,6 +184,7 @@ model_compression_toolkit/core/keras/graph_substitutions/substitutions/linear_co
|
|
|
183
184
|
model_compression_toolkit/core/keras/graph_substitutions/substitutions/matmul_substitution.py
|
|
184
185
|
model_compression_toolkit/core/keras/graph_substitutions/substitutions/multi_head_attention_decomposition.py
|
|
185
186
|
model_compression_toolkit/core/keras/graph_substitutions/substitutions/relu_bound_to_power_of_2.py
|
|
187
|
+
model_compression_toolkit/core/keras/graph_substitutions/substitutions/remove_identity.py
|
|
186
188
|
model_compression_toolkit/core/keras/graph_substitutions/substitutions/residual_collapsing.py
|
|
187
189
|
model_compression_toolkit/core/keras/graph_substitutions/substitutions/scale_equalization.py
|
|
188
190
|
model_compression_toolkit/core/keras/graph_substitutions/substitutions/separableconv_decomposition.py
|
|
@@ -247,6 +249,7 @@ model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/linear_
|
|
|
247
249
|
model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/multi_head_attention_decomposition.py
|
|
248
250
|
model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/permute_call_method.py
|
|
249
251
|
model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/relu_bound_to_power_of_2.py
|
|
252
|
+
model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/remove_identity.py
|
|
250
253
|
model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/reshape_with_static_shapes.py
|
|
251
254
|
model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/residual_collapsing.py
|
|
252
255
|
model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/scale_equalization.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.0.0.
|
|
30
|
+
__version__ = "2.0.0.20240419.000358"
|
|
@@ -98,8 +98,8 @@ class Graph(nx.MultiDiGraph, GraphSearches):
|
|
|
98
98
|
tpc_layers = tpc.op_sets_to_layers.get_layers()
|
|
99
99
|
tpc_filtered_layers = [layer for layer in tpc_layers if isinstance(layer, LayerFilterParams)]
|
|
100
100
|
for n in self.nodes:
|
|
101
|
-
is_node_in_tpc = n.
|
|
102
|
-
|
|
101
|
+
is_node_in_tpc = any([n.is_match_type(_type) for _type in tpc_layers]) or \
|
|
102
|
+
any([n.is_match_filter_params(filtered_layer) for filtered_layer in tpc_filtered_layers])
|
|
103
103
|
if n.is_custom:
|
|
104
104
|
if not is_node_in_tpc:
|
|
105
105
|
Logger.critical(f'MCT does not support optimizing Keras custom layers. Found a layer of type {n.type}. '
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
# ==============================================================================
|
|
15
15
|
|
|
16
16
|
import copy
|
|
17
|
-
from typing import Dict, Any, Tuple, List, Type
|
|
17
|
+
from typing import Dict, Any, Tuple, List, Type, Union
|
|
18
18
|
|
|
19
19
|
import numpy as np
|
|
20
20
|
|
|
@@ -151,7 +151,21 @@ class BaseNode:
|
|
|
151
151
|
"""
|
|
152
152
|
return self.reuse or self.reuse_group is not None
|
|
153
153
|
|
|
154
|
-
def
|
|
154
|
+
def _get_weight_name(self, name: Union[str, int]) -> List[Union[str, int]]:
|
|
155
|
+
"""
|
|
156
|
+
Get weight names that match argument name (either string weights or integer for
|
|
157
|
+
positional weights).
|
|
158
|
+
Args:
|
|
159
|
+
name: weight name
|
|
160
|
+
|
|
161
|
+
Returns:
|
|
162
|
+
A list of weight names that match input "name"
|
|
163
|
+
|
|
164
|
+
"""
|
|
165
|
+
return [k for k in self.weights.keys()
|
|
166
|
+
if (isinstance(k, int) and name == k) or (isinstance(k, str) and name in k)]
|
|
167
|
+
|
|
168
|
+
def get_weights_by_keys(self, name: Union[str, int]) -> np.ndarray:
|
|
155
169
|
"""
|
|
156
170
|
Get a node's weight by its name.
|
|
157
171
|
Args:
|
|
@@ -163,7 +177,7 @@ class BaseNode:
|
|
|
163
177
|
if name is None:
|
|
164
178
|
return None
|
|
165
179
|
|
|
166
|
-
res =
|
|
180
|
+
res = self._get_weight_name(name)
|
|
167
181
|
if len(res) == 1: # Make sure there are no duplicates
|
|
168
182
|
return self.weights[res[0]]
|
|
169
183
|
else:
|
|
@@ -179,7 +193,7 @@ class BaseNode:
|
|
|
179
193
|
|
|
180
194
|
"""
|
|
181
195
|
|
|
182
|
-
res =
|
|
196
|
+
res = self._get_weight_name(name)
|
|
183
197
|
if len(res) == 1:
|
|
184
198
|
self.weights[res[0]] = tensor
|
|
185
199
|
else: # Add if not exist
|
|
@@ -552,14 +566,17 @@ class BaseNode:
|
|
|
552
566
|
for fl, qco in tpc.filterlayer2qco.items():
|
|
553
567
|
if self.is_match_filter_params(fl):
|
|
554
568
|
return qco
|
|
555
|
-
|
|
556
|
-
|
|
569
|
+
# Extract qco with is_match_type to overcome mismatch of function types in TF 2.15
|
|
570
|
+
matching_qcos = [_qco for _type, _qco in tpc.layer2qco.items() if self.is_match_type(_type)]
|
|
571
|
+
if matching_qcos:
|
|
572
|
+
if len(matching_qcos) > 1:
|
|
573
|
+
Logger.error('Found duplicate qco types!')
|
|
574
|
+
return matching_qcos[0]
|
|
557
575
|
return tpc.tp_model.default_qco
|
|
558
576
|
|
|
559
577
|
def is_match_type(self, _type: Type) -> bool:
|
|
560
578
|
"""
|
|
561
|
-
Check if input type matches the node type, either in instance type or in type name.
|
|
562
|
-
name string is required because of function types changes that occurred in TF 2.15.
|
|
579
|
+
Check if input type matches the node type, either in instance type or in type name.
|
|
563
580
|
|
|
564
581
|
Args:
|
|
565
582
|
_type: other node type
|
|
@@ -567,7 +584,7 @@ class BaseNode:
|
|
|
567
584
|
Whether _type matches the self node type
|
|
568
585
|
|
|
569
586
|
"""
|
|
570
|
-
return _type == self.type
|
|
587
|
+
return _type == self.type
|
|
571
588
|
|
|
572
589
|
def is_match_filter_params(self, layer_filter_params: LayerFilterParams) -> bool:
|
|
573
590
|
"""
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
from typing import Dict, Any, Tuple,
|
|
1
|
+
from typing import Dict, Any, Tuple, Type
|
|
2
2
|
|
|
3
|
+
from model_compression_toolkit.constants import FOUND_TF
|
|
3
4
|
from model_compression_toolkit.core.common.graph.base_node import BaseNode
|
|
4
5
|
import numpy as np
|
|
5
6
|
|
|
@@ -71,3 +72,19 @@ class FunctionalNode(BaseNode):
|
|
|
71
72
|
:return: the node's functional_op
|
|
72
73
|
"""
|
|
73
74
|
return self.functional_op
|
|
75
|
+
|
|
76
|
+
def is_match_type(self, _type: Type) -> bool:
|
|
77
|
+
"""
|
|
78
|
+
Check if input type matches the node type, either in instance type or in type name. Checking the
|
|
79
|
+
name string is required because of function types changes that occurred in TF 2.15, because it
|
|
80
|
+
changes the "function" attribute object (e.g. a different tf.add function that will fail the
|
|
81
|
+
equal operation).
|
|
82
|
+
|
|
83
|
+
Args:
|
|
84
|
+
_type: other node type
|
|
85
|
+
Returns:
|
|
86
|
+
Whether _type matches the self node type
|
|
87
|
+
|
|
88
|
+
"""
|
|
89
|
+
names_match = _type.__name__ == self.type.__name__ if FOUND_TF else False
|
|
90
|
+
return super().is_match_type(_type) or names_match
|
|
@@ -17,7 +17,6 @@ from functools import partial
|
|
|
17
17
|
from typing import Callable, List
|
|
18
18
|
|
|
19
19
|
from model_compression_toolkit.constants import HESSIAN_NUM_ITERATIONS
|
|
20
|
-
from model_compression_toolkit.core.common import Graph
|
|
21
20
|
from model_compression_toolkit.core.common.hessian.trace_hessian_request import TraceHessianRequest
|
|
22
21
|
from model_compression_toolkit.logger import Logger
|
|
23
22
|
|
|
@@ -38,7 +37,7 @@ class HessianInfoService:
|
|
|
38
37
|
"""
|
|
39
38
|
|
|
40
39
|
def __init__(self,
|
|
41
|
-
graph
|
|
40
|
+
graph,
|
|
42
41
|
representative_dataset: Callable,
|
|
43
42
|
fw_impl,
|
|
44
43
|
num_iterations_for_approximation: int = HESSIAN_NUM_ITERATIONS
|
|
@@ -151,7 +150,7 @@ class HessianInfoService:
|
|
|
151
150
|
if required_size==0:
|
|
152
151
|
return []
|
|
153
152
|
|
|
154
|
-
Logger.info(f"
|
|
153
|
+
Logger.info(f"\nEnsuring {required_size} Hessian-trace approximation for node {trace_hessian_request.target_node}.")
|
|
155
154
|
|
|
156
155
|
# Replace request of a reused target node with a request of the 'reuse group'.
|
|
157
156
|
if trace_hessian_request.target_node.reuse_group:
|
|
@@ -16,8 +16,6 @@ from typing import List
|
|
|
16
16
|
|
|
17
17
|
from enum import Enum
|
|
18
18
|
|
|
19
|
-
from model_compression_toolkit.core.common import BaseNode
|
|
20
|
-
|
|
21
19
|
|
|
22
20
|
class HessianMode(Enum):
|
|
23
21
|
"""
|
|
@@ -54,7 +52,7 @@ class TraceHessianRequest:
|
|
|
54
52
|
def __init__(self,
|
|
55
53
|
mode: HessianMode,
|
|
56
54
|
granularity: HessianInfoGranularity,
|
|
57
|
-
target_node
|
|
55
|
+
target_node,
|
|
58
56
|
):
|
|
59
57
|
"""
|
|
60
58
|
Attributes:
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
|
|
16
16
|
from typing import Any
|
|
17
17
|
from model_compression_toolkit.core.common.matchers.node_matcher import BaseNodeMatcher
|
|
18
|
+
from model_compression_toolkit.core.common.graph.base_node import BaseNode
|
|
18
19
|
|
|
19
20
|
|
|
20
21
|
class NodeTypeFilter(BaseNodeMatcher):
|
|
@@ -30,7 +31,7 @@ class NodeTypeFilter(BaseNodeMatcher):
|
|
|
30
31
|
"""
|
|
31
32
|
self.node_type = node_type
|
|
32
33
|
|
|
33
|
-
def apply(self, input_object:
|
|
34
|
+
def apply(self, input_object: BaseNode) -> bool:
|
|
34
35
|
"""
|
|
35
36
|
Check if input_object is of the type that NodeTypeFilter contains.
|
|
36
37
|
|
|
@@ -38,9 +39,9 @@ class NodeTypeFilter(BaseNodeMatcher):
|
|
|
38
39
|
input_object: Node object to check for its type.
|
|
39
40
|
|
|
40
41
|
Returns:
|
|
41
|
-
True if the node
|
|
42
|
+
True if the node is of the type that was passed during the initialization of NodeTypeFilter.
|
|
42
43
|
"""
|
|
43
|
-
if input_object.
|
|
44
|
+
if input_object.is_match_type(self.node_type):
|
|
44
45
|
return True
|
|
45
46
|
|
|
46
47
|
|
|
@@ -265,8 +265,6 @@ class WeightsAttrQuantizationConfig:
|
|
|
265
265
|
self.enable_weights_quantization = weights_attr_cfg.enable_weights_quantization
|
|
266
266
|
self.l_p_value = qc.l_p_value
|
|
267
267
|
|
|
268
|
-
|
|
269
|
-
|
|
270
268
|
@property
|
|
271
269
|
def weights_error_method(self) -> QuantizationErrorMethod:
|
|
272
270
|
"""
|
|
@@ -412,9 +410,6 @@ class NodeWeightsQuantizationConfig(BaseNodeQuantizationConfig):
|
|
|
412
410
|
for attr in node_attrs_list:
|
|
413
411
|
if isinstance(attr, int):
|
|
414
412
|
# this is a positional attribute, so it needs to be handled separately.
|
|
415
|
-
# we assume that a positional attribute is quantized with the default configuration provided in the TPC.
|
|
416
|
-
if op_cfg.default_weight_attr_config.enable_weights_quantization:
|
|
417
|
-
Logger.critical(f"Quantizing constant weights is not supported.")
|
|
418
413
|
self.pos_attributes_config_mapping[attr] = WeightsAttrQuantizationConfig(qc=qc,
|
|
419
414
|
weights_attr_cfg=op_cfg.default_weight_attr_config,
|
|
420
415
|
weights_channels_axis=weights_channels_axis)
|
|
@@ -26,14 +26,16 @@ class QuantizationErrorMethod(Enum):
|
|
|
26
26
|
|
|
27
27
|
NOCLIPPING - Use min/max values as thresholds.
|
|
28
28
|
|
|
29
|
-
MSE - Use
|
|
29
|
+
MSE - Use mean square error for minimizing quantization noise.
|
|
30
30
|
|
|
31
|
-
MAE - Use
|
|
31
|
+
MAE - Use mean absolute error for minimizing quantization noise.
|
|
32
32
|
|
|
33
33
|
KL - Use KL-divergence to make signals distributions to be similar as possible.
|
|
34
34
|
|
|
35
35
|
Lp - Use Lp-norm to minimizing quantization noise.
|
|
36
36
|
|
|
37
|
+
HMSE - Use Hessian-based mean squared error for minimizing quantization noise. This method is using Hessian scores to factorize more valuable parameters when computing the error induced by quantization.
|
|
38
|
+
|
|
37
39
|
"""
|
|
38
40
|
|
|
39
41
|
NOCLIPPING = 0
|
|
@@ -41,6 +43,7 @@ class QuantizationErrorMethod(Enum):
|
|
|
41
43
|
MAE = 2
|
|
42
44
|
KL = 4
|
|
43
45
|
LP = 5
|
|
46
|
+
HMSE = 6
|
|
44
47
|
|
|
45
48
|
|
|
46
49
|
class QuantizationConfig:
|
|
@@ -13,13 +13,16 @@
|
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
# ==============================================================================
|
|
15
15
|
from copy import deepcopy
|
|
16
|
-
from typing import Tuple, Callable
|
|
16
|
+
from typing import Tuple, Callable, List
|
|
17
17
|
import numpy as np
|
|
18
18
|
import model_compression_toolkit.core.common.quantization.quantization_config as qc
|
|
19
|
+
from model_compression_toolkit.core.common.hessian import TraceHessianRequest, HessianMode, HessianInfoGranularity, \
|
|
20
|
+
HessianInfoService
|
|
19
21
|
from model_compression_toolkit.core.common.similarity_analyzer import compute_mse, compute_mae, compute_lp_norm
|
|
20
22
|
from model_compression_toolkit.target_platform_capabilities.target_platform import QuantizationMethod
|
|
21
|
-
from model_compression_toolkit.constants import FLOAT_32
|
|
22
|
-
from model_compression_toolkit.core.common.quantization.quantizers.quantizers_helpers import uniform_quantize_tensor
|
|
23
|
+
from model_compression_toolkit.constants import FLOAT_32, NUM_QPARAM_HESSIAN_SAMPLES
|
|
24
|
+
from model_compression_toolkit.core.common.quantization.quantizers.quantizers_helpers import uniform_quantize_tensor, \
|
|
25
|
+
reshape_tensor_for_per_channel_search
|
|
23
26
|
|
|
24
27
|
|
|
25
28
|
def _mse_error_histogram(q_bins: np.ndarray,
|
|
@@ -371,13 +374,63 @@ def _get_sliced_histogram(bins: np.ndarray,
|
|
|
371
374
|
return bins_subset, counts_subset
|
|
372
375
|
|
|
373
376
|
|
|
377
|
+
def _compute_hessian_for_hmse(node,
|
|
378
|
+
hessian_info_service: HessianInfoService,
|
|
379
|
+
num_hessian_samples: int = NUM_QPARAM_HESSIAN_SAMPLES) -> List[np.ndarray]:
|
|
380
|
+
"""
|
|
381
|
+
Compute and retrieve Hessian-based scores for using during HMSE error computation.
|
|
382
|
+
|
|
383
|
+
Args:
|
|
384
|
+
node: The node to compute Hessian-based scores for.
|
|
385
|
+
hessian_info_service: HessianInfoService object for retrieving Hessian-based scores.
|
|
386
|
+
num_hessian_samples: Number of samples to approximate Hessian-based scores on.
|
|
387
|
+
|
|
388
|
+
Returns: A list with computed Hessian-based scores tensors for the given node.
|
|
389
|
+
|
|
390
|
+
"""
|
|
391
|
+
_request = TraceHessianRequest(mode=HessianMode.WEIGHTS,
|
|
392
|
+
granularity=HessianInfoGranularity.PER_ELEMENT,
|
|
393
|
+
target_node=node)
|
|
394
|
+
_scores_for_node = hessian_info_service.fetch_hessian(_request,
|
|
395
|
+
required_size=num_hessian_samples)
|
|
396
|
+
|
|
397
|
+
return _scores_for_node
|
|
398
|
+
|
|
399
|
+
|
|
400
|
+
def _hmse_error_function_wrapper(float_tensor: np.ndarray,
|
|
401
|
+
fxp_tensor: np.ndarray,
|
|
402
|
+
axis: int,
|
|
403
|
+
norm: bool,
|
|
404
|
+
hessian_scores: np.ndarray):
|
|
405
|
+
"""
|
|
406
|
+
This function wraps the HMSE error method to enable using it during parameters selection.
|
|
407
|
+
|
|
408
|
+
Args:
|
|
409
|
+
float_tensor: Float tensor.
|
|
410
|
+
fxp_tensor: Quantized tensor.
|
|
411
|
+
axis: Axis along which the operation has been performed. If not None, then per-channel computation is expected.
|
|
412
|
+
norm: Indicates whether to normalize the result of the error function.
|
|
413
|
+
hessian_scores: A tensor with Hessian-based scores to use for Hessian-based MSE (HMSE) error computation.
|
|
414
|
+
|
|
415
|
+
Returns: The HMSE error between the float and fixed-point tensors.
|
|
416
|
+
|
|
417
|
+
"""
|
|
418
|
+
if axis is not None:
|
|
419
|
+
hessian_scores = reshape_tensor_for_per_channel_search(hessian_scores, 0)
|
|
420
|
+
|
|
421
|
+
return compute_mse(float_tensor, fxp_tensor, axis, norm, weights=hessian_scores)
|
|
422
|
+
|
|
423
|
+
|
|
374
424
|
def get_threshold_selection_tensor_error_function(quantization_method: QuantizationMethod,
|
|
375
425
|
quant_error_method: qc.QuantizationErrorMethod,
|
|
376
426
|
p: int,
|
|
377
427
|
axis: int = None,
|
|
378
428
|
norm: bool = False,
|
|
379
429
|
n_bits: int = 8,
|
|
380
|
-
signed: bool = True
|
|
430
|
+
signed: bool = True,
|
|
431
|
+
node=None,
|
|
432
|
+
hessian_info_service: HessianInfoService = None,
|
|
433
|
+
num_hessian_samples: int = NUM_QPARAM_HESSIAN_SAMPLES) -> Callable:
|
|
381
434
|
"""
|
|
382
435
|
Returns the error function compatible to the provided threshold method,
|
|
383
436
|
to be used in the threshold optimization search for tensor quantization.
|
|
@@ -389,6 +442,9 @@ def get_threshold_selection_tensor_error_function(quantization_method: Quantizat
|
|
|
389
442
|
norm: Indicates whether to normalize the result of the error function.
|
|
390
443
|
n_bits: Number of bits used to quantize the tensor.
|
|
391
444
|
signed: Indicates whether the input is signed.
|
|
445
|
+
node: The node for which the quantization error is computed (used only with HMSE error method).
|
|
446
|
+
hessian_info_service: HessianInfoService object for retrieving Hessian-based scores (used only with HMSE error method).
|
|
447
|
+
num_hessian_samples: Number of samples to approximate Hessian-based scores on (used only with HMSE error method).
|
|
392
448
|
|
|
393
449
|
Returns: a Callable method that calculates the error between a tensor and a quantized tensor.
|
|
394
450
|
"""
|
|
@@ -418,6 +474,13 @@ def get_threshold_selection_tensor_error_function(quantization_method: Quantizat
|
|
|
418
474
|
n_bits=n_bits,
|
|
419
475
|
per_channel=True)
|
|
420
476
|
|
|
477
|
+
if quant_error_method == qc.QuantizationErrorMethod.HMSE:
|
|
478
|
+
node_hessian_scores = _compute_hessian_for_hmse(node, hessian_info_service, num_hessian_samples)
|
|
479
|
+
node_hessian_scores = np.sqrt(np.mean(node_hessian_scores, axis=0))
|
|
480
|
+
|
|
481
|
+
return lambda x, y, threshold: _hmse_error_function_wrapper(x, y, norm=norm, axis=axis,
|
|
482
|
+
hessian_scores=node_hessian_scores)
|
|
483
|
+
|
|
421
484
|
quant_method_error_function_mapping = {
|
|
422
485
|
qc.QuantizationErrorMethod.MSE: lambda x, y, threshold: compute_mse(x, y, norm=norm, axis=axis),
|
|
423
486
|
qc.QuantizationErrorMethod.MAE: lambda x, y, threshold: compute_mae(x, y, norm=norm, axis=axis),
|
|
@@ -13,12 +13,14 @@
|
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
# ==============================================================================
|
|
15
15
|
|
|
16
|
+
from typing import Dict
|
|
16
17
|
import numpy as np
|
|
17
18
|
from sklearn.cluster import KMeans
|
|
18
19
|
|
|
19
20
|
import model_compression_toolkit.core.common.quantization.quantization_config as qc
|
|
20
21
|
from model_compression_toolkit.constants import LUT_VALUES, MIN_THRESHOLD, SCALE_PER_CHANNEL, \
|
|
21
|
-
LUT_VALUES_BITWIDTH, THRESHOLD
|
|
22
|
+
LUT_VALUES_BITWIDTH, THRESHOLD, NUM_QPARAM_HESSIAN_SAMPLES
|
|
23
|
+
from model_compression_toolkit.core.common.hessian import HessianInfoService
|
|
22
24
|
from model_compression_toolkit.core.common.quantization.quantizers.quantizers_helpers import \
|
|
23
25
|
max_power_of_two, int_quantization_with_threshold
|
|
24
26
|
from model_compression_toolkit.core.common.quantization.quantization_params_generation.symmetric_selection import \
|
|
@@ -37,7 +39,10 @@ def lut_kmeans_tensor(tensor_data: np.ndarray,
|
|
|
37
39
|
n_iter: int = 10,
|
|
38
40
|
min_threshold: float = MIN_THRESHOLD,
|
|
39
41
|
quant_error_method: qc.QuantizationErrorMethod = None,
|
|
40
|
-
is_symmetric=False
|
|
42
|
+
is_symmetric: bool = False,
|
|
43
|
+
node=None,
|
|
44
|
+
hessian_info_service: HessianInfoService = None,
|
|
45
|
+
num_hessian_samples: int = NUM_QPARAM_HESSIAN_SAMPLES) -> Dict:
|
|
41
46
|
"""
|
|
42
47
|
The quantizer first finds the closest max value per channel of tensor_data.
|
|
43
48
|
Now, we divide tensor_data with the threshold vector per channel. In addition, we scale the result to the range
|
|
@@ -53,7 +58,10 @@ def lut_kmeans_tensor(tensor_data: np.ndarray,
|
|
|
53
58
|
n_iter: Number of iterations to search_methods for the optimal threshold.
|
|
54
59
|
min_threshold: Minimal threshold to chose when the computed one is smaller.
|
|
55
60
|
quant_error_method: an error function to optimize the parameters' selection accordingly (not used for this method).
|
|
56
|
-
is_symmetric (bool): Whether to apply symmetric weight quantization (default is False, meaning power of 2 quantization)
|
|
61
|
+
is_symmetric (bool): Whether to apply symmetric weight quantization (default is False, meaning power of 2 quantization).
|
|
62
|
+
node: The node for which the quantization error is computed (not used for this method).
|
|
63
|
+
hessian_info_service: HessianInfoService object for retrieving Hessian-based scores (not used for this method).
|
|
64
|
+
num_hessian_samples: Number of samples to approximate Hessian-based scores on (not used for this method).
|
|
57
65
|
|
|
58
66
|
Returns:
|
|
59
67
|
A dictionary containing the cluster assignments according to the k-means algorithm,
|
|
@@ -94,7 +102,7 @@ def lut_kmeans_histogram(bins: np.ndarray,
|
|
|
94
102
|
constrained: bool = True,
|
|
95
103
|
n_iter: int = 20,
|
|
96
104
|
min_threshold: float = MIN_THRESHOLD,
|
|
97
|
-
quant_error_method: qc.QuantizationErrorMethod = qc.QuantizationErrorMethod.MSE) ->
|
|
105
|
+
quant_error_method: qc.QuantizationErrorMethod = qc.QuantizationErrorMethod.MSE) -> Dict:
|
|
98
106
|
"""
|
|
99
107
|
Finds quantization cluster points for non-uniform activation quantization.
|
|
100
108
|
The quantizer first finds the closest power-of-two number to the max value of the given histogram,
|
|
@@ -15,7 +15,8 @@
|
|
|
15
15
|
import numpy as np
|
|
16
16
|
|
|
17
17
|
import model_compression_toolkit.core.common.quantization.quantization_config as qc
|
|
18
|
-
from model_compression_toolkit.constants import MIN_THRESHOLD, THRESHOLD
|
|
18
|
+
from model_compression_toolkit.constants import MIN_THRESHOLD, THRESHOLD, NUM_QPARAM_HESSIAN_SAMPLES
|
|
19
|
+
from model_compression_toolkit.core.common.hessian import HessianInfoService
|
|
19
20
|
from model_compression_toolkit.core.common.quantization.quantization_params_generation.qparams_search import \
|
|
20
21
|
qparams_selection_tensor_search, qparams_selection_histogram_search
|
|
21
22
|
from model_compression_toolkit.core.common.quantization.quantizers.quantizers_helpers import max_power_of_two, get_tensor_max
|
|
@@ -31,7 +32,11 @@ def power_of_two_selection_tensor(tensor_data: np.ndarray,
|
|
|
31
32
|
channel_axis: int = 1,
|
|
32
33
|
n_iter: int = 10,
|
|
33
34
|
min_threshold: float = MIN_THRESHOLD,
|
|
34
|
-
quant_error_method: qc.QuantizationErrorMethod = qc.QuantizationErrorMethod.MSE
|
|
35
|
+
quant_error_method: qc.QuantizationErrorMethod = qc.QuantizationErrorMethod.MSE,
|
|
36
|
+
node=None,
|
|
37
|
+
hessian_info_service: HessianInfoService = None,
|
|
38
|
+
num_hessian_samples: int = NUM_QPARAM_HESSIAN_SAMPLES,
|
|
39
|
+
) -> dict:
|
|
35
40
|
"""
|
|
36
41
|
Compute the power of two threshold based on the provided QuantizationErrorMethod to quantize the tensor.
|
|
37
42
|
Different search is applied, depends on the value of the selected QuantizationErrorMethod.
|
|
@@ -45,6 +50,9 @@ def power_of_two_selection_tensor(tensor_data: np.ndarray,
|
|
|
45
50
|
n_iter: Number of iterations to search for the optimal threshold (not used for this method).
|
|
46
51
|
min_threshold: Minimal threshold to use if threshold is too small (not used for this method).
|
|
47
52
|
quant_error_method: an error function to optimize the parameters' selection accordingly.
|
|
53
|
+
node: The node for which the quantization error is computed (used only with HMSE error method).
|
|
54
|
+
hessian_info_service: HessianInfoService object for retrieving Hessian-based scores (used only with HMSE error method).
|
|
55
|
+
num_hessian_samples: Number of samples to approximate Hessian-based scores on (used only with HMSE error method).
|
|
48
56
|
|
|
49
57
|
Returns:
|
|
50
58
|
Power of two threshold to quantize the tensor in a power of 2 manner.
|
|
@@ -57,8 +65,10 @@ def power_of_two_selection_tensor(tensor_data: np.ndarray,
|
|
|
57
65
|
signed = True # weights are always signed
|
|
58
66
|
axis = -1 if per_channel else None
|
|
59
67
|
error_function = get_threshold_selection_tensor_error_function(QuantizationMethod.POWER_OF_TWO,
|
|
60
|
-
quant_error_method, p, axis=axis, norm=False,
|
|
61
|
-
signed=signed
|
|
68
|
+
quant_error_method, p, axis=axis, norm=False,
|
|
69
|
+
n_bits=n_bits, signed=signed, node=node,
|
|
70
|
+
hessian_info_service=hessian_info_service,
|
|
71
|
+
num_hessian_samples=num_hessian_samples)
|
|
62
72
|
threshold = qparams_selection_tensor_search(error_function,
|
|
63
73
|
tensor_data,
|
|
64
74
|
n_bits,
|
|
@@ -12,10 +12,15 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
# ==============================================================================
|
|
15
|
+
import copy
|
|
16
|
+
|
|
15
17
|
from tqdm import tqdm
|
|
16
18
|
from typing import List
|
|
17
19
|
|
|
20
|
+
from model_compression_toolkit.constants import NUM_QPARAM_HESSIAN_SAMPLES
|
|
21
|
+
from model_compression_toolkit.core import QuantizationErrorMethod
|
|
18
22
|
from model_compression_toolkit.core.common import Graph, BaseNode
|
|
23
|
+
from model_compression_toolkit.core.common.hessian import HessianInfoService
|
|
19
24
|
from model_compression_toolkit.core.common.quantization.quantization_params_generation.qparams_activations_computation \
|
|
20
25
|
import get_activations_qparams
|
|
21
26
|
from model_compression_toolkit.core.common.quantization.quantization_params_generation.qparams_weights_computation import \
|
|
@@ -25,7 +30,9 @@ from model_compression_toolkit.logger import Logger
|
|
|
25
30
|
|
|
26
31
|
def calculate_quantization_params(graph: Graph,
|
|
27
32
|
nodes: List[BaseNode] = [],
|
|
28
|
-
specific_nodes: bool = False
|
|
33
|
+
specific_nodes: bool = False,
|
|
34
|
+
hessian_info_service: HessianInfoService = None,
|
|
35
|
+
num_hessian_samples: int = NUM_QPARAM_HESSIAN_SAMPLES):
|
|
29
36
|
"""
|
|
30
37
|
For a graph, go over its nodes, compute quantization params (for both weights and activations according
|
|
31
38
|
to the given framework info), and create and attach a NodeQuantizationConfig to each node (containing the
|
|
@@ -39,6 +46,8 @@ def calculate_quantization_params(graph: Graph,
|
|
|
39
46
|
graph: Graph to compute its nodes' thresholds.
|
|
40
47
|
nodes: List of nodes to compute their thresholds instead of computing it for all nodes in the graph.
|
|
41
48
|
specific_nodes: Flag to compute thresholds for only specific nodes.
|
|
49
|
+
hessian_info_service: HessianInfoService object for retrieving Hessian-based scores (used only with HMSE error method).
|
|
50
|
+
num_hessian_samples: Number of samples to approximate Hessian-based scores on (used only with HMSE error method).
|
|
42
51
|
|
|
43
52
|
"""
|
|
44
53
|
|
|
@@ -60,10 +69,28 @@ def calculate_quantization_params(graph: Graph,
|
|
|
60
69
|
output_channels_axis = channels_axis[0]
|
|
61
70
|
else:
|
|
62
71
|
output_channels_axis = None
|
|
72
|
+
|
|
73
|
+
mod_attr_cfg = attr_cfg
|
|
74
|
+
|
|
75
|
+
if attr_cfg.weights_error_method == QuantizationErrorMethod.HMSE:
|
|
76
|
+
kernel_attr_name = graph.fw_info.get_kernel_op_attributes(n.type)
|
|
77
|
+
if len(kernel_attr_name) > 0:
|
|
78
|
+
kernel_attr_name = kernel_attr_name[0]
|
|
79
|
+
|
|
80
|
+
if kernel_attr_name is None or kernel_attr_name not in attr:
|
|
81
|
+
Logger.warning(f"The HMSE error method for parameters selection is only supported for "
|
|
82
|
+
f"kernel weights attributes. Running parameters selection for attribute "
|
|
83
|
+
f"'{attr}' in node '{n.name}' with the default MSE error method instead.")
|
|
84
|
+
mod_attr_cfg = copy.deepcopy(attr_cfg)
|
|
85
|
+
mod_attr_cfg.weights_error_method = QuantizationErrorMethod.MSE
|
|
86
|
+
|
|
63
87
|
weights_params = get_weights_qparams(n.get_weights_by_keys(attr),
|
|
64
88
|
candidate_qc.weights_quantization_cfg,
|
|
65
|
-
|
|
66
|
-
output_channels_axis
|
|
89
|
+
mod_attr_cfg,
|
|
90
|
+
output_channels_axis,
|
|
91
|
+
node=n,
|
|
92
|
+
hessian_info_service=hessian_info_service,
|
|
93
|
+
num_hessian_samples=num_hessian_samples)
|
|
67
94
|
attr_cfg.set_weights_quantization_param(weights_params)
|
|
68
95
|
|
|
69
96
|
if n.is_activation_quantization_enabled():
|
|
@@ -12,11 +12,12 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
# ==============================================================================
|
|
15
|
-
from typing import Dict, Any
|
|
15
|
+
from typing import Dict, Any
|
|
16
16
|
|
|
17
17
|
import numpy as np
|
|
18
18
|
|
|
19
|
-
from model_compression_toolkit.
|
|
19
|
+
from model_compression_toolkit.constants import NUM_QPARAM_HESSIAN_SAMPLES
|
|
20
|
+
from model_compression_toolkit.core.common.hessian import HessianInfoService
|
|
20
21
|
from model_compression_toolkit.defaultdict import DefaultDict
|
|
21
22
|
from model_compression_toolkit.core.common.framework_info import FrameworkInfo
|
|
22
23
|
from model_compression_toolkit.core.common.quantization.node_quantization_config import NodeWeightsQuantizationConfig, \
|
|
@@ -27,31 +28,40 @@ from model_compression_toolkit.core.common.quantization.node_quantization_config
|
|
|
27
28
|
dummy_channel_mapping = DefaultDict(default_value=(None, None))
|
|
28
29
|
|
|
29
30
|
|
|
30
|
-
def get_weights_qparams(
|
|
31
|
+
def get_weights_qparams(weights_attr_values: np.ndarray,
|
|
31
32
|
weights_quant_config: NodeWeightsQuantizationConfig,
|
|
32
33
|
attr_quant_config: WeightsAttrQuantizationConfig,
|
|
33
|
-
output_channels_axis: int
|
|
34
|
+
output_channels_axis: int,
|
|
35
|
+
node=None,
|
|
36
|
+
hessian_info_service: HessianInfoService = None,
|
|
37
|
+
num_hessian_samples: int = NUM_QPARAM_HESSIAN_SAMPLES) -> Dict[Any, Any]:
|
|
34
38
|
"""
|
|
35
39
|
Compute thresholds to quantize a kernel according to a NodeWeightsQuantizationConfig
|
|
36
40
|
instance.
|
|
37
41
|
|
|
38
42
|
Args:
|
|
39
|
-
|
|
43
|
+
weights_attr_values: Weights attribute parameter to compute the quantization thresholds for.
|
|
40
44
|
weights_quant_config: Weights quantization configuration to define how the thresholds are computed.
|
|
41
45
|
attr_quant_config: A specific weights attribute quantization configuration to get its params.
|
|
42
46
|
output_channels_axis: Index of the kernel output channels dimension.
|
|
47
|
+
node: The node for which the quantization error is computed (used only with HMSE error method).
|
|
48
|
+
hessian_info_service: HessianInfoService object for retrieving Hessian-based scores (used only with HMSE error method).
|
|
49
|
+
num_hessian_samples: Number of samples to approximate Hessian-based scores on (used only with HMSE error method).
|
|
43
50
|
|
|
44
51
|
Returns:
|
|
45
52
|
A dictionary with the quantization threshold of the kernel.
|
|
46
53
|
"""
|
|
47
54
|
if attr_quant_config.weights_quantization_params_fn is not None:
|
|
48
|
-
weights_params = attr_quant_config.weights_quantization_params_fn(
|
|
55
|
+
weights_params = attr_quant_config.weights_quantization_params_fn(weights_attr_values,
|
|
49
56
|
p=attr_quant_config.l_p_value,
|
|
50
57
|
n_bits=attr_quant_config.weights_n_bits,
|
|
51
58
|
per_channel=attr_quant_config.weights_per_channel_threshold and output_channels_axis is not None,
|
|
52
59
|
channel_axis=output_channels_axis,
|
|
53
60
|
min_threshold=weights_quant_config.min_threshold,
|
|
54
|
-
quant_error_method=attr_quant_config.weights_error_method
|
|
61
|
+
quant_error_method=attr_quant_config.weights_error_method,
|
|
62
|
+
node=node,
|
|
63
|
+
hessian_info_service=hessian_info_service,
|
|
64
|
+
num_hessian_samples=num_hessian_samples)
|
|
55
65
|
else:
|
|
56
66
|
weights_params = {}
|
|
57
67
|
|