ai-edge-quantizer-nightly 0.4.0.dev20250911__py3-none-any.whl → 0.4.0.dev20250912__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.
- ai_edge_quantizer/algorithm_manager.py +2 -0
- ai_edge_quantizer/algorithms/uniform_quantize/common_quantize.py +17 -0
- ai_edge_quantizer/default_policy.py +4 -2
- ai_edge_quantizer/qtyping.py +1 -0
- ai_edge_quantizer/utils/constrained_ops_utils_test.py +1 -1
- ai_edge_quantizer/utils/tfl_flatbuffer_utils.py +1 -0
- {ai_edge_quantizer_nightly-0.4.0.dev20250911.dist-info → ai_edge_quantizer_nightly-0.4.0.dev20250912.dist-info}/METADATA +1 -1
- {ai_edge_quantizer_nightly-0.4.0.dev20250911.dist-info → ai_edge_quantizer_nightly-0.4.0.dev20250912.dist-info}/RECORD +11 -11
- {ai_edge_quantizer_nightly-0.4.0.dev20250911.dist-info → ai_edge_quantizer_nightly-0.4.0.dev20250912.dist-info}/LICENSE +0 -0
- {ai_edge_quantizer_nightly-0.4.0.dev20250911.dist-info → ai_edge_quantizer_nightly-0.4.0.dev20250912.dist-info}/WHEEL +0 -0
- {ai_edge_quantizer_nightly-0.4.0.dev20250911.dist-info → ai_edge_quantizer_nightly-0.4.0.dev20250912.dist-info}/top_level.txt +0 -0
@@ -124,6 +124,7 @@ MIN_MAX_OP_NAME_MATERIALIZE_FUNC_DICT = {
|
|
124
124
|
_TFLOpName.HARD_SWISH: common_quantize.materialize_hard_swish,
|
125
125
|
_TFLOpName.MAXIMUM: common_quantize.materialize_maximum,
|
126
126
|
_TFLOpName.PADV2: common_quantize.materialize_padv2,
|
127
|
+
_TFLOpName.REDUCE_MIN: common_quantize.materialize_reduce_min,
|
127
128
|
}
|
128
129
|
for op_name, materialize_func in MIN_MAX_OP_NAME_MATERIALIZE_FUNC_DICT.items():
|
129
130
|
register_quantized_op(
|
@@ -274,6 +275,7 @@ _OCTAV_OP_NAME_MATERIALIZE_FUNC_DICT = immutabledict({
|
|
274
275
|
_TFLOpName.HARD_SWISH: common_quantize.materialize_hard_swish,
|
275
276
|
_TFLOpName.MAXIMUM: common_quantize.materialize_maximum,
|
276
277
|
_TFLOpName.PADV2: common_quantize.materialize_padv2,
|
278
|
+
_TFLOpName.REDUCE_MIN: common_quantize.materialize_reduce_min,
|
277
279
|
})
|
278
280
|
|
279
281
|
for op_name, materialize_func in _OCTAV_OP_NAME_MATERIALIZE_FUNC_DICT.items():
|
@@ -940,6 +940,23 @@ def materialize_gather(
|
|
940
940
|
)
|
941
941
|
|
942
942
|
|
943
|
+
def materialize_reduce_min(
|
944
|
+
get_tensor_quant_params_fn: qtyping.GetTensorQuantParamsFuncSignature,
|
945
|
+
op_info: qtyping.OpInfo,
|
946
|
+
graph_info: qtyping.GraphInfo,
|
947
|
+
tensor_name_to_qsv: dict[str, Any],
|
948
|
+
) -> list[qtyping.TensorTransformationParams]:
|
949
|
+
"""Materialize tensors in tfl.reduce_min."""
|
950
|
+
return common_utils.materialize_standard_op(
|
951
|
+
op_info,
|
952
|
+
graph_info,
|
953
|
+
tensor_name_to_qsv,
|
954
|
+
get_tensor_quant_params_fn,
|
955
|
+
constraint=_OpQuantConstraint.SAME_AS_INPUT_SCALE,
|
956
|
+
inputs_to_ignore=[1], # Axis index does not need to be quantized.
|
957
|
+
)
|
958
|
+
|
959
|
+
|
943
960
|
def _get_tensor_shape_for_blockwise(
|
944
961
|
tensor_shape: Sequence[int], quantized_dim: int, block_size: int
|
945
962
|
) -> list[int]:
|
@@ -196,7 +196,8 @@ DEFAULT_JSON_POLICY = """
|
|
196
196
|
"SQRT",
|
197
197
|
"GATHER",
|
198
198
|
"MAXIMUM",
|
199
|
-
"PADV2"
|
199
|
+
"PADV2",
|
200
|
+
"REDUCE_MIN"
|
200
201
|
],
|
201
202
|
"static_wi8_ai8": [
|
202
203
|
"ADD",
|
@@ -242,7 +243,8 @@ DEFAULT_JSON_POLICY = """
|
|
242
243
|
"GATHER",
|
243
244
|
"HARD_SWISH",
|
244
245
|
"MAXIMUM",
|
245
|
-
"PADV2"
|
246
|
+
"PADV2",
|
247
|
+
"REDUCE_MIN"
|
246
248
|
],
|
247
249
|
"static_wi4_ai8": ["FULLY_CONNECTED", "CONV_2D", "INPUT", "OUTPUT", "EMBEDDING_LOOKUP"],
|
248
250
|
"static_wi4_ai16": ["FULLY_CONNECTED", "CONV_2D", "INPUT", "OUTPUT", "EMBEDDING_LOOKUP"],
|
ai_edge_quantizer/qtyping.py
CHANGED
@@ -28,7 +28,7 @@ class ConstrainedOpsUtilsTest(parameterized.TestCase):
|
|
28
28
|
dict(
|
29
29
|
testcase_name="same_as_input_scale",
|
30
30
|
constraint=_OpQuantConstraint.SAME_AS_INPUT_SCALE,
|
31
|
-
expected_num_ops=
|
31
|
+
expected_num_ops=15,
|
32
32
|
),
|
33
33
|
dict(
|
34
34
|
testcase_name="same_as_output_scale",
|
@@ -71,6 +71,7 @@ TFL_OP_NAME_TO_CODE = immutabledict.immutabledict({
|
|
71
71
|
_TFLOpName.HARD_SWISH: schema.BuiltinOperator.HARD_SWISH,
|
72
72
|
_TFLOpName.MAXIMUM: schema.BuiltinOperator.MAXIMUM,
|
73
73
|
_TFLOpName.PADV2: schema.BuiltinOperator.PADV2,
|
74
|
+
_TFLOpName.REDUCE_MIN: schema.BuiltinOperator.REDUCE_MIN,
|
74
75
|
})
|
75
76
|
|
76
77
|
TFL_OP_CODE_TO_NAME = immutabledict.immutabledict(
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: ai-edge-quantizer-nightly
|
3
|
-
Version: 0.4.0.
|
3
|
+
Version: 0.4.0.dev20250912
|
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
|
@@ -1,18 +1,18 @@
|
|
1
1
|
ai_edge_quantizer/__init__.py,sha256=4pFSkukSwahYyzwqia0yPRyz8TnFQfGRthVJhYpMWas,793
|
2
|
-
ai_edge_quantizer/algorithm_manager.py,sha256=
|
2
|
+
ai_edge_quantizer/algorithm_manager.py,sha256=zRDIOmtVdyRfCJdMOi-f3b7LcXiiKUIbMFj005A-HYs,13672
|
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
5
|
ai_edge_quantizer/calibrator.py,sha256=Sms7_AIHPH9G5xFaz5Ef3a5gPhxuIWQI8d2LUM8C96I,12071
|
6
6
|
ai_edge_quantizer/calibrator_test.py,sha256=ZLzIMWB2FSFU4TOatDioYuwp_kLh8iSCefZ5_Q9FU7s,11900
|
7
7
|
ai_edge_quantizer/conftest.py,sha256=SxCz-5LlRD_lQm4hQc4c6IGG7DS8d7IyEWY9gnscPN0,794
|
8
|
-
ai_edge_quantizer/default_policy.py,sha256=
|
8
|
+
ai_edge_quantizer/default_policy.py,sha256=LljWT-fvoEIK-cJLS0c6tKg60C-zGhVT6JtBlzqtoAI,11662
|
9
9
|
ai_edge_quantizer/model_modifier.py,sha256=teGa8I6kGvn6TQY6Xv53YFIc_pQEhNvM9Zb4bvhezyw,7110
|
10
10
|
ai_edge_quantizer/model_modifier_test.py,sha256=cJd04SLOG-fQZZNZPcisoBLx3cLtWEwGqUBbLb-pif4,4751
|
11
11
|
ai_edge_quantizer/model_validator.py,sha256=Hj0_5o-Oa3dSlJ3ryVjRhvsyelHNyek1GrtG9buMczg,13153
|
12
12
|
ai_edge_quantizer/model_validator_test.py,sha256=EeqOP_mrZsnZ3rug756s0ryDDqd2KgIDld5Lm_gDuWY,13020
|
13
13
|
ai_edge_quantizer/params_generator.py,sha256=hcgMHJlERZERUyIAEi6AHJcLJ8gsKIBAEojzFFz-tqk,20098
|
14
14
|
ai_edge_quantizer/params_generator_test.py,sha256=RDYoRZDJfEZRtjlTAU2kZ_4t3JHOqEHxfJX9V4ETAhg,40597
|
15
|
-
ai_edge_quantizer/qtyping.py,sha256=
|
15
|
+
ai_edge_quantizer/qtyping.py,sha256=O952DgvdE4YwvWeDk5nIdYssrP8aFT4fgNT2eUbEwJg,16838
|
16
16
|
ai_edge_quantizer/quantizer.py,sha256=ckAEOnnBxuCKZuvlzdChevCKPuE-IeDPHCNtFTWr250,17857
|
17
17
|
ai_edge_quantizer/quantizer_test.py,sha256=m6f4ayyaF3yQb9i4V0aFAbmGw0OKZ2Zam1RoTPh-u24,22917
|
18
18
|
ai_edge_quantizer/recipe.py,sha256=MEkfQ2Sg3KAE9LAORHWcbjYNPg06EUbwc1d-VspQA2U,6461
|
@@ -28,7 +28,7 @@ ai_edge_quantizer/algorithms/nonlinear_quantize/__init__.py,sha256=lpq1g2ayg3lCP
|
|
28
28
|
ai_edge_quantizer/algorithms/nonlinear_quantize/float_casting.py,sha256=Bs9CK7wZAw6jNaZ8xEtbwO2vM34VYXNZSMVWvxJo9nw,9297
|
29
29
|
ai_edge_quantizer/algorithms/nonlinear_quantize/float_casting_test.py,sha256=EqIHGEZ1LgUrTN7zf880RuAzEv3Qy7kgh5ivObJGHSo,22646
|
30
30
|
ai_edge_quantizer/algorithms/uniform_quantize/__init__.py,sha256=lpq1g2ayg3lCPLy79t2VicYcnGKw64FfYIj1V7J-4m8,676
|
31
|
-
ai_edge_quantizer/algorithms/uniform_quantize/common_quantize.py,sha256=
|
31
|
+
ai_edge_quantizer/algorithms/uniform_quantize/common_quantize.py,sha256=7VvH9torbs6O3VZhfsKhr5x1JvdKZ9xrX7IYPBg9Bss,37064
|
32
32
|
ai_edge_quantizer/algorithms/uniform_quantize/common_quantize_test.py,sha256=GGf_n3wIeg3GB_eGsmyNJ0fTcxgpeMMbugTMRONK6TQ,3553
|
33
33
|
ai_edge_quantizer/algorithms/uniform_quantize/dequantized_weight_recovery.py,sha256=BDdn_uBZakfHyzdMJPKadsOqxqyC-s6W2ZzFH99L4fE,8652
|
34
34
|
ai_edge_quantizer/algorithms/uniform_quantize/dequantized_weight_recovery_test.py,sha256=sT5eX5TLZEHTtPfnSkCPDlS0sQxlTFWbCsbvOuj--yY,8889
|
@@ -62,16 +62,16 @@ ai_edge_quantizer/utils/__init__.py,sha256=lpq1g2ayg3lCPLy79t2VicYcnGKw64FfYIj1V
|
|
62
62
|
ai_edge_quantizer/utils/calibration_utils.py,sha256=iMf_bSCf-O86MzDt5D9hLKqbTydqLwirluaC6BJ9yHo,11553
|
63
63
|
ai_edge_quantizer/utils/calibration_utils_test.py,sha256=4BlksXl7b4yptL8xPR67hmJCnjhN9V10a2PunzfHrUE,9372
|
64
64
|
ai_edge_quantizer/utils/constrained_ops_utils.py,sha256=EAITCf7Ku_PFZcw3K-wd-8hGbyuRd5W5UtNdGvalwAE,4478
|
65
|
-
ai_edge_quantizer/utils/constrained_ops_utils_test.py,sha256=
|
65
|
+
ai_edge_quantizer/utils/constrained_ops_utils_test.py,sha256=TA6bwVyJP_HlGLJzysMpI_kTsdKeMxZ4RP7HLRU98KY,1756
|
66
66
|
ai_edge_quantizer/utils/test_utils.py,sha256=a4Nk-wbeB09dFjTDZiA0K67d26j5DD0UDH_GIVmVG_4,8685
|
67
|
-
ai_edge_quantizer/utils/tfl_flatbuffer_utils.py,sha256=
|
67
|
+
ai_edge_quantizer/utils/tfl_flatbuffer_utils.py,sha256=tCNv2sY8j8P0WD7u8AO7yDgA5IKOvO6BU1xl3SJ33KU,11832
|
68
68
|
ai_edge_quantizer/utils/tfl_flatbuffer_utils_test.py,sha256=K1SbK8q92qYVtiVj0I0GtugsPTkpIpEKv9zakvFV_Sc,8555
|
69
69
|
ai_edge_quantizer/utils/tfl_interpreter_utils.py,sha256=EoVjI_hplX_Rml3hfRsGmQOihexmizeJqt4SQcET9aA,14925
|
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.4.0.
|
74
|
-
ai_edge_quantizer_nightly-0.4.0.
|
75
|
-
ai_edge_quantizer_nightly-0.4.0.
|
76
|
-
ai_edge_quantizer_nightly-0.4.0.
|
77
|
-
ai_edge_quantizer_nightly-0.4.0.
|
73
|
+
ai_edge_quantizer_nightly-0.4.0.dev20250912.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
74
|
+
ai_edge_quantizer_nightly-0.4.0.dev20250912.dist-info/METADATA,sha256=1EW3IW2eFbh8KX4c_qB-lwuxKHfe5esPQkxNRMH6VXQ,1508
|
75
|
+
ai_edge_quantizer_nightly-0.4.0.dev20250912.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
|
76
|
+
ai_edge_quantizer_nightly-0.4.0.dev20250912.dist-info/top_level.txt,sha256=8QTfPnFXNVUhScFLaa-NWZMFWMn72M50DVPubpwWB1g,18
|
77
|
+
ai_edge_quantizer_nightly-0.4.0.dev20250912.dist-info/RECORD,,
|
File without changes
|
File without changes
|