mct-nightly 2.0.0.20240417.406__tar.gz → 2.0.0.20240419.358__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (495) hide show
  1. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/PKG-INFO +1 -1
  2. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/mct_nightly.egg-info/PKG-INFO +1 -1
  3. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/mct_nightly.egg-info/SOURCES.txt +3 -0
  4. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/__init__.py +1 -1
  5. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/constants.py +2 -0
  6. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/graph/base_graph.py +2 -2
  7. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/graph/base_node.py +26 -9
  8. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/graph/functional_node.py +18 -1
  9. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/hessian/hessian_info_service.py +2 -3
  10. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/hessian/trace_hessian_request.py +1 -3
  11. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/network_editors/node_filters.py +4 -3
  12. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/node_quantization_config.py +0 -5
  13. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantization_config.py +5 -2
  14. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantization_params_generation/error_functions.py +67 -4
  15. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantization_params_generation/lut_kmeans_params.py +12 -4
  16. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantization_params_generation/power_of_two_selection.py +14 -4
  17. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantization_params_generation/qparams_computation.py +30 -3
  18. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantization_params_generation/qparams_weights_computation.py +17 -7
  19. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantization_params_generation/symmetric_selection.py +14 -3
  20. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantization_params_generation/uniform_selection.py +13 -3
  21. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/set_node_quantization_config.py +16 -3
  22. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/similarity_analyzer.py +16 -4
  23. mct-nightly-2.0.0.20240419.358/model_compression_toolkit/core/common/substitutions/remove_identity.py +48 -0
  24. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/graph_prep_runner.py +10 -4
  25. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/back2framework/keras_model_builder.py +4 -1
  26. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/batchnorm_folding.py +7 -7
  27. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/linear_collapsing.py +1 -1
  28. mct-nightly-2.0.0.20240419.358/model_compression_toolkit/core/keras/graph_substitutions/substitutions/remove_identity.py +51 -0
  29. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/residual_collapsing.py +1 -1
  30. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/keras_implementation.py +13 -11
  31. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/keras_node_prior_info.py +4 -4
  32. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/pruning/pruning_keras_implementation.py +4 -5
  33. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/reader/common.py +2 -2
  34. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/reader/node_builder.py +28 -9
  35. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/tf_tensor_numpy.py +5 -2
  36. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/back2framework/pytorch_model_builder.py +34 -21
  37. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/batchnorm_folding.py +8 -8
  38. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/const_holder_conv.py +2 -2
  39. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/linear_collapsing.py +1 -1
  40. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/relu_bound_to_power_of_2.py +4 -4
  41. mct-nightly-2.0.0.20240419.358/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/remove_identity.py +50 -0
  42. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/residual_collapsing.py +1 -1
  43. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/pruning/pruning_pytorch_implementation.py +8 -8
  44. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/pytorch_implementation.py +7 -6
  45. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/pytorch_node_prior_info.py +2 -2
  46. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/quantization_prep_runner.py +6 -2
  47. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/runner.py +5 -2
  48. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_wrapper/keras/builder/fully_quantized_model_builder.py +5 -1
  49. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_wrapper/pytorch/builder/fully_quantized_model_builder.py +9 -2
  50. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/quantization_facade.py +2 -1
  51. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/quantization_facade.py +3 -1
  52. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/runner.py +1 -0
  53. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/latest/__init__.py +5 -5
  54. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_lut/tp_model.py +1 -1
  55. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2/tp_model.py +20 -6
  56. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2/tpc_keras.py +1 -1
  57. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2_lut/tp_model.py +22 -8
  58. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2_lut/tpc_keras.py +1 -1
  59. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/LICENSE.md +0 -0
  60. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/README.md +0 -0
  61. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/mct_nightly.egg-info/dependency_links.txt +0 -0
  62. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/mct_nightly.egg-info/requires.txt +0 -0
  63. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/mct_nightly.egg-info/top_level.txt +0 -0
  64. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/__init__.py +0 -0
  65. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/analyzer.py +0 -0
  66. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/__init__.py +0 -0
  67. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/back2framework/__init__.py +0 -0
  68. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/back2framework/base_model_builder.py +0 -0
  69. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/base_substitutions.py +0 -0
  70. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/collectors/__init__.py +0 -0
  71. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/collectors/base_collector.py +0 -0
  72. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/collectors/histogram_collector.py +0 -0
  73. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/collectors/mean_collector.py +0 -0
  74. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/collectors/min_max_per_channel_collector.py +0 -0
  75. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/collectors/statistics_collector.py +0 -0
  76. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/framework_implementation.py +0 -0
  77. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/framework_info.py +0 -0
  78. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/fusion/__init__.py +0 -0
  79. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/fusion/layer_fusing.py +0 -0
  80. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/graph/__init__.py +0 -0
  81. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/graph/edge.py +0 -0
  82. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/graph/graph_matchers.py +0 -0
  83. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/graph/graph_searches.py +0 -0
  84. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/graph/memory_graph/__init__.py +0 -0
  85. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/graph/memory_graph/bipartite_graph.py +0 -0
  86. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/graph/memory_graph/compute_graph_max_cut.py +0 -0
  87. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/graph/memory_graph/cut.py +0 -0
  88. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/graph/memory_graph/max_cut_astar.py +0 -0
  89. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/graph/memory_graph/memory_element.py +0 -0
  90. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/graph/memory_graph/memory_graph.py +0 -0
  91. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/graph/virtual_activation_weights_node.py +0 -0
  92. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/hessian/__init__.py +0 -0
  93. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/hessian/hessian_info_utils.py +0 -0
  94. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/hessian/trace_hessian_calculator.py +0 -0
  95. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/matchers/__init__.py +0 -0
  96. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/matchers/base_graph_filter.py +0 -0
  97. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/matchers/base_matcher.py +0 -0
  98. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/matchers/edge_matcher.py +0 -0
  99. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/matchers/function.py +0 -0
  100. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/matchers/node_matcher.py +0 -0
  101. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/matchers/walk_matcher.py +0 -0
  102. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/memory_computation.py +0 -0
  103. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/__init__.py +0 -0
  104. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/bit_width_setter.py +0 -0
  105. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/configurable_quant_id.py +0 -0
  106. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/configurable_quantizer_utils.py +0 -0
  107. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/distance_weighting.py +0 -0
  108. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/mixed_precision_quantization_config.py +0 -0
  109. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/mixed_precision_search_facade.py +0 -0
  110. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/mixed_precision_search_manager.py +0 -0
  111. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/resource_utilization_tools/__init__.py +0 -0
  112. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/resource_utilization_tools/resource_utilization.py +0 -0
  113. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/resource_utilization_tools/resource_utilization_data.py +0 -0
  114. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/resource_utilization_tools/ru_aggregation_methods.py +0 -0
  115. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/resource_utilization_tools/ru_functions_mapping.py +0 -0
  116. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/resource_utilization_tools/ru_methods.py +0 -0
  117. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/search_methods/__init__.py +0 -0
  118. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/search_methods/linear_programming.py +0 -0
  119. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/sensitivity_evaluation.py +0 -0
  120. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/set_layer_to_bitwidth.py +0 -0
  121. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/solution_refinement_procedure.py +0 -0
  122. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/model_builder_mode.py +0 -0
  123. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/model_collector.py +0 -0
  124. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/model_validation.py +0 -0
  125. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/network_editors/__init__.py +0 -0
  126. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/network_editors/actions.py +0 -0
  127. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/network_editors/edit_network.py +0 -0
  128. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/node_prior_info.py +0 -0
  129. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/__init__.py +0 -0
  130. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/channels_grouping.py +0 -0
  131. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/greedy_mask_calculator.py +0 -0
  132. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/importance_metrics/__init__.py +0 -0
  133. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/importance_metrics/base_importance_metric.py +0 -0
  134. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/importance_metrics/importance_metric_factory.py +0 -0
  135. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/importance_metrics/lfh_importance_metric.py +0 -0
  136. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/mask/__init__.py +0 -0
  137. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/mask/per_channel_mask.py +0 -0
  138. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/mask/per_simd_group_mask.py +0 -0
  139. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/memory_calculator.py +0 -0
  140. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/prune_graph.py +0 -0
  141. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/pruner.py +0 -0
  142. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/pruning_config.py +0 -0
  143. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/pruning_framework_implementation.py +0 -0
  144. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/pruning_info.py +0 -0
  145. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/pruning_section.py +0 -0
  146. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/__init__.py +0 -0
  147. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/candidate_node_quantization_config.py +0 -0
  148. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/core_config.py +0 -0
  149. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/debug_config.py +0 -0
  150. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/filter_nodes_candidates.py +0 -0
  151. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantization_fn_selection.py +0 -0
  152. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantization_params_fn_selection.py +0 -0
  153. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantization_params_generation/__init__.py +0 -0
  154. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantization_params_generation/outlier_filter.py +0 -0
  155. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantization_params_generation/qparams_activations_computation.py +0 -0
  156. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantization_params_generation/qparams_search.py +0 -0
  157. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantize_graph_weights.py +0 -0
  158. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantize_node.py +0 -0
  159. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantizers/__init__.py +0 -0
  160. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantizers/lut_kmeans_quantizer.py +0 -0
  161. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantizers/quantizers_helpers.py +0 -0
  162. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantizers/uniform_quantizers.py +0 -0
  163. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/statistics_correction/__init__.py +0 -0
  164. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/statistics_correction/apply_bias_correction_to_graph.py +0 -0
  165. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/statistics_correction/apply_second_moment_correction_to_graph.py +0 -0
  166. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/statistics_correction/compute_bias_correction_of_graph.py +0 -0
  167. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/statistics_correction/statistics_correction.py +0 -0
  168. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/substitutions/__init__.py +0 -0
  169. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/substitutions/apply_substitutions.py +0 -0
  170. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/substitutions/batchnorm_folding.py +0 -0
  171. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/substitutions/batchnorm_reconstruction.py +0 -0
  172. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/substitutions/batchnorm_refusing.py +0 -0
  173. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/substitutions/linear_collapsing.py +0 -0
  174. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/substitutions/linear_collapsing_substitution.py +0 -0
  175. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/substitutions/residual_collapsing.py +0 -0
  176. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/substitutions/scale_equalization.py +0 -0
  177. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/substitutions/shift_negative_activation.py +0 -0
  178. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/substitutions/softmax_shift.py +0 -0
  179. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/substitutions/virtual_activation_weights_composition.py +0 -0
  180. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/substitutions/weights_activation_split.py +0 -0
  181. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/user_info.py +0 -0
  182. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/visualization/__init__.py +0 -0
  183. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/visualization/final_config_visualizer.py +0 -0
  184. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/visualization/nn_visualizer.py +0 -0
  185. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/visualization/tensorboard_writer.py +0 -0
  186. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/__init__.py +0 -0
  187. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/back2framework/__init__.py +0 -0
  188. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/back2framework/factory_model_builder.py +0 -0
  189. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/back2framework/float_model_builder.py +0 -0
  190. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/back2framework/instance_builder.py +0 -0
  191. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/back2framework/mixed_precision_model_builder.py +0 -0
  192. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/back2framework/quantized_model_builder.py +0 -0
  193. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/constants.py +0 -0
  194. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/custom_layer_validation.py +0 -0
  195. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/default_framework_info.py +0 -0
  196. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/__init__.py +0 -0
  197. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/__init__.py +0 -0
  198. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/activation_decomposition.py +0 -0
  199. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/batchnorm_reconstruction.py +0 -0
  200. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/batchnorm_refusing.py +0 -0
  201. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/concat_threshold_update.py +0 -0
  202. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/dwconv_to_conv.py +0 -0
  203. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/input_scaling.py +0 -0
  204. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/matmul_substitution.py +0 -0
  205. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/multi_head_attention_decomposition.py +0 -0
  206. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/relu_bound_to_power_of_2.py +0 -0
  207. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/scale_equalization.py +0 -0
  208. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/separableconv_decomposition.py +0 -0
  209. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/shift_negative_activation.py +0 -0
  210. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/softmax_shift.py +0 -0
  211. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/virtual_activation_weights_composition.py +0 -0
  212. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/weights_activation_split.py +0 -0
  213. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/hessian/__init__.py +0 -0
  214. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/hessian/activation_trace_hessian_calculator_keras.py +0 -0
  215. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/hessian/trace_hessian_calculator_keras.py +0 -0
  216. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/hessian/weights_trace_hessian_calculator_keras.py +0 -0
  217. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/keras_model_validation.py +0 -0
  218. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/mixed_precision/__init__.py +0 -0
  219. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/mixed_precision/configurable_activation_quantizer.py +0 -0
  220. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/mixed_precision/configurable_weights_quantizer.py +0 -0
  221. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/pruning/__init__.py +0 -0
  222. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/quantizer/__init__.py +0 -0
  223. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/quantizer/base_quantizer.py +0 -0
  224. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/quantizer/fake_quant_builder.py +0 -0
  225. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/quantizer/lut_fake_quant.py +0 -0
  226. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/reader/__init__.py +0 -0
  227. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/reader/connectivity_handler.py +0 -0
  228. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/reader/nested_model/__init__.py +0 -0
  229. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/reader/nested_model/edges_merger.py +0 -0
  230. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/reader/nested_model/nested_model_handler.py +0 -0
  231. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/reader/nested_model/nodes_merger.py +0 -0
  232. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/reader/nested_model/outputs_merger.py +0 -0
  233. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/reader/reader.py +0 -0
  234. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/resource_utilization_data_facade.py +0 -0
  235. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/statistics_correction/__init__.py +0 -0
  236. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/statistics_correction/apply_second_moment_correction.py +0 -0
  237. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/visualization/__init__.py +0 -0
  238. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/__init__.py +0 -0
  239. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/back2framework/__init__.py +0 -0
  240. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/back2framework/factory_model_builder.py +0 -0
  241. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/back2framework/float_model_builder.py +0 -0
  242. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/back2framework/instance_builder.py +0 -0
  243. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/back2framework/mixed_precision_model_builder.py +0 -0
  244. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/back2framework/quantization_wrapper/__init__.py +0 -0
  245. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/back2framework/quantization_wrapper/quantized_layer_wrapper.py +0 -0
  246. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/back2framework/quantization_wrapper/wrapper_quantize_config.py +0 -0
  247. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/back2framework/quantized_model_builder.py +0 -0
  248. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/constants.py +0 -0
  249. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/default_framework_info.py +0 -0
  250. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/__init__.py +0 -0
  251. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/__init__.py +0 -0
  252. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/batchnorm_reconstruction.py +0 -0
  253. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/batchnorm_refusing.py +0 -0
  254. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/concat_threshold_update.py +0 -0
  255. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/functional_batch_norm.py +0 -0
  256. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/functional_layer_norm.py +0 -0
  257. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/multi_head_attention_decomposition.py +0 -0
  258. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/permute_call_method.py +0 -0
  259. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/reshape_with_static_shapes.py +0 -0
  260. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/scale_equalization.py +0 -0
  261. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/shift_negative_activation.py +0 -0
  262. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/softmax_shift.py +0 -0
  263. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/virtual_activation_weights_composition.py +0 -0
  264. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/weights_activation_split.py +0 -0
  265. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/hessian/__init__.py +0 -0
  266. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/hessian/activation_trace_hessian_calculator_pytorch.py +0 -0
  267. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/hessian/trace_hessian_calculator_pytorch.py +0 -0
  268. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/hessian/weights_trace_hessian_calculator_pytorch.py +0 -0
  269. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/mixed_precision/__init__.py +0 -0
  270. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/mixed_precision/configurable_activation_quantizer.py +0 -0
  271. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/mixed_precision/configurable_weights_quantizer.py +0 -0
  272. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/pruning/__init__.py +0 -0
  273. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/pytorch_device_config.py +0 -0
  274. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/quantizer/__init__.py +0 -0
  275. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/quantizer/fake_quant_builder.py +0 -0
  276. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/quantizer/lut_fake_quant.py +0 -0
  277. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/reader/__init__.py +0 -0
  278. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/reader/graph_builders.py +0 -0
  279. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/reader/node_holders.py +0 -0
  280. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/reader/reader.py +0 -0
  281. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/resource_utilization_data_facade.py +0 -0
  282. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/statistics_correction/__init__.py +0 -0
  283. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/statistics_correction/apply_second_moment_correction.py +0 -0
  284. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/utils.py +0 -0
  285. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/__init__.py +0 -0
  286. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/common/__init__.py +0 -0
  287. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/common/constants.py +0 -0
  288. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/common/data_generation.py +0 -0
  289. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/common/data_generation_config.py +0 -0
  290. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/common/enums.py +0 -0
  291. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/common/image_pipeline.py +0 -0
  292. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/common/model_info_exctractors.py +0 -0
  293. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/common/optimization_utils.py +0 -0
  294. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/keras/__init__.py +0 -0
  295. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/keras/constants.py +0 -0
  296. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/keras/image_pipeline.py +0 -0
  297. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/keras/keras_data_generation.py +0 -0
  298. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/keras/model_info_exctractors.py +0 -0
  299. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/keras/optimization_functions/__init__.py +0 -0
  300. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/keras/optimization_functions/batchnorm_alignment_functions.py +0 -0
  301. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/keras/optimization_functions/bn_layer_weighting_functions.py +0 -0
  302. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/keras/optimization_functions/image_initilization.py +0 -0
  303. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/keras/optimization_functions/output_loss_functions.py +0 -0
  304. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/keras/optimization_functions/scheduler_step_functions.py +0 -0
  305. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/keras/optimization_utils.py +0 -0
  306. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/pytorch/__init__.py +0 -0
  307. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/pytorch/constants.py +0 -0
  308. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/pytorch/image_pipeline.py +0 -0
  309. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/pytorch/model_info_exctractors.py +0 -0
  310. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/pytorch/optimization_functions/__init__.py +0 -0
  311. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/pytorch/optimization_functions/batchnorm_alignment_functions.py +0 -0
  312. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/pytorch/optimization_functions/bn_layer_weighting_functions.py +0 -0
  313. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/pytorch/optimization_functions/image_initilization.py +0 -0
  314. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/pytorch/optimization_functions/output_loss_functions.py +0 -0
  315. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/pytorch/optimization_functions/scheduler_step_functions.py +0 -0
  316. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/pytorch/optimization_utils.py +0 -0
  317. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/pytorch/pytorch_data_generation.py +0 -0
  318. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/defaultdict.py +0 -0
  319. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/__init__.py +0 -0
  320. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/__init__.py +0 -0
  321. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/fw_agonstic/__init__.py +0 -0
  322. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/fw_agonstic/exporter.py +0 -0
  323. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/fw_agonstic/quantization_format.py +0 -0
  324. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/keras/__init__.py +0 -0
  325. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/keras/base_keras_exporter.py +0 -0
  326. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/keras/export_serialization_format.py +0 -0
  327. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/keras/fakely_quant_keras_exporter.py +0 -0
  328. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/keras/fakely_quant_tflite_exporter.py +0 -0
  329. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/keras/int8_tflite_exporter.py +0 -0
  330. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/keras/keras_export_facade.py +0 -0
  331. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/keras/mctq_keras_exporter.py +0 -0
  332. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/pytorch/__init__.py +0 -0
  333. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/pytorch/base_pytorch_exporter.py +0 -0
  334. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/pytorch/export_serialization_format.py +0 -0
  335. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/pytorch/fakely_quant_onnx_pytorch_exporter.py +0 -0
  336. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/pytorch/fakely_quant_torchscript_pytorch_exporter.py +0 -0
  337. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/pytorch/pytorch_export_facade.py +0 -0
  338. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_wrapper/__init__.py +0 -0
  339. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_wrapper/fw_agnostic/__init__.py +0 -0
  340. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_wrapper/fw_agnostic/get_inferable_quantizers.py +0 -0
  341. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_wrapper/keras/__init__.py +0 -0
  342. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_wrapper/keras/builder/__init__.py +0 -0
  343. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_wrapper/keras/builder/node_to_quantizer.py +0 -0
  344. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_wrapper/keras/validate_layer.py +0 -0
  345. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_wrapper/pytorch/__init__.py +0 -0
  346. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_wrapper/pytorch/builder/__init__.py +0 -0
  347. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_wrapper/pytorch/builder/node_to_quantizer.py +0 -0
  348. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_wrapper/pytorch/validate_layer.py +0 -0
  349. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/__init__.py +0 -0
  350. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/common/__init__.py +0 -0
  351. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/common/gptq_config.py +0 -0
  352. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/common/gptq_constants.py +0 -0
  353. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/common/gptq_framework_implementation.py +0 -0
  354. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/common/gptq_graph.py +0 -0
  355. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/common/gptq_training.py +0 -0
  356. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/__init__.py +0 -0
  357. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/gptq_keras_implementation.py +0 -0
  358. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/gptq_loss.py +0 -0
  359. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/gptq_training.py +0 -0
  360. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/graph_info.py +0 -0
  361. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/quantizer/__init__.py +0 -0
  362. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/quantizer/base_keras_gptq_quantizer.py +0 -0
  363. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/quantizer/quant_utils.py +0 -0
  364. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/quantizer/quantization_builder.py +0 -0
  365. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/quantizer/regularization_factory.py +0 -0
  366. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/quantizer/soft_rounding/__init__.py +0 -0
  367. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/quantizer/soft_rounding/soft_quantizer_reg.py +0 -0
  368. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/quantizer/soft_rounding/symmetric_soft_quantizer.py +0 -0
  369. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/quantizer/soft_rounding/uniform_soft_quantizer.py +0 -0
  370. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/quantizer/ste_rounding/__init__.py +0 -0
  371. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/quantizer/ste_rounding/symmetric_ste.py +0 -0
  372. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/__init__.py +0 -0
  373. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/gptq_loss.py +0 -0
  374. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/gptq_pytorch_implementation.py +0 -0
  375. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/gptq_training.py +0 -0
  376. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/graph_info.py +0 -0
  377. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/quantizer/__init__.py +0 -0
  378. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/quantizer/base_pytorch_gptq_quantizer.py +0 -0
  379. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/quantizer/quant_utils.py +0 -0
  380. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/quantizer/quantization_builder.py +0 -0
  381. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/quantizer/regularization_factory.py +0 -0
  382. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/quantizer/soft_rounding/__init__.py +0 -0
  383. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/quantizer/soft_rounding/soft_quantizer_reg.py +0 -0
  384. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/quantizer/soft_rounding/symmetric_soft_quantizer.py +0 -0
  385. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/quantizer/soft_rounding/uniform_soft_quantizer.py +0 -0
  386. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/quantizer/ste_rounding/__init__.py +0 -0
  387. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/quantizer/ste_rounding/symmetric_ste.py +0 -0
  388. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/logger.py +0 -0
  389. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/metadata.py +0 -0
  390. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/pruning/__init__.py +0 -0
  391. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/pruning/keras/__init__.py +0 -0
  392. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/pruning/keras/pruning_facade.py +0 -0
  393. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/pruning/pytorch/__init__.py +0 -0
  394. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/pruning/pytorch/pruning_facade.py +0 -0
  395. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/ptq/__init__.py +0 -0
  396. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/ptq/keras/__init__.py +0 -0
  397. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/ptq/keras/quantization_facade.py +0 -0
  398. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/ptq/pytorch/__init__.py +0 -0
  399. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/ptq/pytorch/quantization_facade.py +0 -0
  400. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/ptq/runner.py +0 -0
  401. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/__init__.py +0 -0
  402. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/common/__init__.py +0 -0
  403. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/common/qat_config.py +0 -0
  404. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/keras/__init__.py +0 -0
  405. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/keras/quantization_facade.py +0 -0
  406. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/keras/quantizer/__init__.py +0 -0
  407. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/keras/quantizer/base_keras_qat_quantizer.py +0 -0
  408. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/keras/quantizer/lsq/__init__.py +0 -0
  409. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/keras/quantizer/lsq/symmetric_lsq.py +0 -0
  410. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/keras/quantizer/lsq/uniform_lsq.py +0 -0
  411. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/keras/quantizer/quant_utils.py +0 -0
  412. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/keras/quantizer/quantization_builder.py +0 -0
  413. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/keras/quantizer/ste_rounding/__init__.py +0 -0
  414. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/keras/quantizer/ste_rounding/symmetric_ste.py +0 -0
  415. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/keras/quantizer/ste_rounding/uniform_ste.py +0 -0
  416. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/pytorch/__init__.py +0 -0
  417. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/pytorch/quantization_facade.py +0 -0
  418. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/pytorch/quantizer/__init__.py +0 -0
  419. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/pytorch/quantizer/base_pytorch_qat_quantizer.py +0 -0
  420. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/pytorch/quantizer/lsq/__init__.py +0 -0
  421. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/pytorch/quantizer/lsq/symmetric_lsq.py +0 -0
  422. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/pytorch/quantizer/lsq/uniform_lsq.py +0 -0
  423. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/pytorch/quantizer/quantization_builder.py +0 -0
  424. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/pytorch/quantizer/quantizer_utils.py +0 -0
  425. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/pytorch/quantizer/ste_rounding/__init__.py +0 -0
  426. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/pytorch/quantizer/ste_rounding/symmetric_ste.py +0 -0
  427. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/pytorch/quantizer/ste_rounding/uniform_ste.py +0 -0
  428. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/__init__.py +0 -0
  429. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/constants.py +0 -0
  430. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/immutable.py +0 -0
  431. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/target_platform/__init__.py +0 -0
  432. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/target_platform/current_tp_model.py +0 -0
  433. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/target_platform/fusing.py +0 -0
  434. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/target_platform/op_quantization_config.py +0 -0
  435. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/target_platform/operators.py +0 -0
  436. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/target_platform/target_platform_model.py +0 -0
  437. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/target_platform/target_platform_model_component.py +0 -0
  438. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/__init__.py +0 -0
  439. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/attribute_filter.py +0 -0
  440. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/current_tpc.py +0 -0
  441. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/layer_filter_params.py +0 -0
  442. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/operations_to_layers.py +0 -0
  443. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/target_platform_capabilities.py +0 -0
  444. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/target_platform_capabilities_component.py +0 -0
  445. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/__init__.py +0 -0
  446. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/get_target_platform_capabilities.py +0 -0
  447. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/__init__.py +0 -0
  448. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/target_platform_capabilities.py +0 -0
  449. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/__init__.py +0 -0
  450. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/tp_model.py +0 -0
  451. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/tpc_keras.py +0 -0
  452. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/tpc_pytorch.py +0 -0
  453. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_lut/__init__.py +0 -0
  454. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_lut/tpc_keras.py +0 -0
  455. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_lut/tpc_pytorch.py +0 -0
  456. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_pot/__init__.py +0 -0
  457. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_pot/tp_model.py +0 -0
  458. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_pot/tpc_keras.py +0 -0
  459. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_pot/tpc_pytorch.py +0 -0
  460. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2/__init__.py +0 -0
  461. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2/tpc_pytorch.py +0 -0
  462. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2_lut/__init__.py +0 -0
  463. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2_lut/tpc_pytorch.py +0 -0
  464. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/__init__.py +0 -0
  465. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/latest/__init__.py +0 -0
  466. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/target_platform_capabilities.py +0 -0
  467. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/__init__.py +0 -0
  468. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/tp_model.py +0 -0
  469. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/tpc_keras.py +0 -0
  470. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/tpc_pytorch.py +0 -0
  471. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/__init__.py +0 -0
  472. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/latest/__init__.py +0 -0
  473. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/target_platform_capabilities.py +0 -0
  474. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/__init__.py +0 -0
  475. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/tp_model.py +0 -0
  476. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/tpc_keras.py +0 -0
  477. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/tpc_pytorch.py +0 -0
  478. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/trainable_infrastructure/__init__.py +0 -0
  479. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/trainable_infrastructure/common/__init__.py +0 -0
  480. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/trainable_infrastructure/common/base_trainable_quantizer.py +0 -0
  481. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/trainable_infrastructure/common/constants.py +0 -0
  482. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/trainable_infrastructure/common/get_quantizer_config.py +0 -0
  483. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/trainable_infrastructure/common/get_quantizers.py +0 -0
  484. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/trainable_infrastructure/common/quant_utils.py +0 -0
  485. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/trainable_infrastructure/common/trainable_quantizer_config.py +0 -0
  486. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/trainable_infrastructure/keras/__init__.py +0 -0
  487. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/trainable_infrastructure/keras/base_keras_quantizer.py +0 -0
  488. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/trainable_infrastructure/keras/config_serialization.py +0 -0
  489. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/trainable_infrastructure/keras/load_model.py +0 -0
  490. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/trainable_infrastructure/keras/quantize_wrapper.py +0 -0
  491. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/trainable_infrastructure/keras/quantizer_utils.py +0 -0
  492. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/trainable_infrastructure/pytorch/__init__.py +0 -0
  493. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/trainable_infrastructure/pytorch/base_pytorch_quantizer.py +0 -0
  494. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/setup.cfg +0 -0
  495. {mct-nightly-2.0.0.20240417.406 → mct-nightly-2.0.0.20240419.358}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mct-nightly
