mct-nightly 1.11.0.20240131.post412__tar.gz → 1.11.0.20240201.post434__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-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/PKG-INFO +1 -1
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/mct_nightly.egg-info/PKG-INFO +1 -1
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/constants.py +1 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/graph/base_graph.py +1 -1
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/quantization/candidate_node_quantization_config.py +4 -2
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/quantization/node_quantization_config.py +11 -6
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/quantization/quantization_config.py +5 -13
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/quantization/set_node_quantization_config.py +40 -17
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/exporter/model_exporter/keras/fakely_quant_tflite_exporter.py +14 -7
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/exporter/model_exporter/pytorch/fakely_quant_onnx_pytorch_exporter.py +4 -1
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/target_platform_capabilities/constants.py +18 -1
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/target_platform_capabilities/target_platform/__init__.py +1 -1
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/target_platform_capabilities/target_platform/op_quantization_config.py +175 -33
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/operations_to_layers.py +7 -3
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/target_platform_capabilities.py +11 -1
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/tp_model.py +64 -18
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/tpc_keras.py +24 -8
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/tpc_pytorch.py +15 -2
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_lut/tp_model.py +64 -20
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_lut/tpc_keras.py +24 -7
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_lut/tpc_pytorch.py +15 -2
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_pot/tp_model.py +60 -18
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_pot/tpc_keras.py +24 -7
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_pot/tpc_pytorch.py +15 -2
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/tp_model.py +52 -11
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/tpc_keras.py +25 -8
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/tpc_pytorch.py +15 -2
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/tp_model.py +52 -13
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/tpc_keras.py +12 -1
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/tpc_pytorch.py +12 -1
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/setup.cfg +1 -1
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/LICENSE.md +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/README.md +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/mct_nightly.egg-info/SOURCES.txt +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/mct_nightly.egg-info/dependency_links.txt +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/mct_nightly.egg-info/requires.txt +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/mct_nightly.egg-info/top_level.txt +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/analyzer.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/back2framework/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/back2framework/base_model_builder.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/base_substitutions.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/collectors/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/collectors/base_collector.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/collectors/histogram_collector.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/collectors/mean_collector.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/collectors/min_max_per_channel_collector.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/collectors/statistics_collector.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/collectors/statistics_collector_generator.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/data_loader.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/framework_implementation.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/framework_info.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/fusion/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/fusion/layer_fusing.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/graph/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/graph/base_node.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/graph/edge.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/graph/functional_node.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/graph/graph_matchers.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/graph/graph_searches.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/graph/memory_graph/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/graph/memory_graph/bipartite_graph.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/graph/memory_graph/compute_graph_max_cut.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/graph/memory_graph/cut.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/graph/memory_graph/max_cut_astar.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/graph/memory_graph/memory_element.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/graph/memory_graph/memory_graph.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/graph/virtual_activation_weights_node.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/hessian/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/hessian/hessian_info_service.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/hessian/hessian_info_utils.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/hessian/trace_hessian_calculator.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/hessian/trace_hessian_request.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/matchers/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/matchers/base_graph_filter.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/matchers/base_matcher.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/matchers/edge_matcher.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/matchers/function.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/matchers/node_matcher.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/matchers/walk_matcher.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/memory_computation.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/mixed_precision/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/mixed_precision/bit_width_setter.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/mixed_precision/configurable_quant_id.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/mixed_precision/configurable_quantizer_utils.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/mixed_precision/distance_weighting.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/mixed_precision/kpi_tools/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/mixed_precision/kpi_tools/kpi.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/mixed_precision/kpi_tools/kpi_aggregation_methods.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/mixed_precision/kpi_tools/kpi_data.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/mixed_precision/kpi_tools/kpi_functions_mapping.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/mixed_precision/kpi_tools/kpi_methods.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/mixed_precision/mixed_precision_quantization_config.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/mixed_precision/mixed_precision_search_facade.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/mixed_precision/mixed_precision_search_manager.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/mixed_precision/search_methods/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/mixed_precision/search_methods/linear_programming.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/mixed_precision/sensitivity_evaluation.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/mixed_precision/set_layer_to_bitwidth.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/mixed_precision/solution_refinement_procedure.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/model_builder_mode.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/model_collector.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/model_validation.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/network_editors/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/network_editors/actions.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/network_editors/edit_network.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/network_editors/node_filters.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/node_prior_info.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/pruning/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/pruning/channels_grouping.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/pruning/greedy_mask_calculator.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/pruning/importance_metrics/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/pruning/importance_metrics/base_importance_metric.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/pruning/importance_metrics/importance_metric_factory.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/pruning/importance_metrics/lfh_importance_metric.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/pruning/mask/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/pruning/mask/per_channel_mask.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/pruning/mask/per_simd_group_mask.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/pruning/memory_calculator.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/pruning/prune_graph.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/pruning/pruner.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/pruning/pruning_config.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/pruning/pruning_framework_implementation.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/pruning/pruning_info.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/pruning/pruning_section.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/quantization/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/quantization/core_config.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/quantization/debug_config.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/quantization/filter_nodes_candidates.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/quantization/quantization_analyzer.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/quantization/quantization_fn_selection.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/quantization/quantization_params_fn_selection.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/quantization/quantization_params_generation/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/quantization/quantization_params_generation/error_functions.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/quantization/quantization_params_generation/kmeans_params.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/quantization/quantization_params_generation/lut_kmeans_params.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/quantization/quantization_params_generation/outlier_filter.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/quantization/quantization_params_generation/power_of_two_selection.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/quantization/quantization_params_generation/qparams_activations_computation.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/quantization/quantization_params_generation/qparams_computation.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/quantization/quantization_params_generation/qparams_search.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/quantization/quantization_params_generation/qparams_weights_computation.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/quantization/quantization_params_generation/symmetric_selection.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/quantization/quantization_params_generation/uniform_selection.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/quantization/quantize_graph_weights.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/quantization/quantize_node.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/quantization/quantizers/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/quantization/quantizers/kmeans_quantizer.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/quantization/quantizers/lut_kmeans_quantizer.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/quantization/quantizers/quantizers_helpers.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/quantization/quantizers/uniform_quantizers.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/similarity_analyzer.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/statistics_correction/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/statistics_correction/apply_bias_correction_to_graph.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/statistics_correction/apply_second_moment_correction_to_graph.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/statistics_correction/compute_bias_correction_of_graph.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/statistics_correction/statistics_correction.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/substitutions/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/substitutions/apply_substitutions.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/substitutions/batchnorm_folding.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/substitutions/batchnorm_reconstruction.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/substitutions/batchnorm_refusing.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/substitutions/linear_collapsing.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/substitutions/linear_collapsing_substitution.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/substitutions/residual_collapsing.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/substitutions/scale_equalization.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/substitutions/shift_negative_activation.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/substitutions/softmax_shift.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/substitutions/virtual_activation_weights_composition.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/substitutions/weights_activation_split.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/user_info.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/visualization/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/visualization/final_config_visualizer.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/visualization/nn_visualizer.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/common/visualization/tensorboard_writer.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/exporter.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/graph_prep_runner.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/back2framework/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/back2framework/factory_model_builder.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/back2framework/float_model_builder.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/back2framework/instance_builder.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/back2framework/keras_model_builder.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/back2framework/mixed_precision_model_builder.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/back2framework/quantized_model_builder.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/constants.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/custom_layer_validation.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/default_framework_info.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/graph_substitutions/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/activation_decomposition.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/batchnorm_folding.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/batchnorm_reconstruction.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/batchnorm_refusing.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/dwconv_to_conv.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/input_scaling.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/linear_collapsing.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/matmul_substitution.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/multi_head_attention_decomposition.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/relu_bound_to_power_of_2.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/remove_relu_upper_bound.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/residual_collapsing.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/scale_equalization.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/separableconv_decomposition.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/shift_negative_activation.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/softmax_shift.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/virtual_activation_weights_composition.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/weights_activation_split.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/hessian/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/hessian/activation_trace_hessian_calculator_keras.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/hessian/trace_hessian_calculator_keras.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/hessian/weights_trace_hessian_calculator_keras.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/keras_implementation.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/keras_model_validation.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/keras_node_prior_info.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/kpi_data_facade.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/mixed_precision/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/mixed_precision/configurable_activation_quantizer.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/mixed_precision/configurable_weights_quantizer.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/pruning/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/pruning/pruning_keras_implementation.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/quantizer/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/quantizer/base_quantizer.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/quantizer/fake_quant_builder.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/quantizer/lut_fake_quant.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/reader/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/reader/common.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/reader/connectivity_handler.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/reader/nested_model/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/reader/nested_model/edges_merger.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/reader/nested_model/nested_model_handler.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/reader/nested_model/nodes_merger.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/reader/nested_model/outputs_merger.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/reader/node_builder.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/reader/reader.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/statistics_correction/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/statistics_correction/apply_second_moment_correction.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/tf_tensor_numpy.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/keras/visualization/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/back2framework/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/back2framework/factory_model_builder.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/back2framework/float_model_builder.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/back2framework/instance_builder.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/back2framework/mixed_precision_model_builder.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/back2framework/pytorch_model_builder.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/back2framework/quantization_wrapper/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/back2framework/quantization_wrapper/quantized_layer_wrapper.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/back2framework/quantization_wrapper/wrapper_quantize_config.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/back2framework/quantized_model_builder.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/constants.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/default_framework_info.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/graph_substitutions/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/batchnorm_folding.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/batchnorm_reconstruction.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/batchnorm_refusing.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/const_holder_conv.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/functional_batch_norm.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/functional_layer_norm.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/linear_collapsing.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/multi_head_attention_decomposition.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/permute_call_method.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/relu_bound_to_power_of_2.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/reshape_with_static_shapes.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/residual_collapsing.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/scale_equalization.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/shift_negative_activation.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/softmax_shift.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/virtual_activation_weights_composition.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/weights_activation_split.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/hessian/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/hessian/activation_trace_hessian_calculator_pytorch.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/hessian/trace_hessian_calculator_pytorch.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/hessian/weights_trace_hessian_calculator_pytorch.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/kpi_data_facade.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/mixed_precision/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/mixed_precision/configurable_activation_quantizer.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/mixed_precision/configurable_weights_quantizer.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/pytorch_device_config.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/pytorch_implementation.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/pytorch_node_prior_info.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/quantizer/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/quantizer/fake_quant_builder.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/quantizer/lut_fake_quant.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/reader/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/reader/graph_builders.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/reader/node_holders.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/reader/reader.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/statistics_correction/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/statistics_correction/apply_second_moment_correction.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/pytorch/utils.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/quantization_prep_runner.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/core/runner.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/data_generation/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/data_generation/common/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/data_generation/common/constants.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/data_generation/common/data_generation.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/data_generation/common/data_generation_config.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/data_generation/common/enums.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/data_generation/common/image_pipeline.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/data_generation/common/model_info_exctractors.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/data_generation/common/optimization_utils.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/data_generation/keras/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/data_generation/keras/constants.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/data_generation/keras/image_pipeline.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/data_generation/keras/keras_data_generation.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/data_generation/keras/model_info_exctractors.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/data_generation/keras/optimization_functions/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/data_generation/keras/optimization_functions/batchnorm_alignment_functions.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/data_generation/keras/optimization_functions/bn_layer_weighting_functions.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/data_generation/keras/optimization_functions/image_initilization.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/data_generation/keras/optimization_functions/output_loss_functions.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/data_generation/keras/optimization_functions/scheduler_step_functions.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/data_generation/keras/optimization_utils.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/data_generation/pytorch/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/data_generation/pytorch/constants.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/data_generation/pytorch/image_pipeline.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/data_generation/pytorch/model_info_exctractors.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/data_generation/pytorch/optimization_functions/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/data_generation/pytorch/optimization_functions/batchnorm_alignment_functions.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/data_generation/pytorch/optimization_functions/bn_layer_weighting_functions.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/data_generation/pytorch/optimization_functions/image_initilization.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/data_generation/pytorch/optimization_functions/output_loss_functions.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/data_generation/pytorch/optimization_functions/scheduler_step_functions.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/data_generation/pytorch/optimization_utils.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/data_generation/pytorch/pytorch_data_generation.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/defaultdict.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/exporter/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/exporter/model_exporter/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/exporter/model_exporter/fw_agonstic/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/exporter/model_exporter/fw_agonstic/exporter.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/exporter/model_exporter/fw_agonstic/quantization_format.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/exporter/model_exporter/keras/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/exporter/model_exporter/keras/base_keras_exporter.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/exporter/model_exporter/keras/export_serialization_format.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/exporter/model_exporter/keras/fakely_quant_keras_exporter.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/exporter/model_exporter/keras/int8_tflite_exporter.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/exporter/model_exporter/keras/keras_export_facade.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/exporter/model_exporter/keras/mctq_keras_exporter.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/exporter/model_exporter/pytorch/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/exporter/model_exporter/pytorch/base_pytorch_exporter.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/exporter/model_exporter/pytorch/export_serialization_format.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/exporter/model_exporter/pytorch/fakely_quant_torchscript_pytorch_exporter.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/exporter/model_exporter/pytorch/pytorch_export_facade.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/exporter/model_wrapper/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/exporter/model_wrapper/keras/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/exporter/model_wrapper/keras/builder/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/exporter/model_wrapper/keras/builder/fully_quantized_model_builder.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/exporter/model_wrapper/keras/builder/node_to_quantizer.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/exporter/model_wrapper/keras/builder/node_to_quantizers.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/exporter/model_wrapper/keras/validate_layer.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/exporter/model_wrapper/pytorch/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/exporter/model_wrapper/pytorch/builder/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/exporter/model_wrapper/pytorch/builder/fully_quantized_model_builder.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/exporter/model_wrapper/pytorch/builder/node_to_quantizer.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/exporter/model_wrapper/pytorch/builder/node_to_quantizers.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/exporter/model_wrapper/pytorch/validate_layer.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/gptq/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/gptq/common/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/gptq/common/gptq_config.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/gptq/common/gptq_constants.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/gptq/common/gptq_framework_implementation.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/gptq/common/gptq_graph.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/gptq/common/gptq_training.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/gptq/keras/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/gptq/keras/gptq_keras_implementation.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/gptq/keras/gptq_loss.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/gptq/keras/gptq_training.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/gptq/keras/graph_info.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/gptq/keras/quantization_facade.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/gptq/keras/quantizer/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/gptq/keras/quantizer/base_keras_gptq_quantizer.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/gptq/keras/quantizer/quant_utils.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/gptq/keras/quantizer/quantization_builder.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/gptq/keras/quantizer/regularization_factory.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/gptq/keras/quantizer/soft_rounding/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/gptq/keras/quantizer/soft_rounding/soft_quantizer_reg.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/gptq/keras/quantizer/soft_rounding/symmetric_soft_quantizer.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/gptq/keras/quantizer/soft_rounding/uniform_soft_quantizer.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/gptq/keras/quantizer/ste_rounding/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/gptq/keras/quantizer/ste_rounding/symmetric_ste.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/gptq/pytorch/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/gptq/pytorch/gptq_loss.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/gptq/pytorch/gptq_pytorch_implementation.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/gptq/pytorch/gptq_training.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/gptq/pytorch/graph_info.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/gptq/pytorch/quantization_facade.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/gptq/pytorch/quantizer/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/gptq/pytorch/quantizer/base_pytorch_gptq_quantizer.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/gptq/pytorch/quantizer/quant_utils.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/gptq/pytorch/quantizer/quantization_builder.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/gptq/pytorch/quantizer/regularization_factory.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/gptq/pytorch/quantizer/soft_rounding/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/gptq/pytorch/quantizer/soft_rounding/soft_quantizer_reg.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/gptq/pytorch/quantizer/soft_rounding/symmetric_soft_quantizer.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/gptq/pytorch/quantizer/soft_rounding/uniform_soft_quantizer.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/gptq/pytorch/quantizer/ste_rounding/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/gptq/pytorch/quantizer/ste_rounding/symmetric_ste.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/gptq/runner.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/legacy/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/legacy/keras_quantization_facade.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/legacy/pytorch_quantization_facade.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/logger.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/pruning/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/pruning/keras/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/pruning/keras/pruning_facade.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/ptq/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/ptq/keras/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/ptq/keras/quantization_facade.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/ptq/pytorch/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/ptq/pytorch/quantization_facade.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/ptq/runner.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/qat/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/qat/common/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/qat/common/qat_config.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/qat/keras/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/qat/keras/quantization_facade.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/qat/keras/quantizer/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/qat/keras/quantizer/base_keras_qat_quantizer.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/qat/keras/quantizer/lsq/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/qat/keras/quantizer/lsq/symmetric_lsq.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/qat/keras/quantizer/lsq/uniform_lsq.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/qat/keras/quantizer/quant_utils.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/qat/keras/quantizer/quantization_builder.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/qat/keras/quantizer/ste_rounding/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/qat/keras/quantizer/ste_rounding/symmetric_ste.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/qat/keras/quantizer/ste_rounding/uniform_ste.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/qat/pytorch/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/qat/pytorch/quantization_facade.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/qat/pytorch/quantizer/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/qat/pytorch/quantizer/base_pytorch_qat_quantizer.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/qat/pytorch/quantizer/lsq/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/qat/pytorch/quantizer/lsq/symmetric_lsq.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/qat/pytorch/quantizer/lsq/uniform_lsq.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/qat/pytorch/quantizer/quantization_builder.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/qat/pytorch/quantizer/quantizer_utils.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/qat/pytorch/quantizer/ste_rounding/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/qat/pytorch/quantizer/ste_rounding/symmetric_ste.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/qat/pytorch/quantizer/ste_rounding/uniform_ste.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/target_platform_capabilities/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/target_platform_capabilities/immutable.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/target_platform_capabilities/target_platform/current_tp_model.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/target_platform_capabilities/target_platform/fusing.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/target_platform_capabilities/target_platform/operators.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/target_platform_capabilities/target_platform/target_platform_model.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/target_platform_capabilities/target_platform/target_platform_model_component.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/attribute_filter.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/current_tpc.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/layer_filter_params.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/target_platform_capabilities_component.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/target_platform_capabilities/tpc_models/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/target_platform_capabilities/tpc_models/get_target_platform_capabilities.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/latest/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/target_platform_capabilities.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_lut/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_pot/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/latest/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/target_platform_capabilities.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/latest/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/target_platform_capabilities.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/trainable_infrastructure/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/trainable_infrastructure/common/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/trainable_infrastructure/common/base_trainable_quantizer.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/trainable_infrastructure/common/constants.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/trainable_infrastructure/common/get_quantizer_config.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/trainable_infrastructure/common/get_quantizers.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/trainable_infrastructure/common/quant_utils.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/trainable_infrastructure/common/trainable_quantizer_config.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/trainable_infrastructure/keras/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/trainable_infrastructure/keras/base_keras_quantizer.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/trainable_infrastructure/keras/config_serialization.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/trainable_infrastructure/keras/load_model.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/trainable_infrastructure/keras/quantize_wrapper.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/trainable_infrastructure/keras/quantizer_utils.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/trainable_infrastructure/pytorch/__init__.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/model_compression_toolkit/trainable_infrastructure/pytorch/base_pytorch_quantizer.py +0 -0
- {mct-nightly-1.11.0.20240131.post412 → mct-nightly-1.11.0.20240201.post434}/setup.py +0 -0
|
@@ -114,6 +114,7 @@ WEIGHTS_QUANTIZATION_FN = 'weights_quantization_fn'
|
|
|
114
114
|
ACTIVATION_QUANT_PARAMS_FN = 'activation_quantization_params_fn'
|
|
115
115
|
WEIGHTS_QUANT_PARAMS_FN = 'weights_quantization_params_fn'
|
|
116
116
|
WEIGHTS_CHANNELS_AXIS = 'weights_channels_axis'
|
|
117
|
+
WEIGHTS_CFG = 'weights_cfg'
|
|
117
118
|
|
|
118
119
|
# Memory graph constants
|
|
119
120
|
DUMMY_NODE = 'dummy_node'
|
|
@@ -104,7 +104,7 @@ class Graph(nx.MultiDiGraph, GraphSearches):
|
|
|
104
104
|
if not is_node_in_tpc:
|
|
105
105
|
Logger.error(f'MCT does not support optimizing Keras custom layers, but found layer of type {n.type}. '
|
|
106
106
|
f'Please add the custom layer to TPC or file a feature request or an issue if you believe this is an issue.')
|
|
107
|
-
if any([qc.enable_weights_quantization for qc in n.get_qco(tpc).quantization_config_list]):
|
|
107
|
+
if any([qc.default_weight_attr_config.enable_weights_quantization for qc in n.get_qco(tpc).quantization_config_list]):
|
|
108
108
|
Logger.error(f'MCT does not support optimizing Keras custom layers with weights quantization. Layer: {n.type}')
|
|
109
109
|
|
|
110
110
|
self.tpc = tpc
|
|
@@ -14,9 +14,10 @@
|
|
|
14
14
|
# ==============================================================================
|
|
15
15
|
from model_compression_toolkit.constants import ACTIVATION_QUANTIZATION_CFG, WEIGHTS_QUANTIZATION_CFG, QC, \
|
|
16
16
|
OP_CFG, ACTIVATION_QUANTIZATION_FN, WEIGHTS_QUANTIZATION_FN, ACTIVATION_QUANT_PARAMS_FN, WEIGHTS_QUANT_PARAMS_FN, \
|
|
17
|
-
WEIGHTS_CHANNELS_AXIS
|
|
17
|
+
WEIGHTS_CHANNELS_AXIS, WEIGHTS_CFG
|
|
18
18
|
from model_compression_toolkit.core.common.quantization.node_quantization_config import BaseNodeQuantizationConfig, \
|
|
19
19
|
NodeWeightsQuantizationConfig, NodeActivationQuantizationConfig
|
|
20
|
+
from model_compression_toolkit.target_platform_capabilities.constants import KERNEL_ATTR
|
|
20
21
|
|
|
21
22
|
|
|
22
23
|
##########################################
|
|
@@ -47,4 +48,5 @@ class CandidateNodeQuantizationConfig(BaseNodeQuantizationConfig):
|
|
|
47
48
|
kwargs.get(OP_CFG),
|
|
48
49
|
kwargs.get(WEIGHTS_QUANTIZATION_FN),
|
|
49
50
|
kwargs.get(WEIGHTS_QUANT_PARAMS_FN),
|
|
50
|
-
kwargs.get(WEIGHTS_CHANNELS_AXIS)
|
|
51
|
+
kwargs.get(WEIGHTS_CHANNELS_AXIS),
|
|
52
|
+
kwargs.get(WEIGHTS_CFG))
|
|
@@ -24,7 +24,8 @@ from model_compression_toolkit.core.common.quantization.quantization_params_fn_s
|
|
|
24
24
|
|
|
25
25
|
from model_compression_toolkit.core.common.quantization.quantization_config import QuantizationConfig, \
|
|
26
26
|
QuantizationErrorMethod
|
|
27
|
-
from model_compression_toolkit.target_platform_capabilities.target_platform import OpQuantizationConfig
|
|
27
|
+
from model_compression_toolkit.target_platform_capabilities.target_platform import OpQuantizationConfig, \
|
|
28
|
+
AttributeQuantizationConfig
|
|
28
29
|
|
|
29
30
|
|
|
30
31
|
##########################################
|
|
@@ -236,7 +237,8 @@ class NodeWeightsQuantizationConfig(BaseNodeQuantizationConfig):
|
|
|
236
237
|
op_cfg: OpQuantizationConfig,
|
|
237
238
|
weights_quantization_fn: Callable,
|
|
238
239
|
weights_quantization_params_fn: Callable,
|
|
239
|
-
weights_channels_axis: int
|
|
240
|
+
weights_channels_axis: int,
|
|
241
|
+
weights_cfg: AttributeQuantizationConfig):
|
|
240
242
|
"""
|
|
241
243
|
|
|
242
244
|
Args:
|
|
@@ -245,19 +247,22 @@ class NodeWeightsQuantizationConfig(BaseNodeQuantizationConfig):
|
|
|
245
247
|
weights_quantization_fn: Function to use when quantizing the node's weights.
|
|
246
248
|
weights_quantization_params_fn: Function to use when computing the threshold for quantizing a node's weights.
|
|
247
249
|
weights_channels_axis: Axis to quantize a node's kernel when quantizing per-channel.
|
|
250
|
+
weights_cfg: Weights attribute quantization config.
|
|
248
251
|
"""
|
|
249
252
|
|
|
253
|
+
# TODO: after refactoring to enable attributes quantization, all weights quantization arguments
|
|
254
|
+
# should be taken per attribute, and not from the weights config
|
|
250
255
|
self.weights_quantization_fn = weights_quantization_fn
|
|
251
256
|
self.weights_quantization_params_fn = weights_quantization_params_fn
|
|
252
257
|
self.weights_channels_axis = weights_channels_axis
|
|
253
258
|
self.weights_quantization_params = {}
|
|
254
|
-
self.weights_quantization_method =
|
|
259
|
+
self.weights_quantization_method = weights_cfg.weights_quantization_method
|
|
255
260
|
self.weights_error_method = qc.weights_error_method
|
|
256
|
-
self.weights_n_bits =
|
|
261
|
+
self.weights_n_bits = weights_cfg.weights_n_bits
|
|
257
262
|
self.weights_bias_correction = qc.weights_bias_correction
|
|
258
263
|
self.weights_second_moment_correction = qc.weights_second_moment_correction
|
|
259
|
-
self.weights_per_channel_threshold =
|
|
260
|
-
self.enable_weights_quantization =
|
|
264
|
+
self.weights_per_channel_threshold = weights_cfg.weights_per_channel_threshold
|
|
265
|
+
self.enable_weights_quantization = weights_cfg.enable_weights_quantization
|
|
261
266
|
self.min_threshold = qc.min_threshold
|
|
262
267
|
self.l_p_value = qc.l_p_value
|
|
263
268
|
self.simd_size = op_cfg.simd_size
|
|
@@ -50,7 +50,6 @@ class QuantizationConfig:
|
|
|
50
50
|
weights_error_method: QuantizationErrorMethod = QuantizationErrorMethod.MSE,
|
|
51
51
|
relu_bound_to_power_of_2: bool = False,
|
|
52
52
|
weights_bias_correction: bool = True,
|
|
53
|
-
weights_per_channel_threshold: bool = True,
|
|
54
53
|
weights_second_moment_correction: bool = False,
|
|
55
54
|
input_scaling: bool = False,
|
|
56
55
|
softmax_shift: bool = False,
|
|
@@ -73,7 +72,6 @@ class QuantizationConfig:
|
|
|
73
72
|
relu_bound_to_power_of_2 (bool): Whether to use relu to power of 2 scaling correction or not.
|
|
74
73
|
weights_bias_correction (bool): Whether to use weights bias correction or not.
|
|
75
74
|
weights_second_moment_correction (bool): Whether to use weights second_moment correction or not.
|
|
76
|
-
weights_per_channel_threshold (bool): Whether to quantize the weights per-channel or not (per-tensor).
|
|
77
75
|
input_scaling (bool): Whether to use input scaling or not.
|
|
78
76
|
softmax_shift (bool): Whether to use softmax shift or not.
|
|
79
77
|
shift_negative_activation_correction (bool): Whether to use shifting negative activation correction or not.
|
|
@@ -90,11 +88,11 @@ class QuantizationConfig:
|
|
|
90
88
|
One may create a quantization configuration to quantize a model according to.
|
|
91
89
|
For example, to quantize a model's weights and activation using thresholds, such that
|
|
92
90
|
weights threshold selection is done using MSE, activation threshold selection is done using NOCLIPPING (min/max),
|
|
93
|
-
enabling relu_bound_to_power_of_2, weights_bias_correction,
|
|
91
|
+
enabling relu_bound_to_power_of_2, weights_bias_correction,
|
|
94
92
|
one can instantiate a quantization configuration:
|
|
95
93
|
|
|
96
94
|
>>> import model_compression_toolkit as mct
|
|
97
|
-
>>> qc = mct.core.QuantizationConfig(activation_error_method=mct.core.QuantizationErrorMethod.NOCLIPPING,weights_error_method=mct.core.QuantizationErrorMethod.MSE,relu_bound_to_power_of_2=True,weights_bias_correction=True
|
|
95
|
+
>>> qc = mct.core.QuantizationConfig(activation_error_method=mct.core.QuantizationErrorMethod.NOCLIPPING, weights_error_method=mct.core.QuantizationErrorMethod.MSE, relu_bound_to_power_of_2=True, weights_bias_correction=True)
|
|
98
96
|
|
|
99
97
|
|
|
100
98
|
The QuantizationConfig instanse can then be passed to
|
|
@@ -107,7 +105,6 @@ class QuantizationConfig:
|
|
|
107
105
|
self.relu_bound_to_power_of_2 = relu_bound_to_power_of_2
|
|
108
106
|
self.weights_bias_correction = weights_bias_correction
|
|
109
107
|
self.weights_second_moment_correction = weights_second_moment_correction
|
|
110
|
-
self.weights_per_channel_threshold = weights_per_channel_threshold
|
|
111
108
|
self.activation_channel_equalization = activation_channel_equalization
|
|
112
109
|
self.input_scaling = input_scaling
|
|
113
110
|
self.softmax_shift = softmax_shift
|
|
@@ -126,11 +123,6 @@ class QuantizationConfig:
|
|
|
126
123
|
|
|
127
124
|
|
|
128
125
|
# Default quantization configuration the library use.
|
|
129
|
-
DEFAULTCONFIG = QuantizationConfig(QuantizationErrorMethod.MSE,
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
weights_bias_correction=True,
|
|
133
|
-
weights_second_moment_correction=False,
|
|
134
|
-
weights_per_channel_threshold=True,
|
|
135
|
-
input_scaling=False,
|
|
136
|
-
softmax_shift=False)
|
|
126
|
+
DEFAULTCONFIG = QuantizationConfig(QuantizationErrorMethod.MSE, QuantizationErrorMethod.MSE,
|
|
127
|
+
relu_bound_to_power_of_2=False, weights_bias_correction=True,
|
|
128
|
+
weights_second_moment_correction=False, input_scaling=False, softmax_shift=False)
|
|
@@ -81,6 +81,7 @@ def set_quantization_configs_to_node(node: BaseNode,
|
|
|
81
81
|
fw_info,
|
|
82
82
|
weight_channel_axis,
|
|
83
83
|
node_qc_options,
|
|
84
|
+
node.type,
|
|
84
85
|
mixed_precision_enable=mixed_precision_enable)
|
|
85
86
|
|
|
86
87
|
for candidate_qc in node.candidates_quantization_cfg:
|
|
@@ -118,10 +119,11 @@ def create_node_activation_qc(qc: QuantizationConfig,
|
|
|
118
119
|
activation_quantization_params_fn)
|
|
119
120
|
|
|
120
121
|
|
|
121
|
-
def
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
122
|
+
def _create_node_single_candidate_qc(qc: QuantizationConfig,
|
|
123
|
+
fw_info: FrameworkInfo,
|
|
124
|
+
weight_channel_axis: int,
|
|
125
|
+
op_cfg: OpQuantizationConfig,
|
|
126
|
+
kernel_attr: str) -> CandidateNodeQuantizationConfig:
|
|
125
127
|
"""
|
|
126
128
|
Create quantization configuration candidate from a QuantizationConfig object.
|
|
127
129
|
Creates both weights and activation quantization configurations
|
|
@@ -133,18 +135,26 @@ def create_node_qc_candidate(qc: QuantizationConfig,
|
|
|
133
135
|
weights/activations should be quantized)
|
|
134
136
|
weight_channel_axis: Output channel index of the node's kernel.
|
|
135
137
|
op_cfg: OpQuantizationConfig of the node with quantizers types to use when creating node quantization configuration.
|
|
138
|
+
kernel_attr: The name of the kernel attribute of the node,
|
|
139
|
+
TODO: kernel_attr should be removed once enabling attributes quantization (because this function would create
|
|
140
|
+
candidate for all attributes not specifically for the kernel
|
|
136
141
|
|
|
137
142
|
Returns: a CandidateNodeQuantizationConfig object with both weights and activation quantization config objects.
|
|
138
143
|
|
|
139
144
|
"""
|
|
140
145
|
|
|
141
|
-
# get attributes for weights quantization
|
|
142
|
-
|
|
146
|
+
# get attributes for weights quantization.
|
|
147
|
+
# if the node doesn't have a specified kernel config we use the default attribute config for quantization.
|
|
148
|
+
# TODO: This should be the behavior for all attributes that are not specified in the attribute config mapping,
|
|
149
|
+
# which currently disables the quantization of the weights attribute.
|
|
150
|
+
weights_cfg = op_cfg.attr_weights_configs_mapping.get(kernel_attr, op_cfg.default_weight_attr_config)
|
|
151
|
+
|
|
152
|
+
weights_quantization_fn = get_weights_quantization_fn(weights_cfg.weights_quantization_method)
|
|
143
153
|
|
|
144
154
|
if weights_quantization_fn is None:
|
|
145
|
-
Logger.critical('Unknown quantization method for weights') # pragma: no cover
|
|
155
|
+
Logger.critical(f'Unknown quantization method for weights for quantizing attribute: {kernel_attr}') # pragma: no cover
|
|
146
156
|
|
|
147
|
-
weights_quantization_params_fn = get_weights_quantization_params_fn(
|
|
157
|
+
weights_quantization_params_fn = get_weights_quantization_params_fn(weights_cfg.weights_quantization_method)
|
|
148
158
|
|
|
149
159
|
# get attributes for activation quantization
|
|
150
160
|
activation_quantization_fn = fw_info.activation_quantizer_mapping.get(op_cfg.activation_quantization_method)
|
|
@@ -159,13 +169,15 @@ def create_node_qc_candidate(qc: QuantizationConfig,
|
|
|
159
169
|
activation_quantization_params_fn=activation_quantization_params_fn,
|
|
160
170
|
weights_quantization_fn=weights_quantization_fn,
|
|
161
171
|
weights_quantization_params_fn=weights_quantization_params_fn,
|
|
162
|
-
weight_channel_axis=weight_channel_axis
|
|
172
|
+
weight_channel_axis=weight_channel_axis,
|
|
173
|
+
weights_cfg=weights_cfg)
|
|
163
174
|
|
|
164
175
|
|
|
165
176
|
def _create_node_candidates_qc(qc: QuantizationConfig,
|
|
166
177
|
fw_info: FrameworkInfo,
|
|
167
178
|
weight_channel_axis: int,
|
|
168
179
|
node_qc_options: QuantizationConfigOptions,
|
|
180
|
+
node_type: type,
|
|
169
181
|
mixed_precision_enable: bool = False) -> List[CandidateNodeQuantizationConfig]:
|
|
170
182
|
"""
|
|
171
183
|
Create a list of candidates of weights and activation quantization configurations for a node.
|
|
@@ -175,6 +187,7 @@ def _create_node_candidates_qc(qc: QuantizationConfig,
|
|
|
175
187
|
fw_info: Framework information (e.g., which layers should have their kernels' quantized).
|
|
176
188
|
weight_channel_axis: Output channel index of the node's kernel.
|
|
177
189
|
node_qc_options: QuantizationConfigOptions for the node with quantization candidates information.
|
|
190
|
+
node_type: The type of the layer that the node represents.
|
|
178
191
|
mixed_precision_enable: is mixed precision enabled
|
|
179
192
|
|
|
180
193
|
Returns:
|
|
@@ -182,21 +195,31 @@ def _create_node_candidates_qc(qc: QuantizationConfig,
|
|
|
182
195
|
"""
|
|
183
196
|
|
|
184
197
|
candidates = []
|
|
198
|
+
|
|
199
|
+
# TODO: Currently, we are using fw_info to get the kernel attribute, but this would changed once we enable multi
|
|
200
|
+
# attribute quantization via AttributeQuantizationConfig class (needs to be implemented)
|
|
201
|
+
|
|
202
|
+
kernel_attr = fw_info.get_kernel_op_attributes(node_type)
|
|
203
|
+
assert len(kernel_attr) == 1
|
|
204
|
+
kernel_attr = kernel_attr[0]
|
|
205
|
+
|
|
185
206
|
if mixed_precision_enable:
|
|
186
207
|
for op_cfg in node_qc_options.quantization_config_list:
|
|
187
208
|
candidate_nbits_qc = copy.deepcopy(qc)
|
|
188
|
-
candidates.append(
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
209
|
+
candidates.append(_create_node_single_candidate_qc(candidate_nbits_qc,
|
|
210
|
+
fw_info,
|
|
211
|
+
weight_channel_axis,
|
|
212
|
+
op_cfg,
|
|
213
|
+
kernel_attr))
|
|
192
214
|
# sorting the candidates by weights number of bits first and then by activation number of bits
|
|
193
215
|
# (in reversed order)
|
|
194
216
|
candidates.sort(key=lambda c: (c.weights_quantization_cfg.weights_n_bits,
|
|
195
217
|
c.activation_quantization_cfg.activation_n_bits), reverse=True)
|
|
196
218
|
else:
|
|
197
|
-
candidates.append(
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
219
|
+
candidates.append(_create_node_single_candidate_qc(qc,
|
|
220
|
+
fw_info,
|
|
221
|
+
weight_channel_axis,
|
|
222
|
+
node_qc_options.base_config,
|
|
223
|
+
kernel_attr))
|
|
201
224
|
|
|
202
225
|
return candidates
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
# ==============================================================================
|
|
15
15
|
import os
|
|
16
|
+
from pathlib import Path
|
|
16
17
|
import tempfile
|
|
17
18
|
from typing import Callable
|
|
18
19
|
|
|
@@ -56,14 +57,20 @@ class FakelyQuantTFLiteExporter(FakelyQuantKerasExporter):
|
|
|
56
57
|
|
|
57
58
|
"""
|
|
58
59
|
# Use Keras exporter to quantize model's weights before converting it to TFLite.
|
|
59
|
-
# Since exporter saves the model, we use a tmp path for saving, and then we delete it
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
60
|
+
# Since exporter saves the model, we use a tmp path for saving, and then we delete it.
|
|
61
|
+
handle, tmp_file = tempfile.mkstemp(DEFAULT_KERAS_EXPORT_EXTENTION)
|
|
62
|
+
# Close handle right away, the file is going to be reopenned by Keras exporter
|
|
63
|
+
os.close(handle)
|
|
64
|
+
try:
|
|
65
|
+
custom_objects = FakelyQuantKerasExporter(self.model,
|
|
66
|
+
self.is_layer_exportable_fn,
|
|
67
|
+
tmp_file,
|
|
68
|
+
verbose=False).export()
|
|
65
69
|
|
|
66
|
-
model = keras_load_quantized_model(tmp_file
|
|
70
|
+
model = keras_load_quantized_model(tmp_file)
|
|
71
|
+
# Ensures artifact is removed even in case of error
|
|
72
|
+
finally:
|
|
73
|
+
Path(tmp_file).unlink(missing_ok=True)
|
|
67
74
|
|
|
68
75
|
self.exported_model = tf.lite.TFLiteConverter.from_keras_model(model).convert()
|
|
69
76
|
Logger.info(f'Exporting FQ tflite model to: {self.save_model_path}')
|
|
@@ -26,8 +26,11 @@ from mct_quantizers import pytorch_quantizers
|
|
|
26
26
|
# ONNX opset version 16 is supported from PyTorch 1.12
|
|
27
27
|
if version.parse(torch.__version__) < version.parse("1.12"):
|
|
28
28
|
OPSET_VERSION = 15
|
|
29
|
-
|
|
29
|
+
elif version.parse("1.12.0") <= version.parse(torch.__version__) < version.parse("1.13.0"):
|
|
30
30
|
OPSET_VERSION = 16
|
|
31
|
+
else:
|
|
32
|
+
# ONNX opset version 17 is supported from PyTorch 1.13
|
|
33
|
+
OPSET_VERSION = 17
|
|
31
34
|
|
|
32
35
|
|
|
33
36
|
class FakelyQuantONNXPyTorchExporter(BasePyTorchExporter):
|
|
@@ -24,4 +24,21 @@ LATEST = 'latest'
|
|
|
24
24
|
DEFAULT_TP_MODEL = 'default'
|
|
25
25
|
IMX500_TP_MODEL = 'imx500'
|
|
26
26
|
TFLITE_TP_MODEL = 'tflite'
|
|
27
|
-
QNNPACK_TP_MODEL = 'qnnpack'
|
|
27
|
+
QNNPACK_TP_MODEL = 'qnnpack'
|
|
28
|
+
|
|
29
|
+
# TP Attributes
|
|
30
|
+
KERNEL_ATTR = "kernel_attr"
|
|
31
|
+
BIAS_ATTR = "bias_attr"
|
|
32
|
+
|
|
33
|
+
# TODO: this is duplicated from the core frameworks constants files, because the original consts can't be used here
|
|
34
|
+
# duo to circular dependency. It might be best to extract the constants from the core file and put them here (in a
|
|
35
|
+
# separate changeset, because it affects the entire code)
|
|
36
|
+
KERAS_KERNEL = "kernel"
|
|
37
|
+
KERAS_DEPTHWISE_KERNEL = "depthwise_kernel"
|
|
38
|
+
BIAS = "bias"
|
|
39
|
+
PYTORCH_KERNEL = "weight"
|
|
40
|
+
|
|
41
|
+
# Configuration attributes names
|
|
42
|
+
|
|
43
|
+
WEIGHTS_N_BITS = 'weights_n_bits'
|
|
44
|
+
WEIGHTS_QUANTIZATION_METHOD = 'weights_quantization_method'
|
|
@@ -21,7 +21,7 @@ from model_compression_toolkit.target_platform_capabilities.target_platform.targ
|
|
|
21
21
|
get_default_quantization_config_options, TargetPlatformModel
|
|
22
22
|
|
|
23
23
|
from model_compression_toolkit.target_platform_capabilities.target_platform.op_quantization_config import OpQuantizationConfig, \
|
|
24
|
-
QuantizationConfigOptions
|
|
24
|
+
QuantizationConfigOptions, AttributeQuantizationConfig
|
|
25
25
|
from model_compression_toolkit.target_platform_capabilities.target_platform.operators import OperatorsSet, OperatorSetConcat
|
|
26
26
|
|
|
27
27
|
from mct_quantizers import QuantizationMethod
|
|
@@ -14,58 +14,135 @@
|
|
|
14
14
|
# ==============================================================================
|
|
15
15
|
|
|
16
16
|
import copy
|
|
17
|
-
from typing import List
|
|
17
|
+
from typing import List, Dict, Union, Any
|
|
18
18
|
|
|
19
19
|
from mct_quantizers import QuantizationMethod
|
|
20
|
+
from model_compression_toolkit.logger import Logger
|
|
20
21
|
|
|
21
22
|
|
|
22
|
-
|
|
23
|
+
def clone_and_edit_object_params(obj: Any, **kwargs: Dict) -> Any:
|
|
23
24
|
"""
|
|
24
|
-
|
|
25
|
+
Clones the given object and edit some of its parameters.
|
|
26
|
+
|
|
27
|
+
Args:
|
|
28
|
+
obj: An object to clone.
|
|
29
|
+
**kwargs: Keyword arguments to edit in the cloned object.
|
|
30
|
+
|
|
31
|
+
Returns:
|
|
32
|
+
Edited copy of the given object.
|
|
25
33
|
"""
|
|
26
34
|
|
|
35
|
+
obj_copy = copy.deepcopy(obj)
|
|
36
|
+
for k, v in kwargs.items():
|
|
37
|
+
assert hasattr(obj_copy,
|
|
38
|
+
k), f'Edit parameter is possible only for existing parameters in the given object, ' \
|
|
39
|
+
f'but {k} is not a parameter of {obj_copy}.'
|
|
40
|
+
setattr(obj_copy, k, v)
|
|
41
|
+
return obj_copy
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
class AttributeQuantizationConfig:
|
|
45
|
+
"""
|
|
46
|
+
Hold the quantization configuration of a weight attribute of a layer.
|
|
47
|
+
"""
|
|
27
48
|
def __init__(self,
|
|
28
|
-
activation_quantization_method: QuantizationMethod,
|
|
29
49
|
weights_quantization_method: QuantizationMethod,
|
|
30
|
-
activation_n_bits: int,
|
|
31
50
|
weights_n_bits: int,
|
|
32
51
|
weights_per_channel_threshold: bool,
|
|
33
52
|
enable_weights_quantization: bool,
|
|
53
|
+
lut_values_bitwidth: Union[int, None], # If None - set 8 in hptq, o.w use it
|
|
54
|
+
):
|
|
55
|
+
"""
|
|
56
|
+
Initializes an attribute quantization config.
|
|
57
|
+
|
|
58
|
+
Args:
|
|
59
|
+
weights_quantization_method (QuantizationMethod): Which method to use from QuantizationMethod for weights quantization.
|
|
60
|
+
weights_n_bits (int): Number of bits to quantize the coefficients.
|
|
61
|
+
weights_per_channel_threshold (bool): Whether to quantize the weights per-channel or not (per-tensor).
|
|
62
|
+
enable_weights_quantization (bool): Whether to quantize the model weights or not.
|
|
63
|
+
lut_values_bitwidth (int): Number of bits to use when quantizing in look-up-table.
|
|
64
|
+
|
|
65
|
+
"""
|
|
66
|
+
|
|
67
|
+
self.weights_quantization_method = weights_quantization_method
|
|
68
|
+
self.weights_n_bits = weights_n_bits
|
|
69
|
+
self.weights_per_channel_threshold = weights_per_channel_threshold
|
|
70
|
+
self.enable_weights_quantization = enable_weights_quantization
|
|
71
|
+
self.lut_values_bitwidth = lut_values_bitwidth
|
|
72
|
+
|
|
73
|
+
def clone_and_edit(self, **kwargs):
|
|
74
|
+
"""
|
|
75
|
+
Clone the quantization config and edit some of its attributes.
|
|
76
|
+
|
|
77
|
+
Args:
|
|
78
|
+
**kwargs: Keyword arguments to edit the configuration to clone.
|
|
79
|
+
|
|
80
|
+
Returns:
|
|
81
|
+
Edited quantization configuration.
|
|
82
|
+
"""
|
|
83
|
+
|
|
84
|
+
return clone_and_edit_object_params(self, **kwargs)
|
|
85
|
+
|
|
86
|
+
def __eq__(self, other):
|
|
87
|
+
"""
|
|
88
|
+
Is this configuration equal to another object.
|
|
89
|
+
|
|
90
|
+
Args:
|
|
91
|
+
other: Object to compare.
|
|
92
|
+
|
|
93
|
+
Returns:
|
|
94
|
+
|
|
95
|
+
Whether this configuration is equal to another object or not.
|
|
96
|
+
"""
|
|
97
|
+
if not isinstance(other, AttributeQuantizationConfig):
|
|
98
|
+
return False
|
|
99
|
+
return self.weights_quantization_method == other.weights_quantization_method and \
|
|
100
|
+
self.weights_n_bits == other.weights_n_bits and \
|
|
101
|
+
self.weights_per_channel_threshold == other.weights_per_channel_threshold and \
|
|
102
|
+
self.enable_weights_quantization == other.enable_weights_quantization and \
|
|
103
|
+
self.lut_values_bitwidth == other.lut_values_bitwidth
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
class OpQuantizationConfig:
|
|
107
|
+
"""
|
|
108
|
+
OpQuantizationConfig is a class to configure the quantization parameters of an operator.
|
|
109
|
+
"""
|
|
110
|
+
|
|
111
|
+
def __init__(self,
|
|
112
|
+
default_weight_attr_config: AttributeQuantizationConfig,
|
|
113
|
+
attr_weights_configs_mapping: Dict[str, AttributeQuantizationConfig],
|
|
114
|
+
activation_quantization_method: QuantizationMethod,
|
|
115
|
+
activation_n_bits: int,
|
|
34
116
|
enable_activation_quantization: bool,
|
|
35
117
|
quantization_preserving: bool,
|
|
36
118
|
fixed_scale: float,
|
|
37
119
|
fixed_zero_point: int,
|
|
38
|
-
|
|
39
|
-
|
|
120
|
+
simd_size: int
|
|
121
|
+
):
|
|
40
122
|
"""
|
|
41
123
|
|
|
42
124
|
Args:
|
|
125
|
+
default_weight_attr_config (AttributeQuantizationConfig): A default attribute quantization configuration for the operation.
|
|
126
|
+
attr_weights_configs_mapping (dict): A mapping between an op attribute name and its quantization configuration.
|
|
43
127
|
activation_quantization_method (QuantizationMethod): Which method to use from QuantizationMethod for activation quantization.
|
|
44
|
-
weights_quantization_method (QuantizationMethod): Which method to use from QuantizationMethod for weights quantization.
|
|
45
128
|
activation_n_bits (int): Number of bits to quantize the activations.
|
|
46
|
-
weights_n_bits (int): Number of bits to quantize the coefficients.
|
|
47
|
-
weights_per_channel_threshold (bool): Whether to quantize the weights per-channel or not (per-tensor).
|
|
48
|
-
enable_weights_quantization (bool): Whether to quantize the model weights or not.
|
|
49
129
|
enable_activation_quantization (bool): Whether to quantize the model activations or not.
|
|
50
130
|
quantization_preserving (bool): Whether quantization parameters should be the same for an operator's input and output.
|
|
51
131
|
fixed_scale (float): Scale to use for an operator quantization parameters.
|
|
52
132
|
fixed_zero_point (int): Zero-point to use for an operator quantization parameters.
|
|
53
|
-
|
|
54
|
-
simd_size (int): An integer representing the Single Instruction, Multiple Data (SIMD) width of an operator. It indicates the number of data elements that can be fetched and processed simultaneously in a single instruction.
|
|
133
|
+
simd_size (int): Per op integer representing the Single Instruction, Multiple Data (SIMD) width of an operator. It indicates the number of data elements that can be fetched and processed simultaneously in a single instruction.
|
|
55
134
|
|
|
56
135
|
"""
|
|
57
136
|
|
|
137
|
+
self.default_weight_attr_config = default_weight_attr_config
|
|
138
|
+
self.attr_weights_configs_mapping = attr_weights_configs_mapping
|
|
139
|
+
|
|
58
140
|
self.activation_quantization_method = activation_quantization_method
|
|
59
|
-
self.weights_quantization_method = weights_quantization_method
|
|
60
141
|
self.activation_n_bits = activation_n_bits
|
|
61
|
-
self.weights_n_bits = weights_n_bits
|
|
62
|
-
self.weights_per_channel_threshold = weights_per_channel_threshold
|
|
63
|
-
self.enable_weights_quantization = enable_weights_quantization
|
|
64
142
|
self.enable_activation_quantization = enable_activation_quantization
|
|
65
143
|
self.quantization_preserving = quantization_preserving
|
|
66
144
|
self.fixed_scale = fixed_scale
|
|
67
145
|
self.fixed_zero_point = fixed_zero_point
|
|
68
|
-
self.eights_lut_values_bitwidth = weights_multiplier_nbits
|
|
69
146
|
self.simd_size = simd_size
|
|
70
147
|
|
|
71
148
|
def get_info(self):
|
|
@@ -76,22 +153,28 @@ class OpQuantizationConfig:
|
|
|
76
153
|
"""
|
|
77
154
|
return self.__dict__
|
|
78
155
|
|
|
79
|
-
def clone_and_edit(self, **kwargs):
|
|
156
|
+
def clone_and_edit(self, attr_to_edit: Dict[str, Dict[str, Any]] = {}, **kwargs):
|
|
80
157
|
"""
|
|
81
158
|
Clone the quantization config and edit some of its attributes.
|
|
82
159
|
Args:
|
|
160
|
+
attr_to_edit: A mapping between attributes names to edit and their parameters that
|
|
161
|
+
should be edited to a new value.
|
|
83
162
|
**kwargs: Keyword arguments to edit the configuration to clone.
|
|
84
163
|
|
|
85
164
|
Returns:
|
|
86
165
|
Edited quantization configuration.
|
|
87
166
|
"""
|
|
88
167
|
|
|
89
|
-
qc =
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
168
|
+
qc = clone_and_edit_object_params(self, **kwargs)
|
|
169
|
+
|
|
170
|
+
# optionally: editing specific parameters in the config of specified attributes
|
|
171
|
+
edited_attrs = copy.deepcopy(qc.attr_weights_configs_mapping)
|
|
172
|
+
for attr_name, attr_cfg in qc.attr_weights_configs_mapping.items():
|
|
173
|
+
if attr_name in attr_to_edit:
|
|
174
|
+
edited_attrs[attr_name] = attr_cfg.clone_and_edit(**attr_to_edit[attr_name])
|
|
175
|
+
|
|
176
|
+
qc.attr_weights_configs_mapping = edited_attrs
|
|
177
|
+
|
|
95
178
|
return qc
|
|
96
179
|
|
|
97
180
|
def __eq__(self, other):
|
|
@@ -105,14 +188,12 @@ class OpQuantizationConfig:
|
|
|
105
188
|
"""
|
|
106
189
|
if not isinstance(other, OpQuantizationConfig):
|
|
107
190
|
return False
|
|
108
|
-
return self.
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
self.enable_activation_quantization == other.enable_activation_quantization and \
|
|
115
|
-
self.simd_size==other.simd_size
|
|
191
|
+
return self.default_weight_attr_config == other.default_weight_attr_config and \
|
|
192
|
+
self.attr_weights_configs_mapping == other.attr_weights_configs_mapping and \
|
|
193
|
+
self.activation_quantization_method == other.activation_quantization_method and \
|
|
194
|
+
self.activation_n_bits == other.activation_n_bits and \
|
|
195
|
+
self.enable_activation_quantization == other.enable_activation_quantization and \
|
|
196
|
+
self.simd_size == other.simd_size
|
|
116
197
|
|
|
117
198
|
|
|
118
199
|
class QuantizationConfigOptions(object):
|
|
@@ -177,6 +258,67 @@ class QuantizationConfigOptions(object):
|
|
|
177
258
|
self.__edit_quantization_configuration(qc, kwargs)
|
|
178
259
|
return qc_options
|
|
179
260
|
|
|
261
|
+
def clone_and_edit_weight_attribute(self, attrs: List[str] = None, **kwargs):
|
|
262
|
+
"""
|
|
263
|
+
Clones the quantization configurations and edits some of their attributes' parameters.
|
|
264
|
+
|
|
265
|
+
Args:
|
|
266
|
+
attrs: attributes names to clone their configurations. If None is provided, updating the configurations
|
|
267
|
+
of all attributes in the operation attributes config mapping.
|
|
268
|
+
**kwargs: Keyword arguments to edit in the attributes configuration.
|
|
269
|
+
|
|
270
|
+
Returns:
|
|
271
|
+
QuantizationConfigOptions with edited attributes configurations.
|
|
272
|
+
|
|
273
|
+
"""
|
|
274
|
+
|
|
275
|
+
qc_options = copy.deepcopy(self)
|
|
276
|
+
|
|
277
|
+
for qc in qc_options.quantization_config_list:
|
|
278
|
+
if attrs is None:
|
|
279
|
+
attrs_to_update = list(qc.attr_weights_configs_mapping.keys())
|
|
280
|
+
else:
|
|
281
|
+
if not isinstance(attrs, List):
|
|
282
|
+
Logger.error(f"Expecting a list of attribute but got {type(attrs)}.")
|
|
283
|
+
attrs_to_update = attrs
|
|
284
|
+
|
|
285
|
+
for attr in attrs_to_update:
|
|
286
|
+
if qc.attr_weights_configs_mapping.get(attr) is None:
|
|
287
|
+
Logger.error(f'Edit attributes is possible only for existing attributes '
|
|
288
|
+
f'in the configuration weights config mapping, but {attr} is not an attribute of {qc}.')
|
|
289
|
+
self.__edit_quantization_configuration(qc.attr_weights_configs_mapping[attr], kwargs)
|
|
290
|
+
return qc_options
|
|
291
|
+
|
|
292
|
+
def clone_and_map_weights_attr_keys(self, layer_attrs_mapping: Union[Dict[str, str], None]):
|
|
293
|
+
"""
|
|
294
|
+
Clones the quantization configuration options and edits the keys in each configuration attributes config mapping,
|
|
295
|
+
based on the given attributes names mapping.
|
|
296
|
+
|
|
297
|
+
Args:
|
|
298
|
+
layer_attrs_mapping: A mapping between attributes names.
|
|
299
|
+
|
|
300
|
+
Returns:
|
|
301
|
+
QuantizationConfigOptions with edited attributes names.
|
|
302
|
+
|
|
303
|
+
"""
|
|
304
|
+
qc_options = copy.deepcopy(self)
|
|
305
|
+
|
|
306
|
+
for qc in qc_options.quantization_config_list:
|
|
307
|
+
if layer_attrs_mapping is None:
|
|
308
|
+
qc.attr_weights_configs_mapping = {}
|
|
309
|
+
else:
|
|
310
|
+
new_attr_mapping = {}
|
|
311
|
+
for attr in list(qc.attr_weights_configs_mapping.keys()):
|
|
312
|
+
new_key = layer_attrs_mapping.get(attr)
|
|
313
|
+
if new_key is None:
|
|
314
|
+
Logger.error(f"Attribute {attr} does not exist in the given attribute mapping.")
|
|
315
|
+
|
|
316
|
+
new_attr_mapping[new_key] = qc.attr_weights_configs_mapping.pop(attr)
|
|
317
|
+
|
|
318
|
+
qc.attr_weights_configs_mapping.update(new_attr_mapping)
|
|
319
|
+
|
|
320
|
+
return qc_options
|
|
321
|
+
|
|
180
322
|
def __edit_quantization_configuration(self, qc, kwargs):
|
|
181
323
|
for k, v in kwargs.items():
|
|
182
324
|
assert hasattr(qc,
|