ai-edge-quantizer-nightly 0.3.0.dev20250529__py3-none-any.whl → 0.3.0.dev20250531__py3-none-any.whl

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.
@@ -435,8 +435,7 @@ def _is_valid_quantization_params(
435
435
  """Checks if the quantization parameters are valid.
436
436
 
437
437
  A valid quantization params requires:
438
- 1. scale and zero point either have the same shape or the zero point is a
439
- scalar.
438
+ 1. scale and zero point have the same shape (TFL Runtime requirement).
440
439
  2. scale and zero point have the same rank as the tensor content (avoid
441
440
  ambiguous broadcasting).
442
441
 
@@ -447,20 +446,17 @@ def _is_valid_quantization_params(
447
446
  Returns:
448
447
  True if the quantization parameters are valid.
449
448
  """
450
- if (
451
- quantization_params.scale.shape != quantization_params.zero_point.shape
452
- and quantization_params.zero_point.size != 1
453
- ):
449
+ if quantization_params.scale.shape != quantization_params.zero_point.shape:
454
450
  raise ValueError(
455
- "scale and zero_point must have the same shape or zero_point must have"
456
- f" only one element. Got {quantization_params.scale.shape} and"
451
+ "scale and zero_point must have the same shape. Got"
452
+ f" {quantization_params.scale.shape} and"
457
453
  f" {quantization_params.zero_point.shape}"
458
454
  )
459
455
 
460
456
  tensor_rank = tensor_data.ndim
461
457
  scale_rank = quantization_params.scale.ndim
462
458
  zero_point_rank = quantization_params.zero_point.ndim
463
- if tensor_rank != scale_rank or (tensor_rank != zero_point_rank):
459
+ if (tensor_rank != scale_rank) or (tensor_rank != zero_point_rank):
464
460
  raise ValueError(
465
461
  f"Ranks of scales ({scale_rank}) and zps"
466
462
  f" ({zero_point_rank}) must be the same as the tensor rank"
@@ -160,9 +160,7 @@ class TensorUtilsTest(parameterized.TestCase):
160
160
  def test_uniform_quantize_wrong_shape(self):
161
161
  tensor = [-3.0, 1.3, 2.4, 16.0]
162
162
 
163
- error_message = (
164
- "Ranks of scales (3) and zps (2) must be the same as the tensor rank"
165
- )
163
+ error_message = "scale and zero_point must have the same shape."
166
164
  with self.assertRaisesWithPredicateMatch(
167
165
  ValueError, lambda err: error_message in str(err)
168
166
  ):
@@ -235,9 +233,7 @@ class TensorUtilsTest(parameterized.TestCase):
235
233
  def test_uniform_dequantize_wrong_shape(self):
236
234
  tensor = [-3.0, 1.3, 2.4, 16.0]
237
235
 
238
- error_message = (
239
- "Ranks of scales (3) and zps (2) must be the same as the tensor rank"
240
- )
236
+ error_message = "scale and zero_point must have the same shape."
241
237
  with self.assertRaisesWithPredicateMatch(
242
238
  ValueError, lambda err: error_message in str(err)
243
239
  ):
@@ -140,10 +140,15 @@ class Calibrator:
140
140
  graph_info = qtyping.GraphInfo(
141
141
  subgraph.tensors, self._flatbuffer_model.buffers
142
142
  )
143
- # Add input/output operators to the subgraph.
144
- subgraph.operators += (
145
- tfl_flatbuffer_utils.get_subgraph_input_output_operators(subgraph)
146
- )
143
+ # Add input/output operators if they are not in the subgraph.
144
+ if not any(
145
+ isinstance(op, qtyping.IOOperator) for op in subgraph.operators
146
+ ):
147
+ subgraph.operators += (
148
+ tfl_flatbuffer_utils.get_subgraph_input_output_operators(
149
+ subgraph
150
+ )
151
+ )
147
152
  for op in subgraph.operators:
148
153
  if isinstance(op, qtyping.IOOperator):
149
154
  op_key = op.op_key
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ai-edge-quantizer-nightly
3
- Version: 0.3.0.dev20250529
3
+ Version: 0.3.0.dev20250531
4
4
  Summary: A quantizer for advanced developers to quantize converted AI Edge models.
5
5
  Home-page: https://github.com/google-ai-edge/ai-edge-quantizer
6
6
  Keywords: On-Device ML,AI,Google,TFLite,Quantization,LLMs,GenAI
@@ -2,7 +2,7 @@ ai_edge_quantizer/__init__.py,sha256=4pFSkukSwahYyzwqia0yPRyz8TnFQfGRthVJhYpMWas
2
2
  ai_edge_quantizer/algorithm_manager.py,sha256=p-wX2ksIV1hbWEQz-uUnbNMVgDJrsIiIOU2ZYX2ZrTM,11726
3
3
  ai_edge_quantizer/algorithm_manager_api.py,sha256=u903TG0s1uIDhJqfeJne3CFl8A93phZrwgV2-hwdcXU,9247
4
4
  ai_edge_quantizer/algorithm_manager_api_test.py,sha256=w6bSONvXkX6bzXAGc0-7b6gNDt9oz9ieq97KP8Sg_JU,7666
5
- ai_edge_quantizer/calibrator.py,sha256=n7AD9j7UScR-CieoI6DQRMeiG_fhLBfSLRiM4460xaM,11895
5
+ ai_edge_quantizer/calibrator.py,sha256=-_jX_KkfIepkQAwxxDrZjvPO1JsoSjHXVy1DPc1iFjM,12068
6
6
  ai_edge_quantizer/calibrator_test.py,sha256=C_oWOaRugPKYX74jF-eRFH-k6nGOdA8I9_uPiocaOuE,11900
7
7
  ai_edge_quantizer/conftest.py,sha256=SxCz-5LlRD_lQm4hQc4c6IGG7DS8d7IyEWY9gnscPN0,794
8
8
  ai_edge_quantizer/default_policy.py,sha256=zNTeiI_eP5-dLL3P_VWIQB3RzXBrb06peJKngLnSSFY,11125
@@ -38,8 +38,8 @@ ai_edge_quantizer/algorithms/uniform_quantize/naive_min_max_quantize.py,sha256=8
38
38
  ai_edge_quantizer/algorithms/uniform_quantize/naive_min_max_quantize_test.py,sha256=zoF_EHjYqsKkuev8wfuutIITEmp_maa70IpJI_Df3ck,7431
39
39
  ai_edge_quantizer/algorithms/uniform_quantize/octav.py,sha256=Umxh4kJyeHddZf-Wd4aXE5MTI1XWFa5KRuM17uYU714,6922
40
40
  ai_edge_quantizer/algorithms/uniform_quantize/octav_test.py,sha256=sha1d99Xk87bI87tgz0g5LeDC-EeE4WMfM5rRC98-m4,9140
41
- ai_edge_quantizer/algorithms/uniform_quantize/uniform_quantize_tensor.py,sha256=3zq2AO_PRYKHuNvHzwg0pVDZT7kcpaMgXx6OEyEl6co,16103
42
- ai_edge_quantizer/algorithms/uniform_quantize/uniform_quantize_tensor_test.py,sha256=JlX3fLHiknGH1osu6gwWEGUizLrEsE6d8iRpzDODmXo,12510
41
+ ai_edge_quantizer/algorithms/uniform_quantize/uniform_quantize_tensor.py,sha256=W2QbXP96xeleAmA7qFwco1iq_bOtArGDK6Qj_g6kNl8,15986
42
+ ai_edge_quantizer/algorithms/uniform_quantize/uniform_quantize_tensor_test.py,sha256=MgG7Qh2_z4I6InBqEEDSVlaR0q48aMz4xqAlxeG2EMk,12436
43
43
  ai_edge_quantizer/algorithms/utils/__init__.py,sha256=lpq1g2ayg3lCPLy79t2VicYcnGKw64FfYIj1V7J-4m8,676
44
44
  ai_edge_quantizer/algorithms/utils/common_utils.py,sha256=UoZxeAQmZk3b3hK51KFwq6XfdbeduXVjdYIxAxlAzB8,34982
45
45
  ai_edge_quantizer/algorithms/utils/common_utils_test.py,sha256=zqapGEfYhjQWe9cNGPLmdbwtEUUYQRhlO_kNe0cXX6E,18104
@@ -70,8 +70,8 @@ ai_edge_quantizer/utils/tfl_interpreter_utils.py,sha256=WoewyiZpaua80oP0tpgyrw5W
70
70
  ai_edge_quantizer/utils/tfl_interpreter_utils_test.py,sha256=6fjkM-rycZ95L4yfvlr0TN6RlrhfPzxNUYrZaYO_F0A,12013
71
71
  ai_edge_quantizer/utils/validation_utils.py,sha256=oYw33Sg547AqtGw-choPUJmp9SAKkV46J_ddqSsum2Q,3950
72
72
  ai_edge_quantizer/utils/validation_utils_test.py,sha256=V_qNDikPD4OPB-siOLQCWNVWTAu87h2IgNYt7teFd-o,2934
73
- ai_edge_quantizer_nightly-0.3.0.dev20250529.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
74
- ai_edge_quantizer_nightly-0.3.0.dev20250529.dist-info/METADATA,sha256=v1MkPGHRpt0KiPfjmaXTYk3pBMu9X3enqLk8OXSCvxA,1528
75
- ai_edge_quantizer_nightly-0.3.0.dev20250529.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
76
- ai_edge_quantizer_nightly-0.3.0.dev20250529.dist-info/top_level.txt,sha256=8QTfPnFXNVUhScFLaa-NWZMFWMn72M50DVPubpwWB1g,18
77
- ai_edge_quantizer_nightly-0.3.0.dev20250529.dist-info/RECORD,,
73
+ ai_edge_quantizer_nightly-0.3.0.dev20250531.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
74
+ ai_edge_quantizer_nightly-0.3.0.dev20250531.dist-info/METADATA,sha256=oIbMZKl5p8y_DFUUnAdEKm2J98Z-kNvfNzCEhZcSzVw,1528
75
+ ai_edge_quantizer_nightly-0.3.0.dev20250531.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
76
+ ai_edge_quantizer_nightly-0.3.0.dev20250531.dist-info/top_level.txt,sha256=8QTfPnFXNVUhScFLaa-NWZMFWMn72M50DVPubpwWB1g,18
77
+ ai_edge_quantizer_nightly-0.3.0.dev20250531.dist-info/RECORD,,