3
- Version: 2.0.0.20240417.406
3
+ Version: 2.0.0.20240419.358
4
4
  Summary: A Model Compression Toolkit for neural networks
5
5
  Home-page: UNKNOWN
6
6
  License: UNKNOWN
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mct-nightly
3
- Version: 2.0.0.20240417.406
3
+ Version: 2.0.0.20240419.358
4
4
  Summary: A Model Compression Toolkit for neural networks
5
5
  Home-page: UNKNOWN
6
6
  License: UNKNOWN
@@ -144,6 +144,7 @@ model_compression_toolkit/core/common/substitutions/batchnorm_reconstruction.py
144
144
  model_compression_toolkit/core/common/substitutions/batchnorm_refusing.py
145
145
  model_compression_toolkit/core/common/substitutions/linear_collapsing.py
146
146
  model_compression_toolkit/core/common/substitutions/linear_collapsing_substitution.py
147
+ model_compression_toolkit/core/common/substitutions/remove_identity.py
147
148
  model_compression_toolkit/core/common/substitutions/residual_collapsing.py
148
149
  model_compression_toolkit/core/common/substitutions/scale_equalization.py
149
150
  model_compression_toolkit/core/common/substitutions/shift_negative_activation.py
@@ -183,6 +184,7 @@ model_compression_toolkit/core/keras/graph_substitutions/substitutions/linear_co
183
184
  model_compression_toolkit/core/keras/graph_substitutions/substitutions/matmul_substitution.py
