mct-nightly 2.0.0.20240417.406__tar.gz → 2.0.0.20240418.439__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.20240418.439}/PKG-INFO +1 -1
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/mct_nightly.egg-info/PKG-INFO +1 -1
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/mct_nightly.egg-info/SOURCES.txt +3 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/__init__.py +1 -1
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/constants.py +2 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/graph/base_node.py +1 -1
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/hessian/hessian_info_service.py +2 -3
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/hessian/trace_hessian_request.py +1 -3
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/quantization/quantization_config.py +5 -2
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/model_compression_toolkit/core/common/quantization/quantization_params_generation/lut_kmeans_params.py +10 -3
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/model_compression_toolkit/core/common/similarity_analyzer.py +14 -2
- mct-nightly-2.0.0.20240418.439/model_compression_toolkit/core/common/substitutions/remove_identity.py +48 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/graph_prep_runner.py +10 -4
- mct-nightly-2.0.0.20240418.439/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.20240418.439}/model_compression_toolkit/core/keras/keras_implementation.py +3 -1
- mct-nightly-2.0.0.20240418.439/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.20240418.439}/model_compression_toolkit/core/pytorch/pytorch_implementation.py +3 -1
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/quantization_prep_runner.py +6 -2
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/runner.py +5 -2
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/gptq/keras/quantization_facade.py +2 -1
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/gptq/pytorch/quantization_facade.py +3 -1
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/gptq/runner.py +1 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/LICENSE.md +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/README.md +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/mct_nightly.egg-info/dependency_links.txt +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/mct_nightly.egg-info/requires.txt +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/mct_nightly.egg-info/top_level.txt +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/analyzer.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/back2framework/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/back2framework/base_model_builder.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/base_substitutions.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/collectors/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/collectors/base_collector.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/collectors/histogram_collector.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/collectors/mean_collector.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/model_compression_toolkit/core/common/collectors/statistics_collector.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/framework_implementation.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/framework_info.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/fusion/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/fusion/layer_fusing.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/graph/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/graph/base_graph.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/graph/edge.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/graph/functional_node.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/graph/graph_matchers.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/graph/graph_searches.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/graph/memory_graph/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/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.20240418.439}/model_compression_toolkit/core/common/graph/memory_graph/cut.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/model_compression_toolkit/core/common/hessian/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/hessian/hessian_info_utils.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/hessian/trace_hessian_calculator.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/matchers/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/matchers/base_graph_filter.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/matchers/base_matcher.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/matchers/edge_matcher.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/matchers/function.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/matchers/node_matcher.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/matchers/walk_matcher.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/memory_computation.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/mixed_precision/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/model_compression_toolkit/core/common/mixed_precision/distance_weighting.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/model_compression_toolkit/core/common/mixed_precision/sensitivity_evaluation.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/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.20240418.439}/model_compression_toolkit/core/common/model_builder_mode.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/model_collector.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/model_validation.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/network_editors/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/network_editors/actions.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/network_editors/edit_network.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/network_editors/node_filters.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/node_prior_info.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/pruning/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/pruning/channels_grouping.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/pruning/greedy_mask_calculator.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/pruning/importance_metrics/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/model_compression_toolkit/core/common/pruning/mask/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/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.20240418.439}/model_compression_toolkit/core/common/pruning/memory_calculator.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/pruning/prune_graph.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/pruning/pruner.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/pruning/pruning_config.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/pruning/pruning_framework_implementation.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/pruning/pruning_info.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/pruning/pruning_section.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/quantization/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/model_compression_toolkit/core/common/quantization/core_config.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/quantization/debug_config.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/quantization/filter_nodes_candidates.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/quantization/node_quantization_config.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/quantization/quantization_fn_selection.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/model_compression_toolkit/core/common/quantization/quantize_graph_weights.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/quantization/quantize_node.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/quantization/quantizers/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/model_compression_toolkit/core/common/quantization/quantizers/quantizers_helpers.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/quantization/quantizers/uniform_quantizers.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/statistics_correction/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/model_compression_toolkit/core/common/statistics_correction/statistics_correction.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/substitutions/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/substitutions/apply_substitutions.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/substitutions/batchnorm_folding.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/substitutions/batchnorm_reconstruction.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/substitutions/batchnorm_refusing.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/substitutions/linear_collapsing.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/substitutions/linear_collapsing_substitution.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/substitutions/residual_collapsing.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/substitutions/scale_equalization.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/substitutions/shift_negative_activation.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/substitutions/softmax_shift.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/model_compression_toolkit/core/common/substitutions/weights_activation_split.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/user_info.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/visualization/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/visualization/final_config_visualizer.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/visualization/nn_visualizer.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/common/visualization/tensorboard_writer.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/keras/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/keras/back2framework/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/keras/back2framework/factory_model_builder.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/keras/back2framework/float_model_builder.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/keras/back2framework/instance_builder.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/keras/back2framework/keras_model_builder.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/model_compression_toolkit/core/keras/back2framework/quantized_model_builder.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/keras/constants.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/keras/custom_layer_validation.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/keras/default_framework_info.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/keras/graph_substitutions/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/batchnorm_folding.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/linear_collapsing.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/residual_collapsing.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/model_compression_toolkit/core/keras/hessian/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/model_compression_toolkit/core/keras/keras_model_validation.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/keras/keras_node_prior_info.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/keras/mixed_precision/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/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.20240418.439}/model_compression_toolkit/core/keras/pruning/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/keras/pruning/pruning_keras_implementation.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/keras/quantizer/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/keras/quantizer/base_quantizer.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/keras/quantizer/fake_quant_builder.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/keras/quantizer/lut_fake_quant.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/keras/reader/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/keras/reader/common.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/keras/reader/connectivity_handler.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/keras/reader/nested_model/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/model_compression_toolkit/core/keras/reader/node_builder.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/keras/reader/reader.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/keras/resource_utilization_data_facade.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/keras/statistics_correction/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/model_compression_toolkit/core/keras/tf_tensor_numpy.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/keras/visualization/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/pytorch/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/pytorch/back2framework/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/pytorch/back2framework/factory_model_builder.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/pytorch/back2framework/float_model_builder.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/pytorch/back2framework/instance_builder.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/model_compression_toolkit/core/pytorch/back2framework/pytorch_model_builder.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/pytorch/back2framework/quantization_wrapper/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/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.20240418.439}/model_compression_toolkit/core/pytorch/back2framework/quantized_model_builder.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/pytorch/constants.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/pytorch/default_framework_info.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/pytorch/graph_substitutions/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/batchnorm_folding.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/const_holder_conv.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/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.20240418.439}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/linear_collapsing.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/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.20240418.439}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/relu_bound_to_power_of_2.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/residual_collapsing.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/model_compression_toolkit/core/pytorch/hessian/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/model_compression_toolkit/core/pytorch/mixed_precision/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/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.20240418.439}/model_compression_toolkit/core/pytorch/pruning/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/pytorch/pruning/pruning_pytorch_implementation.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/pytorch/pytorch_device_config.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/pytorch/pytorch_node_prior_info.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/pytorch/quantizer/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/pytorch/quantizer/fake_quant_builder.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/pytorch/quantizer/lut_fake_quant.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/pytorch/reader/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/pytorch/reader/graph_builders.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/pytorch/reader/node_holders.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/pytorch/reader/reader.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/pytorch/resource_utilization_data_facade.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/core/pytorch/statistics_correction/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/model_compression_toolkit/core/pytorch/utils.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/data_generation/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/data_generation/common/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/data_generation/common/constants.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/data_generation/common/data_generation.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/data_generation/common/data_generation_config.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/data_generation/common/enums.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/data_generation/common/image_pipeline.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/data_generation/common/model_info_exctractors.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/data_generation/common/optimization_utils.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/data_generation/keras/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/data_generation/keras/constants.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/data_generation/keras/image_pipeline.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/data_generation/keras/keras_data_generation.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/data_generation/keras/model_info_exctractors.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/data_generation/keras/optimization_functions/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/model_compression_toolkit/data_generation/keras/optimization_utils.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/data_generation/pytorch/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/data_generation/pytorch/constants.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/data_generation/pytorch/image_pipeline.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/data_generation/pytorch/model_info_exctractors.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/data_generation/pytorch/optimization_functions/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/model_compression_toolkit/data_generation/pytorch/optimization_utils.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/data_generation/pytorch/pytorch_data_generation.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/defaultdict.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/exporter/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/exporter/model_exporter/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/exporter/model_exporter/fw_agonstic/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/exporter/model_exporter/fw_agonstic/exporter.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/model_compression_toolkit/exporter/model_exporter/keras/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/model_compression_toolkit/exporter/model_exporter/pytorch/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/model_compression_toolkit/exporter/model_wrapper/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/exporter/model_wrapper/fw_agnostic/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/model_compression_toolkit/exporter/model_wrapper/keras/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/exporter/model_wrapper/keras/builder/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/exporter/model_wrapper/keras/builder/fully_quantized_model_builder.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/model_compression_toolkit/exporter/model_wrapper/keras/validate_layer.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/exporter/model_wrapper/pytorch/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/exporter/model_wrapper/pytorch/builder/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/exporter/model_wrapper/pytorch/builder/fully_quantized_model_builder.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/model_compression_toolkit/exporter/model_wrapper/pytorch/validate_layer.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/gptq/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/gptq/common/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/gptq/common/gptq_config.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/gptq/common/gptq_constants.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/gptq/common/gptq_framework_implementation.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/gptq/common/gptq_graph.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/gptq/common/gptq_training.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/gptq/keras/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/gptq/keras/gptq_keras_implementation.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/gptq/keras/gptq_loss.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/gptq/keras/gptq_training.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/gptq/keras/graph_info.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/gptq/keras/quantizer/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/model_compression_toolkit/gptq/keras/quantizer/quant_utils.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/gptq/keras/quantizer/quantization_builder.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/gptq/keras/quantizer/regularization_factory.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/gptq/keras/quantizer/soft_rounding/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/model_compression_toolkit/gptq/keras/quantizer/ste_rounding/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/model_compression_toolkit/gptq/pytorch/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/gptq/pytorch/gptq_loss.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/gptq/pytorch/gptq_pytorch_implementation.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/gptq/pytorch/gptq_training.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/gptq/pytorch/graph_info.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/gptq/pytorch/quantizer/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/model_compression_toolkit/gptq/pytorch/quantizer/quant_utils.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/gptq/pytorch/quantizer/quantization_builder.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/gptq/pytorch/quantizer/regularization_factory.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/gptq/pytorch/quantizer/soft_rounding/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/model_compression_toolkit/gptq/pytorch/quantizer/ste_rounding/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/model_compression_toolkit/logger.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/metadata.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/pruning/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/pruning/keras/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/pruning/keras/pruning_facade.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/pruning/pytorch/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/pruning/pytorch/pruning_facade.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/ptq/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/ptq/keras/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/ptq/keras/quantization_facade.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/ptq/pytorch/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/ptq/pytorch/quantization_facade.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/ptq/runner.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/qat/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/qat/common/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/qat/common/qat_config.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/qat/keras/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/qat/keras/quantization_facade.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/qat/keras/quantizer/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/model_compression_toolkit/qat/keras/quantizer/lsq/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/qat/keras/quantizer/lsq/symmetric_lsq.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/qat/keras/quantizer/lsq/uniform_lsq.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/qat/keras/quantizer/quant_utils.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/qat/keras/quantizer/quantization_builder.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/qat/keras/quantizer/ste_rounding/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/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.20240418.439}/model_compression_toolkit/qat/pytorch/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/qat/pytorch/quantization_facade.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/qat/pytorch/quantizer/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/model_compression_toolkit/qat/pytorch/quantizer/lsq/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/qat/pytorch/quantizer/lsq/symmetric_lsq.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/qat/pytorch/quantizer/lsq/uniform_lsq.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/qat/pytorch/quantizer/quantization_builder.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/qat/pytorch/quantizer/quantizer_utils.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/qat/pytorch/quantizer/ste_rounding/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/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.20240418.439}/model_compression_toolkit/target_platform_capabilities/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/target_platform_capabilities/constants.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/target_platform_capabilities/immutable.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/target_platform_capabilities/target_platform/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/model_compression_toolkit/target_platform_capabilities/target_platform/fusing.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/model_compression_toolkit/target_platform_capabilities/target_platform/operators.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/model_compression_toolkit/target_platform_capabilities/tpc_models/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_lut/tp_model.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2/tp_model.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2/tpc_keras.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/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.20240418.439}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2_lut/tp_model.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2_lut/tpc_keras.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/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.20240418.439}/model_compression_toolkit/trainable_infrastructure/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/trainable_infrastructure/common/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/trainable_infrastructure/common/base_trainable_quantizer.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/trainable_infrastructure/common/constants.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/trainable_infrastructure/common/get_quantizer_config.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/trainable_infrastructure/common/get_quantizers.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/trainable_infrastructure/common/quant_utils.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/trainable_infrastructure/common/trainable_quantizer_config.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/trainable_infrastructure/keras/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/trainable_infrastructure/keras/base_keras_quantizer.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/trainable_infrastructure/keras/config_serialization.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/trainable_infrastructure/keras/load_model.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/trainable_infrastructure/keras/quantize_wrapper.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/trainable_infrastructure/keras/quantizer_utils.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/trainable_infrastructure/pytorch/__init__.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/model_compression_toolkit/trainable_infrastructure/pytorch/base_pytorch_quantizer.py +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/setup.cfg +0 -0
- {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/setup.py +0 -0
{mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240418.439}/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.20240418.000439"
|
|
@@ -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:
|
|
@@ -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),
|
|
@@ -18,7 +18,8 @@ from sklearn.cluster import KMeans
|
|
|
18
18
|
|
|
19
19
|
import model_compression_toolkit.core.common.quantization.quantization_config as qc
|
|
20
20
|
from model_compression_toolkit.constants import LUT_VALUES, MIN_THRESHOLD, SCALE_PER_CHANNEL, \
|
|
21
|
-
LUT_VALUES_BITWIDTH, THRESHOLD
|
|
21
|
+
LUT_VALUES_BITWIDTH, THRESHOLD, NUM_QPARAM_HESSIAN_SAMPLES
|
|
22
|
+
from model_compression_toolkit.core.common.hessian import HessianInfoService
|
|
22
23
|
from model_compression_toolkit.core.common.quantization.quantizers.quantizers_helpers import \
|
|
23
24
|
max_power_of_two, int_quantization_with_threshold
|
|
24
25
|
from model_compression_toolkit.core.common.quantization.quantization_params_generation.symmetric_selection import \
|
|
@@ -37,7 +38,10 @@ def lut_kmeans_tensor(tensor_data: np.ndarray,
|
|
|
37
38
|
n_iter: int = 10,
|
|
38
39
|
min_threshold: float = MIN_THRESHOLD,
|
|
39
40
|
quant_error_method: qc.QuantizationErrorMethod = None,
|
|
40
|
-
is_symmetric=False
|
|
41
|
+
is_symmetric=False,
|
|
42
|
+
node=None,
|
|
43
|
+
hessian_info_service: HessianInfoService = None,
|
|
44
|
+
num_hessian_samples: int = NUM_QPARAM_HESSIAN_SAMPLES) -> dict:
|
|
41
45
|
"""
|
|
42
46
|
The quantizer first finds the closest max value per channel of tensor_data.
|
|
43
47
|
Now, we divide tensor_data with the threshold vector per channel. In addition, we scale the result to the range
|
|
@@ -53,7 +57,10 @@ def lut_kmeans_tensor(tensor_data: np.ndarray,
|
|
|
53
57
|
n_iter: Number of iterations to search_methods for the optimal threshold.
|
|
54
58
|
min_threshold: Minimal threshold to chose when the computed one is smaller.
|
|
55
59
|
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)
|
|
60
|
+
is_symmetric (bool): Whether to apply symmetric weight quantization (default is False, meaning power of 2 quantization).
|
|
61
|
+
node: The node for which the quantization error is computed (not used for this method).
|
|
62
|
+
hessian_info_service: HessianInfoService object for retrieving Hessian-based scores (not used for this method).
|
|
63
|
+
num_hessian_samples: Number of samples to approximate Hessian-based scores on (not used for this method).
|
|
57
64
|
|
|
58
65
|
Returns:
|
|
59
66
|
A dictionary containing the cluster assignments according to the k-means algorithm,
|
|
@@ -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
|
|
|
@@ -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.error_functions import \
|
|
20
21
|
get_threshold_selection_tensor_error_function, get_threshold_selection_histogram_error_function, _kl_error_histogram
|
|
21
22
|
from model_compression_toolkit.core.common.quantization.quantization_params_generation.qparams_search import \
|
|
@@ -33,7 +34,10 @@ def symmetric_selection_tensor(tensor_data: np.ndarray,
|
|
|
33
34
|
channel_axis: int = 1,
|
|
34
35
|
n_iter: int = 10,
|
|
35
36
|
min_threshold: float = MIN_THRESHOLD,
|
|
36
|
-
quant_error_method: qc.QuantizationErrorMethod = qc.QuantizationErrorMethod.MSE
|
|
37
|
+
quant_error_method: qc.QuantizationErrorMethod = qc.QuantizationErrorMethod.MSE,
|
|
38
|
+
node=None,
|
|
39
|
+
hessian_info_service: HessianInfoService = None,
|
|
40
|
+
num_hessian_samples: int = NUM_QPARAM_HESSIAN_SAMPLES) -> dict:
|
|
37
41
|
"""
|
|
38
42
|
Compute the optimal threshold based on the provided QuantizationErrorMethod to quantize the tensor.
|
|
39
43
|
Different search is applied, depends on the value of the selected QuantizationErrorMethod.
|
|
@@ -47,6 +51,9 @@ def symmetric_selection_tensor(tensor_data: np.ndarray,
|
|
|
47
51
|
n_iter: Number of iterations to search for the optimal threshold (not used for this method).
|
|
48
52
|
min_threshold: Minimal threshold to use if threshold is too small (not used for this method).
|
|
49
53
|
quant_error_method: an error function to optimize the parameters' selection accordingly.
|
|
54
|
+
node: The node for which the quantization error is computed (used only with HMSE error method).
|
|
55
|
+
hessian_info_service: HessianInfoService object for retrieving Hessian-based scores (used only with HMSE error method).
|
|
56
|
+
num_hessian_samples: Number of samples to approximate Hessian-based scores on (used only with HMSE error method).
|
|
50
57
|
|
|
51
58
|
Returns:
|
|
52
59
|
Optimal threshold to quantize the tensor in a symmetric manner.
|
|
@@ -59,7 +66,11 @@ def symmetric_selection_tensor(tensor_data: np.ndarray,
|
|
|
59
66
|
else:
|
|
60
67
|
signed = True # weights are always signed
|
|
61
68
|
axis = -1 if per_channel else None
|
|
62
|
-
error_function = get_threshold_selection_tensor_error_function(QuantizationMethod.SYMMETRIC, quant_error_method,
|
|
69
|
+
error_function = get_threshold_selection_tensor_error_function(QuantizationMethod.SYMMETRIC, quant_error_method,
|
|
70
|
+
p, axis=axis, norm=False, n_bits=n_bits,
|
|
71
|
+
signed=signed, node=node,
|
|
72
|
+
hessian_info_service=hessian_info_service,
|
|
73
|
+
num_hessian_samples=num_hessian_samples)
|
|
63
74
|
threshold = qparams_symmetric_selection_tensor_search(error_function,
|
|
64
75
|
tensor_data,
|
|
65
76
|
tensor_max,
|
|
@@ -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, RANGE_MIN, RANGE_MAX
|
|
18
|
+
from model_compression_toolkit.constants import MIN_THRESHOLD, RANGE_MIN, RANGE_MAX, 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_uniform_selection_tensor_search, qparams_uniform_selection_histogram_search
|
|
21
22
|
from model_compression_toolkit.core.common.quantization.quantization_params_generation.error_functions import \
|
|
@@ -31,7 +32,10 @@ def uniform_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) -> dict:
|
|
35
39
|
"""
|
|
36
40
|
Compute the optimal quantization range based on the provided QuantizationErrorMethod
|
|
37
41
|
to uniformly quantize the tensor.
|
|
@@ -46,6 +50,9 @@ def uniform_selection_tensor(tensor_data: np.ndarray,
|
|
|
46
50
|
n_iter: Number of iterations to search for the optimal threshold (not used for this method).
|
|
47
51
|
min_threshold: Minimal threshold to use if threshold is too small (not used for this method).
|
|
48
52
|
quant_error_method: an error function to optimize the range 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).
|
|
49
56
|
|
|
50
57
|
Returns:
|
|
51
58
|
Optimal quantization range to quantize the tensor uniformly.
|
|
@@ -57,7 +64,10 @@ def uniform_selection_tensor(tensor_data: np.ndarray,
|
|
|
57
64
|
mm = tensor_min, tensor_max
|
|
58
65
|
else:
|
|
59
66
|
axis = -1 if per_channel else None
|
|
60
|
-
error_function = get_threshold_selection_tensor_error_function(QuantizationMethod.UNIFORM, quant_error_method,
|
|
67
|
+
error_function = get_threshold_selection_tensor_error_function(QuantizationMethod.UNIFORM, quant_error_method,
|
|
68
|
+
p, axis=axis, norm=False, node=node,
|
|
69
|
+
hessian_info_service=hessian_info_service,
|
|
70
|
+
num_hessian_samples=num_hessian_samples)
|
|
61
71
|
mm = qparams_uniform_selection_tensor_search(error_function,
|
|
62
72
|
tensor_data,
|
|
63
73
|
tensor_min,
|
|
@@ -24,7 +24,8 @@ from model_compression_toolkit.core.common.graph.base_graph import Graph
|
|
|
24
24
|
from model_compression_toolkit.core.common.quantization.candidate_node_quantization_config import \
|
|
25
25
|
CandidateNodeQuantizationConfig
|
|
26
26
|
from model_compression_toolkit.core.common.quantization.node_quantization_config import NodeActivationQuantizationConfig
|
|
27
|
-
from model_compression_toolkit.core.common.quantization.quantization_config import QuantizationConfig
|
|
27
|
+
from model_compression_toolkit.core.common.quantization.quantization_config import QuantizationConfig, \
|
|
28
|
+
QuantizationErrorMethod
|
|
28
29
|
from model_compression_toolkit.core.common.quantization.quantization_params_fn_selection import \
|
|
29
30
|
get_activation_quantization_params_fn, get_weights_quantization_params_fn
|
|
30
31
|
from model_compression_toolkit.core.common.quantization.quantization_fn_selection import \
|
|
@@ -36,19 +37,31 @@ from model_compression_toolkit.target_platform_capabilities.target_platform.op_q
|
|
|
36
37
|
|
|
37
38
|
def set_quantization_configuration_to_graph(graph: Graph,
|
|
38
39
|
quant_config: QuantizationConfig,
|
|
39
|
-
mixed_precision_enable: bool = False
|
|
40
|
+
mixed_precision_enable: bool = False,
|
|
41
|
+
running_gptq: bool = False) -> Graph:
|
|
40
42
|
"""
|
|
41
43
|
Add quantization configuration for each graph node.
|
|
42
44
|
|
|
43
45
|
Args:
|
|
44
46
|
graph: Graph for which to add quantization info to each node.
|
|
45
47
|
quant_config: Quantization configuration containing parameters for how the graph should be quantized.
|
|
46
|
-
mixed_precision_enable: is mixed precision enabled
|
|
48
|
+
mixed_precision_enable: is mixed precision enabled.
|
|
49
|
+
running_gptq: Whether or not a GPTQ optimization is planned to run after the PTQ process.
|
|
47
50
|
|
|
48
51
|
Returns:
|
|
49
52
|
The graph with quantization configurations attached to each node in it.
|
|
50
53
|
"""
|
|
51
54
|
|
|
55
|
+
if quant_config.weights_error_method == QuantizationErrorMethod.HMSE:
|
|
56
|
+
if not running_gptq:
|
|
57
|
+
Logger.warning(f"The HMSE error method for parameters selection is only supported when running GPTQ "
|
|
58
|
+
f"optimization due to long execution time that is not suitable for basic PTQ. "
|
|
59
|
+
f"Using the default MSE error method instead.")
|
|
60
|
+
quant_config.weights_error_method = QuantizationErrorMethod.MSE
|
|
61
|
+
else:
|
|
62
|
+
Logger.warning("Using the HMSE error method for weights quantization parameters search. "
|
|
63
|
+
"Note: This method may significantly increase runtime during the parameter search process.")
|
|
64
|
+
|
|
52
65
|
for n in graph.nodes:
|
|
53
66
|
set_quantization_configs_to_node(node=n,
|
|
54
67
|
quant_config=quant_config,
|
|
@@ -18,6 +18,8 @@ from typing import Any
|
|
|
18
18
|
import numpy as np
|
|
19
19
|
|
|
20
20
|
from model_compression_toolkit.constants import EPS
|
|
21
|
+
from model_compression_toolkit.logger import Logger
|
|
22
|
+
|
|
21
23
|
|
|
22
24
|
#########################
|
|
23
25
|
# Helpful functions
|
|
@@ -87,7 +89,8 @@ def compute_mse(float_tensor: np.ndarray,
|
|
|
87
89
|
norm: bool = False,
|
|
88
90
|
norm_eps: float = 1e-8,
|
|
89
91
|
batch: bool = False,
|
|
90
|
-
axis: int = None
|
|
92
|
+
axis: int = None,
|
|
93
|
+
weights: np.ndarray = None) -> float:
|
|
91
94
|
"""
|
|
92
95
|
Compute the mean square error between two numpy arrays.
|
|
93
96
|
|
|
@@ -98,6 +101,7 @@ def compute_mse(float_tensor: np.ndarray,
|
|
|
98
101
|
norm_eps: epsilon value for error normalization stability.
|
|
99
102
|
batch: Whether to run batch similarity analysis or not.
|
|
100
103
|
axis: Axis along which the operator has been computed.
|
|
104
|
+
weights: Weights tensor to use for computing Weighted-MSE error computation.
|
|
101
105
|
|
|
102
106
|
Returns:
|
|
103
107
|
The MSE distance between the two tensors.
|
|
@@ -107,7 +111,15 @@ def compute_mse(float_tensor: np.ndarray,
|
|
|
107
111
|
float_flat = flatten_tensor(float_tensor, batch, axis)
|
|
108
112
|
fxp_flat = flatten_tensor(fxp_tensor, batch, axis)
|
|
109
113
|
|
|
110
|
-
|
|
114
|
+
if weights is not None:
|
|
115
|
+
w_flat = flatten_tensor(weights, batch, axis)
|
|
116
|
+
if w_flat.shape != float_flat.shape:
|
|
117
|
+
Logger.critical(f"Shape mismatch: The shape of the weights tensor {weights.shape} does not match the shape "
|
|
118
|
+
f"of the input tensors {float_flat.shape} for Weighted-MSE computation.") # pragma: no cover
|
|
119
|
+
error = ((w_flat * (float_flat - fxp_flat)) ** 2).mean(axis=-1)
|
|
120
|
+
else:
|
|
121
|
+
error = ((float_flat - fxp_flat) ** 2).mean(axis=-1)
|
|
122
|
+
|
|
111
123
|
if norm:
|
|
112
124
|
error /= ((float_flat ** 2).mean(axis=-1) + norm_eps)
|
|
113
125
|
|