ai-edge-quantizer-nightly 0.3.0.dev20250724__py3-none-any.whl → 0.3.0.dev20250725__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/tfl_flatbuffer_utils.py +1 -0
- {ai_edge_quantizer_nightly-0.3.0.dev20250724.dist-info → ai_edge_quantizer_nightly-0.3.0.dev20250725.dist-info}/METADATA +1 -1
- {ai_edge_quantizer_nightly-0.3.0.dev20250724.dist-info → ai_edge_quantizer_nightly-0.3.0.dev20250725.dist-info}/RECORD +10 -10
- {ai_edge_quantizer_nightly-0.3.0.dev20250724.dist-info → ai_edge_quantizer_nightly-0.3.0.dev20250725.dist-info}/LICENSE +0 -0
- {ai_edge_quantizer_nightly-0.3.0.dev20250724.dist-info → ai_edge_quantizer_nightly-0.3.0.dev20250725.dist-info}/WHEEL +0 -0
- {ai_edge_quantizer_nightly-0.3.0.dev20250724.dist-info → ai_edge_quantizer_nightly-0.3.0.dev20250725.dist-info}/top_level.txt +0 -0
@@ -117,6 +117,7 @@ MIN_MAX_OP_NAME_MATERIALIZE_FUNC_DICT = {
|
|
117
117
|
_TFLOpName.PACK: common_quantize.materialize_pack,
|
118
118
|
_TFLOpName.UNPACK: common_quantize.materialize_unpack,
|
119
119
|
_TFLOpName.DIV: common_quantize.materialize_div,
|
120
|
+
_TFLOpName.BROADCAST_TO: common_quantize.materialize_broadcast_to,
|
120
121
|
}
|
121
122
|
for op_name, materialize_func in MIN_MAX_OP_NAME_MATERIALIZE_FUNC_DICT.items():
|
122
123
|
register_quantized_op(
|
@@ -260,6 +261,7 @@ _OCTAV_OP_NAME_MATERIALIZE_FUNC_DICT = immutabledict({
|
|
260
261
|
_TFLOpName.PACK: common_quantize.materialize_pack,
|
261
262
|
_TFLOpName.UNPACK: common_quantize.materialize_unpack,
|
262
263
|
_TFLOpName.DIV: common_quantize.materialize_div,
|
264
|
+
_TFLOpName.BROADCAST_TO: common_quantize.materialize_broadcast_to,
|
263
265
|
})
|
264
266
|
|
265
267
|
for op_name, materialize_func in _OCTAV_OP_NAME_MATERIALIZE_FUNC_DICT.items():
|
@@ -809,6 +809,23 @@ def materialize_div(
|
|
809
809
|
)
|
810
810
|
|
811
811
|
|
812
|
+
def materialize_broadcast_to(
|
813
|
+
get_tensor_quant_params_fn: qtyping.GetTensorQuantParamsFuncSignature,
|
814
|
+
op_info: qtyping.OpInfo,
|
815
|
+
graph_info: qtyping.GraphInfo,
|
816
|
+
tensor_name_to_qsv: dict[str, Any],
|
817
|
+
) -> list[qtyping.TensorTransformationParams]:
|
818
|
+
"""Materialize tensors in tfl.broadcast_to."""
|
819
|
+
return common_utils.materialize_standard_op(
|
820
|
+
op_info,
|
821
|
+
graph_info,
|
822
|
+
tensor_name_to_qsv,
|
823
|
+
get_tensor_quant_params_fn,
|
824
|
+
constraint=_OpQuantConstraint.SAME_AS_INPUT_SCALE,
|
825
|
+
inputs_to_ignore=[1], # Shape tensor does not need to be quantized.
|
826
|
+
)
|
827
|
+
|
828
|
+
|
812
829
|
def _get_tensor_shape_for_blockwise(
|
813
830
|
tensor_shape: Sequence[int], quantized_dim: int, block_size: int
|
814
831
|
) -> list[int]:
|
@@ -190,7 +190,8 @@ DEFAULT_JSON_POLICY = """
|
|
190
190
|
"GATHER_ND",
|
191
191
|
"PACK",
|
192
192
|
"UNPACK",
|
193
|
-
"DIV"
|
193
|
+
"DIV",
|
194
|
+
"BROADCAST_TO"
|
194
195
|
],
|
195
196
|
"static_wi8_ai8": [
|
196
197
|
"ADD",
|
@@ -229,7 +230,8 @@ DEFAULT_JSON_POLICY = """
|
|
229
230
|
"GATHER_ND",
|
230
231
|
"PACK",
|
231
232
|
"UNPACK",
|
232
|
-
"DIV"
|
233
|
+
"DIV",
|
234
|
+
"BROADCAST_TO"
|
233
235
|
],
|
234
236
|
"static_wi4_ai8": ["FULLY_CONNECTED", "CONV_2D", "INPUT", "OUTPUT", "EMBEDDING_LOOKUP"],
|
235
237
|
"static_wi4_ai16": ["FULLY_CONNECTED", "CONV_2D", "INPUT", "OUTPUT", "EMBEDDING_LOOKUP"],
|
ai_edge_quantizer/qtyping.py
CHANGED
@@ -64,6 +64,7 @@ TFL_OP_NAME_TO_CODE = immutabledict.immutabledict({
|
|
64
64
|
_TFLOpName.PACK: schema.BuiltinOperator.PACK,
|
65
65
|
_TFLOpName.UNPACK: schema.BuiltinOperator.UNPACK,
|
66
66
|
_TFLOpName.DIV: schema.BuiltinOperator.DIV,
|
67
|
+
_TFLOpName.BROADCAST_TO: schema.BuiltinOperator.BROADCAST_TO,
|
67
68
|
})
|
68
69
|
|
69
70
|
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.3.0.
|
3
|
+
Version: 0.3.0.dev20250725
|
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=_m0LZvZkJ1Yntsoc-G--KUIWIE3ojSdpgRuoB5zTNfw,12822
|
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=ejKc5YC7id8J1Ll9HAYCzMnKzxd0FUENSD06zkSSV0c,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=ntINf9s_CMVsrJRxpi9boP8lKK6omqO6cQaLKoOpOvo,11410
|
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=1XCcdbTzNutOc8CoImk3DPIikmS93K-5E1AA9IE_i2g,16686
|
16
16
|
ai_edge_quantizer/quantizer.py,sha256=g3DMqFMrMpt9jQttCE0WcdNbMtk0JZnmN5MmCHrNdyM,13202
|
17
17
|
ai_edge_quantizer/quantizer_test.py,sha256=K_HBA56JkFI3HL8VLWCqGEfC0ISh5ldMKoNyBdGRAJg,20368
|
18
18
|
ai_edge_quantizer/recipe.py,sha256=FR0uJceumZrnle2VRSOQZ1uXup4S1cTYKRH-N53mWRo,2919
|
@@ -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=onqXt1Tng0bVTSdKod7fLci9bdXiiZwh8vQIg3ipm9c,32804
|
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,14 +62,14 @@ ai_edge_quantizer/utils/__init__.py,sha256=lpq1g2ayg3lCPLy79t2VicYcnGKw64FfYIj1V
|
|
62
62
|
ai_edge_quantizer/utils/calibration_utils.py,sha256=e3dG7Nm94Ix0hkTWTWPUhEG6a8QR_cAM3PSwblfJV5g,15106
|
63
63
|
ai_edge_quantizer/utils/calibration_utils_test.py,sha256=4BlksXl7b4yptL8xPR67hmJCnjhN9V10a2PunzfHrUE,9372
|
64
64
|
ai_edge_quantizer/utils/test_utils.py,sha256=spqUmSNciOKPQHCBkHE7Zo34eMFq_BfBCAnMT3jAulU,8615
|
65
|
-
ai_edge_quantizer/utils/tfl_flatbuffer_utils.py,sha256=
|
65
|
+
ai_edge_quantizer/utils/tfl_flatbuffer_utils.py,sha256=EVbj8wtZNywuFNxLvXBqxDVwFS_QX3V_q8TuZCVJMUI,11108
|
66
66
|
ai_edge_quantizer/utils/tfl_flatbuffer_utils_test.py,sha256=K1SbK8q92qYVtiVj0I0GtugsPTkpIpEKv9zakvFV_Sc,8555
|
67
67
|
ai_edge_quantizer/utils/tfl_interpreter_utils.py,sha256=SKSu1nqhGGzVei_DxmzXK-bbOE7G1vKnPDc5skce-yY,14322
|
68
68
|
ai_edge_quantizer/utils/tfl_interpreter_utils_test.py,sha256=6fjkM-rycZ95L4yfvlr0TN6RlrhfPzxNUYrZaYO_F0A,12013
|
69
69
|
ai_edge_quantizer/utils/validation_utils.py,sha256=oYw33Sg547AqtGw-choPUJmp9SAKkV46J_ddqSsum2Q,3950
|
70
70
|
ai_edge_quantizer/utils/validation_utils_test.py,sha256=V_qNDikPD4OPB-siOLQCWNVWTAu87h2IgNYt7teFd-o,2934
|
71
|
-
ai_edge_quantizer_nightly-0.3.0.
|
72
|
-
ai_edge_quantizer_nightly-0.3.0.
|
73
|
-
ai_edge_quantizer_nightly-0.3.0.
|
74
|
-
ai_edge_quantizer_nightly-0.3.0.
|
75
|
-
ai_edge_quantizer_nightly-0.3.0.
|
71
|
+
ai_edge_quantizer_nightly-0.3.0.dev20250725.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
72
|
+
ai_edge_quantizer_nightly-0.3.0.dev20250725.dist-info/METADATA,sha256=twgxIe5unlBMZeDiKWldv1SHXyASfppOy7aXVwmf0VM,1528
|
73
|
+
ai_edge_quantizer_nightly-0.3.0.dev20250725.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
|
74
|
+
ai_edge_quantizer_nightly-0.3.0.dev20250725.dist-info/top_level.txt,sha256=8QTfPnFXNVUhScFLaa-NWZMFWMn72M50DVPubpwWB1g,18
|
75
|
+
ai_edge_quantizer_nightly-0.3.0.dev20250725.dist-info/RECORD,,
|
File without changes
|
File without changes
|