184
185
  model_compression_toolkit/core/keras/graph_substitutions/substitutions/multi_head_attention_decomposition.py
185
186
  model_compression_toolkit/core/keras/graph_substitutions/substitutions/relu_bound_to_power_of_2.py
187
+ model_compression_toolkit/core/keras/graph_substitutions/substitutions/remove_identity.py
186
188
  model_compression_toolkit/core/keras/graph_substitutions/substitutions/residual_collapsing.py
187
189
  model_compression_toolkit/core/keras/graph_substitutions/substitutions/scale_equalization.py
188
190
  model_compression_toolkit/core/keras/graph_substitutions/substitutions/separableconv_decomposition.py
@@ -247,6 +249,7 @@ model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/linear_
247
249
  model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/multi_head_attention_decomposition.py
248
250
  model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/permute_call_method.py
249
251
  model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/relu_bound_to_power_of_2.py
252
+ model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/remove_identity.py
250
253
  model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/reshape_with_static_shapes.py
251
254
  model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/residual_collapsing.py
252
255
  model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/scale_equalization.py
@@ -27,4 +27,4 @@ from model_compression_toolkit import data_generation
27
27
  from model_compression_toolkit import pruning
28
28
  from model_compression_toolkit.trainable_infrastructure.keras.load_model import keras_load_quantized_model
