mct-nightly 2.3.0.20250401.618__tar.gz → 2.3.0.20250403.518__tar.gz

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