29
29
 
30
- __version__ = "2.0.0.20240417.000406"
30
+ __version__ = "2.0.0.20240419.000358"
@@ -97,6 +97,8 @@ UPPER_FACTOR = 1.2
97
97
  DEC_RANGE_BOTTOM = 0.97
98
98
  DEC_RANGE_UPPER = 1.03
99
99
 
100
+ NUM_QPARAM_HESSIAN_SAMPLES = 16
101
+
100
102
  # Resource utilization computation parameters
101
103
  BITS_TO_BYTES = 8.0
102
104
 
@@ -98,8 +98,8 @@ class Graph(nx.MultiDiGraph, GraphSearches):
98
98
  tpc_layers = tpc.op_sets_to_layers.get_layers()
99
99
  tpc_filtered_layers = [layer for layer in tpc_layers if isinstance(layer, LayerFilterParams)]
100
100
  for n in self.nodes:
101
- is_node_in_tpc = n.type in tpc_layers or any([n.is_match_filter_params(filtered_layer)
102
- for filtered_layer in tpc_filtered_layers])
101
+ is_node_in_tpc = any([n.is_match_type(_type) for _type in tpc_layers]) or \
102
+ any([n.is_match_filter_params(filtered_layer) for filtered_layer in tpc_filtered_layers])
103
103
  if n.is_custom:
104
104
  if not is_node_in_tpc:
105
105
  Logger.critical(f'MCT does not support optimizing Keras custom layers. Found a layer of type {n.type}. '
@@ -14,7 +14,7 @@
14
14
  # ==============================================================================
15
15
 
16
16
  import copy
17
- from typing import Dict, Any, Tuple, List, Type
17
+ from typing import Dict, Any, Tuple, List, Type, Union
18
18
 
19
19
  import numpy as np
20
20
 
@@ -151,7 +151,21 @@ class BaseNode:
151
151
  """
152
152
  return self.reuse or self.reuse_group is not None
153
153
 
154
- def get_weights_by_keys(self, name: str) -> np.ndarray:
154
+ def _get_weight_name(self, name: Union[str, int]) -> List[Union[str, int]]:
155
+ """
156
+ Get weight names that match argument name (either string weights or integer for
157
+ positional weights).
158
+ Args:
159
+ name: weight name
160
+
161
+ Returns:
162
+ A list of weight names that match input "name"
163
+
164
+ """
165
+ return [k for k in self.weights.keys()
166
+ if (isinstance(k, int) and name == k) or (isinstance(k, str) and name in k)]
167
+
168
+ def get_weights_by_keys(self, name: Union[str, int]) -> np.ndarray:
155
169
  """
156
170
  Get a node's weight by its name.
157
171
  Args:
@@ -163,7 +177,7 @@ class BaseNode:
163
177
  if name is None:
164
178
  return None
165
179
 
166
- res = [k for k in self.weights.keys() if name in k]
180
+ res = self._get_weight_name(name)
167
181
  if len(res) == 1: # Make sure there are no duplicates
168
182
  return self.weights[res[0]]
169
183
  else:
@@ -179,7 +193,7 @@ class BaseNode:
179
193
 
180
194
  """
181
195
 
182
- res = [k for k in self.weights.keys() if name in k]
196
+ res = self._get_weight_name(name)
183
197
  if len(res) == 1:
184
198
  self.weights[res[0]] = tensor
185
199
  else: # Add if not exist
@@ -552,14 +566,17 @@ class BaseNode:
552
566
  for fl, qco in tpc.filterlayer2qco.items():
553
567
  if self.is_match_filter_params(fl):
554
568
  return qco
555
- if self.type in tpc.layer2qco:
556
- return tpc.layer2qco.get(self.type)
569
+ # Extract qco with is_match_type to overcome mismatch of function types in TF 2.15
570
+ matching_qcos = [_qco for _type, _qco in tpc.layer2qco.items() if self.is_match_type(_type)]
571
+ if matching_qcos:
572
+ if len(matching_qcos) > 1:
573
+ Logger.error('Found duplicate qco types!')
574
+ return matching_qcos[0]
557
575
  return tpc.tp_model.default_qco
558
576
 
559
577
  def is_match_type(self, _type: Type) -> bool:
560
578
  """
561
- Check if input type matches the node type, either in instance type or in type name. Checking the
562
- name string is required because of function types changes that occurred in TF 2.15.
579
+ Check if input type matches the node type, either in instance type or in type name.
563
580
 
564
581
  Args:
565
582
  _type: other node type
@@ -567,7 +584,7 @@ class BaseNode:
567
584
  Whether _type matches the self node type
568
585
 
569
586
  """
570
- return _type == self.type or _type.__name__ == self.type.__name__
587
+ return _type == self.type
571
588
 
572
589
  def is_match_filter_params(self, layer_filter_params: LayerFilterParams) -> bool:
573
590
  """
@@ -1,5 +1,6 @@
1
- from typing import Dict, Any, Tuple, List
1
+ from typing import Dict, Any, Tuple, Type
2
2
 
3
+ from model_compression_toolkit.constants import FOUND_TF
3
4
  from model_compression_toolkit.core.common.graph.base_node import BaseNode
4
5
  import numpy as np
5
6
 
@@ -71,3 +72,19 @@ class FunctionalNode(BaseNode):
71
72
  :return: the node's functional_op
72
73
  """
73
74
  return self.functional_op
75
+
76
+ def is_match_type(self, _type: Type) -> bool:
77
+ """
78
+ Check if input type matches the node type, either in instance type or in type name. Checking the
79
+ name string is required because of function types changes that occurred in TF 2.15, because it
80
+ changes the "function" attribute object (e.g. a different tf.add function that will fail the
81
+ equal operation).
82
+
83
+ Args:
84
+ _type: other node type
85
+ Returns:
86
+ Whether _type matches the self node type
87
+
88
+ """
89
+ names_match = _type.__name__ == self.type.__name__ if FOUND_TF else False
90
+ return super().is_match_type(_type) or names_match
@@ -17,7 +17,6 @@ from functools import partial
17
17
  from typing import Callable, List
18
18
 
19
19
  from model_compression_toolkit.constants import HESSIAN_NUM_ITERATIONS
20
- from model_compression_toolkit.core.common import Graph
21
20
  from model_compression_toolkit.core.common.hessian.trace_hessian_request import TraceHessianRequest
22
21
  from model_compression_toolkit.logger import Logger
23
22
 
@@ -38,7 +37,7 @@ class HessianInfoService:
38
37
  """
39
38
 
40
39
  def __init__(self,
41
- graph: Graph,
40
+ graph,
42
41
  representative_dataset: Callable,
43
42
  fw_impl,
44
43
  num_iterations_for_approximation: int = HESSIAN_NUM_ITERATIONS
@@ -151,7 +150,7 @@ class HessianInfoService:
151
150
  if required_size==0:
152
151
  return []
153
152
 
154
- Logger.info(f"Ensuring {required_size} Hessian-trace approximation for node {trace_hessian_request.target_node}.")
153
+ Logger.info(f"\nEnsuring {required_size} Hessian-trace approximation for node {trace_hessian_request.target_node}.")
155
154
 
156
155
  # Replace request of a reused target node with a request of the 'reuse group'.
157
156
  if trace_hessian_request.target_node.reuse_group:
@@ -16,8 +16,6 @@ from typing import List
16
16
 
17
17
  from enum import Enum
18
18
 
19
- from model_compression_toolkit.core.common import BaseNode
20
-
21
19
 
22
20
  class HessianMode(Enum):
23
21
  """
@@ -54,7 +52,7 @@ class TraceHessianRequest:
54
52
  def __init__(self,
55
53
  mode: HessianMode,
56
54
  granularity: HessianInfoGranularity,
57
- target_node: BaseNode,
55
+ target_node,
58
56
  ):
59
57
  """
60
58
  Attributes:
@@ -15,6 +15,7 @@
15
15
 
16
16
  from typing import Any
17
17
  from model_compression_toolkit.core.common.matchers.node_matcher import BaseNodeMatcher
18
+ from model_compression_toolkit.core.common.graph.base_node import BaseNode
18
19
 
19
20
 
20
21
  class NodeTypeFilter(BaseNodeMatcher):
@@ -30,7 +31,7 @@ class NodeTypeFilter(BaseNodeMatcher):
30
31
  """
31
32
  self.node_type = node_type
32
33
 
33
- def apply(self, input_object: Any) -> bool:
34
+ def apply(self, input_object: BaseNode) -> bool:
34
35
  """
35
36
  Check if input_object is of the type that NodeTypeFilter contains.
36
37
 
@@ -38,9 +39,9 @@ class NodeTypeFilter(BaseNodeMatcher):
38
39
  input_object: Node object to check for its type.
39
40
 
40
41
  Returns:
41
- True if the node if of the type that was passed during the initialization of NodeTypeFilter.
42
+ True if the node is of the type that was passed during the initialization of NodeTypeFilter.
42
43
  """
43
- if input_object.type == self.node_type:
44
+ if input_object.is_match_type(self.node_type):
44
45
  return True
45
46
 
46
47
 
@@ -265,8 +265,6 @@ class WeightsAttrQuantizationConfig:
265
265
  self.enable_weights_quantization = weights_attr_cfg.enable_weights_quantization
266
266
  self.l_p_value = qc.l_p_value
267
267
 
268
-
269
-
270
268
  @property
271
269
  def weights_error_method(self) -> QuantizationErrorMethod:
272
270
  """
@@ -412,9 +410,6 @@ class NodeWeightsQuantizationConfig(BaseNodeQuantizationConfig):
412
410
  for attr in node_attrs_list:
413
411
  if isinstance(attr, int):
414
412
  # this is a positional attribute, so it needs to be handled separately.
415
- # we assume that a positional attribute is quantized with the default configuration provided in the TPC.
416
- if op_cfg.default_weight_attr_config.enable_weights_quantization:
417
- Logger.critical(f"Quantizing constant weights is not supported.")
418
413
  self.pos_attributes_config_mapping[attr] = WeightsAttrQuantizationConfig(qc=qc,
419
414
  weights_attr_cfg=op_cfg.default_weight_attr_config,
420
415
  weights_channels_axis=weights_channels_axis)
@@ -26,14 +26,16 @@ class QuantizationErrorMethod(Enum):
26
26
 
27
27
  NOCLIPPING - Use min/max values as thresholds.
28
28
 
29
- MSE - Use min square error for minimizing quantization noise.
29
+ MSE - Use mean square error for minimizing quantization noise.
30
30
 
31
- MAE - Use min absolute error for minimizing quantization noise.
31
+ MAE - Use mean absolute error for minimizing quantization noise.
32
32
 
33
33
  KL - Use KL-divergence to make signals distributions to be similar as possible.
34
34
 
35
35
  Lp - Use Lp-norm to minimizing quantization noise.
36
36
 
37
+ HMSE - Use Hessian-based mean squared error for minimizing quantization noise. This method is using Hessian scores to factorize more valuable parameters when computing the error induced by quantization.
38
+
37
39
  """
38
40
 
39
41
  NOCLIPPING = 0
@@ -41,6 +43,7 @@ class QuantizationErrorMethod(Enum):
41
43
  MAE = 2
42
44
  KL = 4
43
45
  LP = 5
46
+ HMSE = 6
44
47
 
45
48
 
46
49
  class QuantizationConfig:
@@ -13,13 +13,16 @@
13
13
  # limitations under the License.
14
14
  # ==============================================================================
15
15
  from copy import deepcopy
16
- from typing import Tuple, Callable
16
+ from typing import Tuple, Callable, List
17
17
  import numpy as np
18
18
  import model_compression_toolkit.core.common.quantization.quantization_config as qc
19
+ from model_compression_toolkit.core.common.hessian import TraceHessianRequest, HessianMode, HessianInfoGranularity, \
20
+ HessianInfoService
19
21
  from model_compression_toolkit.core.common.similarity_analyzer import compute_mse, compute_mae, compute_lp_norm
20
22
  from model_compression_toolkit.target_platform_capabilities.target_platform import QuantizationMethod
21
- from model_compression_toolkit.constants import FLOAT_32
22
- from model_compression_toolkit.core.common.quantization.quantizers.quantizers_helpers import uniform_quantize_tensor
23
+ from model_compression_toolkit.constants import FLOAT_32, NUM_QPARAM_HESSIAN_SAMPLES
24
+ from model_compression_toolkit.core.common.quantization.quantizers.quantizers_helpers import uniform_quantize_tensor, \
25
+ reshape_tensor_for_per_channel_search
23
26
 
24
27
 
25
28
  def _mse_error_histogram(q_bins: np.ndarray,
@@ -371,13 +374,63 @@ def _get_sliced_histogram(bins: np.ndarray,
371
374
  return bins_subset, counts_subset
372
375
 
373
376
 
377
+ def _compute_hessian_for_hmse(node,
378
+ hessian_info_service: HessianInfoService,
379
+ num_hessian_samples: int = NUM_QPARAM_HESSIAN_SAMPLES) -> List[np.ndarray]:
380
+ """
381
+ Compute and retrieve Hessian-based scores for using during HMSE error computation.
382
+
383
+ Args:
384
+ node: The node to compute Hessian-based scores for.
385
+ hessian_info_service: HessianInfoService object for retrieving Hessian-based scores.
386
+ num_hessian_samples: Number of samples to approximate Hessian-based scores on.
387
+
388
+ Returns: A list with computed Hessian-based scores tensors for the given node.
389
+
390
+ """
391
+ _request = TraceHessianRequest(mode=HessianMode.WEIGHTS,
392
+ granularity=HessianInfoGranularity.PER_ELEMENT,
393
+ target_node=node)
394
+ _scores_for_node = hessian_info_service.fetch_hessian(_request,
395
+ required_size=num_hessian_samples)
396
+
397
+ return _scores_for_node
398
+
399
+
400
+ def _hmse_error_function_wrapper(float_tensor: np.ndarray,
401
+ fxp_tensor: np.ndarray,
402
+ axis: int,
403
+ norm: bool,
404
+ hessian_scores: np.ndarray):
405
+ """
406
+ This function wraps the HMSE error method to enable using it during parameters selection.
407
+
408
+ Args:
409
+ float_tensor: Float tensor.
410
+ fxp_tensor: Quantized tensor.
411
+ axis: Axis along which the operation has been performed. If not None, then per-channel computation is expected.
412
+ norm: Indicates whether to normalize the result of the error function.
413
+ hessian_scores: A tensor with Hessian-based scores to use for Hessian-based MSE (HMSE) error computation.
414
+
415
+ Returns: The HMSE error between the float and fixed-point tensors.
416
+
417
+ """
418
+ if axis is not None:
419
+ hessian_scores = reshape_tensor_for_per_channel_search(hessian_scores, 0)
420
+
421
+ return compute_mse(float_tensor, fxp_tensor, axis, norm, weights=hessian_scores)
422
+
423
+
374
424
  def get_threshold_selection_tensor_error_function(quantization_method: QuantizationMethod,
375
425
  quant_error_method: qc.QuantizationErrorMethod,
376
426
  p: int,
377
427
  axis: int = None,
378
428
  norm: bool = False,
379
429
  n_bits: int = 8,
380
- signed: bool = True) -> Callable:
430
+ signed: bool = True,
431
+ node=None,
432
+ hessian_info_service: HessianInfoService = None,
433
+ num_hessian_samples: int = NUM_QPARAM_HESSIAN_SAMPLES) -> Callable:
381
434
  """
382
435
  Returns the error function compatible to the provided threshold method,
383
436
  to be used in the threshold optimization search for tensor quantization.
@@ -389,6 +442,9 @@ def get_threshold_selection_tensor_error_function(quantization_method: Quantizat
389
442
  norm: Indicates whether to normalize the result of the error function.
390
443
  n_bits: Number of bits used to quantize the tensor.
391
444
  signed: Indicates whether the input is signed.
445
+ node: The node for which the quantization error is computed (used only with HMSE error method).
446
+ hessian_info_service: HessianInfoService object for retrieving Hessian-based scores (used only with HMSE error method).
447
+ num_hessian_samples: Number of samples to approximate Hessian-based scores on (used only with HMSE error method).
392
448
 
393
449
  Returns: a Callable method that calculates the error between a tensor and a quantized tensor.
394
450
  """
@@ -418,6 +474,13 @@ def get_threshold_selection_tensor_error_function(quantization_method: Quantizat
418
474
  n_bits=n_bits,
419
475
  per_channel=True)
420
476
 
477
+ if quant_error_method == qc.QuantizationErrorMethod.HMSE:
478
+ node_hessian_scores = _compute_hessian_for_hmse(node, hessian_info_service, num_hessian_samples)
479
+ node_hessian_scores = np.sqrt(np.mean(node_hessian_scores, axis=0))
480
+
481
+ return lambda x, y, threshold: _hmse_error_function_wrapper(x, y, norm=norm, axis=axis,
482
+ hessian_scores=node_hessian_scores)
483
+
421
484
  quant_method_error_function_mapping = {
422
485
  qc.QuantizationErrorMethod.MSE: lambda x, y, threshold: compute_mse(x, y, norm=norm, axis=axis),
423
486
  qc.QuantizationErrorMethod.MAE: lambda x, y, threshold: compute_mae(x, y, norm=norm, axis=axis),
@@ -13,12 +13,14 @@
13
13
  # limitations under the License.
14
14
  # ==============================================================================
15
15
 
16
+ from typing import Dict
16
17
  import numpy as np
17
18
  from sklearn.cluster import KMeans
18
19
 
19
20
  import model_compression_toolkit.core.common.quantization.quantization_config as qc
20
21
  from model_compression_toolkit.constants import LUT_VALUES, MIN_THRESHOLD, SCALE_PER_CHANNEL, \
21
- LUT_VALUES_BITWIDTH, THRESHOLD
22
+ LUT_VALUES_BITWIDTH, THRESHOLD, NUM_QPARAM_HESSIAN_SAMPLES
23
+ from model_compression_toolkit.core.common.hessian import HessianInfoService
22
24
  from model_compression_toolkit.core.common.quantization.quantizers.quantizers_helpers import \
23
25
  max_power_of_two, int_quantization_with_threshold
24
26
  from model_compression_toolkit.core.common.quantization.quantization_params_generation.symmetric_selection import \
@@ -37,7 +39,10 @@ def lut_kmeans_tensor(tensor_data: np.ndarray,
37
39
  n_iter: int = 10,
38
40
  min_threshold: float = MIN_THRESHOLD,
39
41
  quant_error_method: qc.QuantizationErrorMethod = None,
40
- is_symmetric=False) -> dict:
42
+ is_symmetric: bool = False,
43
+ node=None,
44
+ hessian_info_service: HessianInfoService = None,
45
+ num_hessian_samples: int = NUM_QPARAM_HESSIAN_SAMPLES) -> Dict:
41
46
  """
42
47
  The quantizer first finds the closest max value per channel of tensor_data.
43
48
  Now, we divide tensor_data with the threshold vector per channel. In addition, we scale the result to the range
@@ -53,7 +58,10 @@ def lut_kmeans_tensor(tensor_data: np.ndarray,
53
58
  n_iter: Number of iterations to search_methods for the optimal threshold.
54
59
  min_threshold: Minimal threshold to chose when the computed one is smaller.
55
60
  quant_error_method: an error function to optimize the parameters' selection accordingly (not used for this method).
56
- is_symmetric (bool): Whether to apply symmetric weight quantization (default is False, meaning power of 2 quantization)
61
+ is_symmetric (bool): Whether to apply symmetric weight quantization (default is False, meaning power of 2 quantization).
62
+ node: The node for which the quantization error is computed (not used for this method).
63
+ hessian_info_service: HessianInfoService object for retrieving Hessian-based scores (not used for this method).
64
+ num_hessian_samples: Number of samples to approximate Hessian-based scores on (not used for this method).
57
65
 
58
66
  Returns:
59
67
  A dictionary containing the cluster assignments according to the k-means algorithm,
@@ -94,7 +102,7 @@ def lut_kmeans_histogram(bins: np.ndarray,
94
102
  constrained: bool = True,
95
103
  n_iter: int = 20,
96
104
  min_threshold: float = MIN_THRESHOLD,
97
- quant_error_method: qc.QuantizationErrorMethod = qc.QuantizationErrorMethod.MSE) -> dict:
105
+ quant_error_method: qc.QuantizationErrorMethod = qc.QuantizationErrorMethod.MSE) -> Dict:
98
106
  """
99
107
  Finds quantization cluster points for non-uniform activation quantization.
100
108
  The quantizer first finds the closest power-of-two number to the max value of the given histogram,
@@ -15,7 +15,8 @@
15
15
  import numpy as np
16
16
 
17
17
  import model_compression_toolkit.core.common.quantization.quantization_config as qc
18
- from model_compression_toolkit.constants import MIN_THRESHOLD, THRESHOLD
18
+ from model_compression_toolkit.constants import MIN_THRESHOLD, THRESHOLD, NUM_QPARAM_HESSIAN_SAMPLES
19
+ from model_compression_toolkit.core.common.hessian import HessianInfoService
19
20
  from model_compression_toolkit.core.common.quantization.quantization_params_generation.qparams_search import \
20
21
  qparams_selection_tensor_search, qparams_selection_histogram_search
21
22
  from model_compression_toolkit.core.common.quantization.quantizers.quantizers_helpers import max_power_of_two, get_tensor_max
@@ -31,7 +32,11 @@ def power_of_two_selection_tensor(tensor_data: np.ndarray,
31
32
  channel_axis: int = 1,
32
33
  n_iter: int = 10,
33
34
  min_threshold: float = MIN_THRESHOLD,
34
- quant_error_method: qc.QuantizationErrorMethod = qc.QuantizationErrorMethod.MSE) -> dict:
35
+ quant_error_method: qc.QuantizationErrorMethod = qc.QuantizationErrorMethod.MSE,
36
+ node=None,
37
+ hessian_info_service: HessianInfoService = None,
38
+ num_hessian_samples: int = NUM_QPARAM_HESSIAN_SAMPLES,
39
+ ) -> dict:
35
40
  """
36
41
  Compute the power of two threshold based on the provided QuantizationErrorMethod to quantize the tensor.
37
42
  Different search is applied, depends on the value of the selected QuantizationErrorMethod.
@@ -45,6 +50,9 @@ def power_of_two_selection_tensor(tensor_data: np.ndarray,
45
50
  n_iter: Number of iterations to search for the optimal threshold (not used for this method).
46
51
  min_threshold: Minimal threshold to use if threshold is too small (not used for this method).
47
52
  quant_error_method: an error function to optimize the parameters' selection accordingly.
53
+ node: The node for which the quantization error is computed (used only with HMSE error method).
54
+ hessian_info_service: HessianInfoService object for retrieving Hessian-based scores (used only with HMSE error method).
55
+ num_hessian_samples: Number of samples to approximate Hessian-based scores on (used only with HMSE error method).
48
56
 
49
57
  Returns:
50
58
  Power of two threshold to quantize the tensor in a power of 2 manner.
@@ -57,8 +65,10 @@ def power_of_two_selection_tensor(tensor_data: np.ndarray,
57
65
  signed = True # weights are always signed
58
66
  axis = -1 if per_channel else None
59
67
  error_function = get_threshold_selection_tensor_error_function(QuantizationMethod.POWER_OF_TWO,
60
- quant_error_method, p, axis=axis, norm=False, n_bits=n_bits,
61
- signed=signed)
68
+ quant_error_method, p, axis=axis, norm=False,
69
+ n_bits=n_bits, signed=signed, node=node,
70
+ hessian_info_service=hessian_info_service,
71
+ num_hessian_samples=num_hessian_samples)
62
72
  threshold = qparams_selection_tensor_search(error_function,
63
73
  tensor_data,
64
74
  n_bits,
@@ -12,10 +12,15 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
  # ==============================================================================
15
+ import copy
16
+
15
17
  from tqdm import tqdm
16
18
  from typing import List
17
19
 
20
+ from model_compression_toolkit.constants import NUM_QPARAM_HESSIAN_SAMPLES
21
+ from model_compression_toolkit.core import QuantizationErrorMethod
18
22
  from model_compression_toolkit.core.common import Graph, BaseNode
23
+ from model_compression_toolkit.core.common.hessian import HessianInfoService
19
24
  from model_compression_toolkit.core.common.quantization.quantization_params_generation.qparams_activations_computation \
20
25
  import get_activations_qparams
21
26
  from model_compression_toolkit.core.common.quantization.quantization_params_generation.qparams_weights_computation import \
@@ -25,7 +30,9 @@ from model_compression_toolkit.logger import Logger
25
30
 
26
31
  def calculate_quantization_params(graph: Graph,
27
32
  nodes: List[BaseNode] = [],
28
- specific_nodes: bool = False):
33
+ specific_nodes: bool = False,
34
+ hessian_info_service: HessianInfoService = None,
35
+ num_hessian_samples: int = NUM_QPARAM_HESSIAN_SAMPLES):
29
36
  """
30
37
  For a graph, go over its nodes, compute quantization params (for both weights and activations according
31
38
  to the given framework info), and create and attach a NodeQuantizationConfig to each node (containing the
@@ -39,6 +46,8 @@ def calculate_quantization_params(graph: Graph,
39
46
  graph: Graph to compute its nodes' thresholds.
40
47
  nodes: List of nodes to compute their thresholds instead of computing it for all nodes in the graph.
41
48
  specific_nodes: Flag to compute thresholds for only specific nodes.
49
+ hessian_info_service: HessianInfoService object for retrieving Hessian-based scores (used only with HMSE error method).
50
+ num_hessian_samples: Number of samples to approximate Hessian-based scores on (used only with HMSE error method).
42
51
 
43
52
  """
44
53
 
@@ -60,10 +69,28 @@ def calculate_quantization_params(graph: Graph,
60
69
  output_channels_axis = channels_axis[0]
61
70
  else:
62
71
  output_channels_axis = None
72
+
73
+ mod_attr_cfg = attr_cfg
74
+
75
+ if attr_cfg.weights_error_method == QuantizationErrorMethod.HMSE:
76
+ kernel_attr_name = graph.fw_info.get_kernel_op_attributes(n.type)
77
+ if len(kernel_attr_name) > 0:
78
+ kernel_attr_name = kernel_attr_name[0]
79
+
80
+ if kernel_attr_name is None or kernel_attr_name not in attr:
81
+ Logger.warning(f"The HMSE error method for parameters selection is only supported for "
82
+ f"kernel weights attributes. Running parameters selection for attribute "
83
+ f"'{attr}' in node '{n.name}' with the default MSE error method instead.")
84
+ mod_attr_cfg = copy.deepcopy(attr_cfg)
85
+ mod_attr_cfg.weights_error_method = QuantizationErrorMethod.MSE
86
+
63
87
  weights_params = get_weights_qparams(n.get_weights_by_keys(attr),
64
88
  candidate_qc.weights_quantization_cfg,
65
- attr_cfg,
66
- output_channels_axis)
89
+ mod_attr_cfg,
90
+ output_channels_axis,
91
+ node=n,
92
+ hessian_info_service=hessian_info_service,
93
+ num_hessian_samples=num_hessian_samples)
67
94
  attr_cfg.set_weights_quantization_param(weights_params)
68
95
 
69
96
  if n.is_activation_quantization_enabled():
@@ -12,11 +12,12 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
  # ==============================================================================
15
- from typing import Dict, Any, Tuple
15
+ from typing import Dict, Any
16
16
 
17
17
  import numpy as np
18
18
 
19
- from model_compression_toolkit.logger import Logger
19
+ from model_compression_toolkit.constants import NUM_QPARAM_HESSIAN_SAMPLES
20
+ from model_compression_toolkit.core.common.hessian import HessianInfoService
20
21
  from model_compression_toolkit.defaultdict import DefaultDict
21
22
  from model_compression_toolkit.core.common.framework_info import FrameworkInfo
22
23
  from model_compression_toolkit.core.common.quantization.node_quantization_config import NodeWeightsQuantizationConfig, \
@@ -27,31 +28,40 @@ from model_compression_toolkit.core.common.quantization.node_quantization_config
27
28
  dummy_channel_mapping = DefaultDict(default_value=(None, None))
28
29
 
29
30
 
30
- def get_weights_qparams(kernel: np.ndarray,
31
+ def get_weights_qparams(weights_attr_values: np.ndarray,
31
32
  weights_quant_config: NodeWeightsQuantizationConfig,
32
33
  attr_quant_config: WeightsAttrQuantizationConfig,
33
- output_channels_axis: int) -> Dict[Any, Any]:
34
+ output_channels_axis: int,
35
+ node=None,
36
+ hessian_info_service: HessianInfoService = None,
37
+ num_hessian_samples: int = NUM_QPARAM_HESSIAN_SAMPLES) -> Dict[Any, Any]:
34
38
  """
35
39
  Compute thresholds to quantize a kernel according to a NodeWeightsQuantizationConfig
36
40
  instance.
37
41
 
38
42
  Args:
39
- kernel: Kernel to compute the quantization thresholds to.
43
+ weights_attr_values: Weights attribute parameter to compute the quantization thresholds for.
40
44
  weights_quant_config: Weights quantization configuration to define how the thresholds are computed.
41
45
  attr_quant_config: A specific weights attribute quantization configuration to get its params.
42
46
  output_channels_axis: Index of the kernel output channels dimension.
47
+ node: The node for which the quantization error is computed (used only with HMSE error method).
48
+ hessian_info_service: HessianInfoService object for retrieving Hessian-based scores (used only with HMSE error method).
49
+ num_hessian_samples: Number of samples to approximate Hessian-based scores on (used only with HMSE error method).
43
50
 
44
51
  Returns:
45
52
  A dictionary with the quantization threshold of the kernel.
46
53
  """
47
54
  if attr_quant_config.weights_quantization_params_fn is not None:
48
- weights_params = attr_quant_config.weights_quantization_params_fn(kernel,
55
+ weights_params = attr_quant_config.weights_quantization_params_fn(weights_attr_values,
49
56
  p=attr_quant_config.l_p_value,
50
57
  n_bits=attr_quant_config.weights_n_bits,
51
58
  per_channel=attr_quant_config.weights_per_channel_threshold and output_channels_axis is not None,
52
59
  channel_axis=output_channels_axis,
53
60
  min_threshold=weights_quant_config.min_threshold,
54
- quant_error_method=attr_quant_config.weights_error_method)
61
+ quant_error_method=attr_quant_config.weights_error_method,
62
+ node=node,
63
+ hessian_info_service=hessian_info_service,
64
+ num_hessian_samples=num_hessian_samples)
55
65
  else:
56
66
  weights_params = {}
57
67