mct-nightly 2.2.0.20241231.516__py3-none-any.whl → 2.2.0.20250102.111338__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.
- {mct_nightly-2.2.0.20241231.516.dist-info → mct_nightly-2.2.0.20250102.111338.dist-info}/METADATA +8 -11
- {mct_nightly-2.2.0.20241231.516.dist-info → mct_nightly-2.2.0.20250102.111338.dist-info}/RECORD +17 -17
- {mct_nightly-2.2.0.20241231.516.dist-info → mct_nightly-2.2.0.20250102.111338.dist-info}/WHEEL +1 -1
- model_compression_toolkit/__init__.py +1 -1
- model_compression_toolkit/target_platform_capabilities/schema/v1.py +308 -173
- model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/tp_model.py +22 -22
- model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_lut/tp_model.py +22 -22
- model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_pot/tp_model.py +22 -22
- model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2/tp_model.py +21 -21
- model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2_lut/tp_model.py +22 -22
- model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v3/tp_model.py +25 -25
- model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v3_lut/tp_model.py +23 -23
- model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v4/tp_model.py +46 -42
- model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/tp_model.py +10 -10
- model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/tp_model.py +49 -46
- {mct_nightly-2.2.0.20241231.516.dist-info → mct_nightly-2.2.0.20250102.111338.dist-info}/LICENSE.md +0 -0
- {mct_nightly-2.2.0.20241231.516.dist-info → mct_nightly-2.2.0.20250102.111338.dist-info}/top_level.txt +0 -0
@@ -179,9 +179,9 @@ def generate_tp_model(default_config: OpQuantizationConfig,
|
|
179
179
|
# of possible configurations to consider when quantizing a set of operations (in mixed-precision, for example).
|
180
180
|
# If the QuantizationConfigOptions contains only one configuration,
|
181
181
|
# this configuration will be used for the operation quantization:
|
182
|
-
default_configuration_options = schema.QuantizationConfigOptions(tuple([default_config]))
|
182
|
+
default_configuration_options = schema.QuantizationConfigOptions(quantization_configurations=tuple([default_config]))
|
183
183
|
default_config_input16 = default_config.clone_and_edit(supported_input_activation_n_bits=(8, 16))
|
184
|
-
default_config_options_16bit = schema.QuantizationConfigOptions(tuple([default_config_input16,
|
184
|
+
default_config_options_16bit = schema.QuantizationConfigOptions(quantization_configurations=tuple([default_config_input16,
|
185
185
|
default_config_input16.clone_and_edit(
|
186
186
|
activation_n_bits=16,
|
187
187
|
signedness=Signedness.SIGNED)]),
|
@@ -190,7 +190,8 @@ def generate_tp_model(default_config: OpQuantizationConfig,
|
|
190
190
|
qpreseving_config = default_config.clone_and_edit(enable_activation_quantization=False,
|
191
191
|
quantization_preserving=True,
|
192
192
|
supported_input_activation_n_bits=(8, 16))
|
193
|
-
|
193
|
+
|
194
|
+
qpreseving_config_options = schema.QuantizationConfigOptions(quantization_configurations=tuple([qpreseving_config,
|
194
195
|
qpreseving_config.clone_and_edit(
|
195
196
|
activation_n_bits=16,
|
196
197
|
signedness=Signedness.SIGNED)]),
|
@@ -205,7 +206,7 @@ def generate_tp_model(default_config: OpQuantizationConfig,
|
|
205
206
|
default_weight_attr_config=default_config.default_weight_attr_config.clone_and_edit(
|
206
207
|
enable_weights_quantization=True, weights_per_channel_threshold=True,
|
207
208
|
weights_quantization_method=tp.QuantizationMethod.POWER_OF_TWO))
|
208
|
-
const_configuration_options = schema.QuantizationConfigOptions(tuple([const_config]))
|
209
|
+
const_configuration_options = schema.QuantizationConfigOptions(quantization_configurations=tuple([const_config]))
|
209
210
|
|
210
211
|
# 16 bits inputs and outputs. Currently, only defined for consts since they are used in operators that
|
211
212
|
# support 16 bit as input and output.
|
@@ -213,9 +214,10 @@ def generate_tp_model(default_config: OpQuantizationConfig,
|
|
213
214
|
supported_input_activation_n_bits=(8, 16))
|
214
215
|
const_config_input16_output16 = const_config_input16.clone_and_edit(
|
215
216
|
activation_n_bits=16, signedness=Signedness.SIGNED)
|
216
|
-
const_configuration_options_inout16 = schema.QuantizationConfigOptions(
|
217
|
-
|
218
|
-
|
217
|
+
const_configuration_options_inout16 = schema.QuantizationConfigOptions(
|
218
|
+
quantization_configurations=tuple([const_config_input16_output16,
|
219
|
+
const_config_input16]),
|
220
|
+
base_config=const_config_input16)
|
219
221
|
|
220
222
|
const_config_input16_per_tensor = const_config.clone_and_edit(
|
221
223
|
supported_input_activation_n_bits=(8, 16),
|
@@ -225,7 +227,7 @@ def generate_tp_model(default_config: OpQuantizationConfig,
|
|
225
227
|
)
|
226
228
|
const_config_input16_output16_per_tensor = const_config_input16_per_tensor.clone_and_edit(
|
227
229
|
activation_n_bits=16, signedness=Signedness.SIGNED)
|
228
|
-
const_configuration_options_inout16_per_tensor = schema.QuantizationConfigOptions(tuple(
|
230
|
+
const_configuration_options_inout16_per_tensor = schema.QuantizationConfigOptions(quantization_configurations=tuple(
|
229
231
|
[const_config_input16_output16_per_tensor,
|
230
232
|
const_config_input16_per_tensor]),
|
231
233
|
base_config=const_config_input16_per_tensor)
|
@@ -234,13 +236,13 @@ def generate_tp_model(default_config: OpQuantizationConfig,
|
|
234
236
|
quantization_preserving=True,
|
235
237
|
default_weight_attr_config=const_config.default_weight_attr_config.clone_and_edit(
|
236
238
|
weights_per_channel_threshold=False))
|
237
|
-
qpreserving_const_config_options = schema.QuantizationConfigOptions(tuple([qpreserving_const_config]))
|
239
|
+
qpreserving_const_config_options = schema.QuantizationConfigOptions(quantization_configurations=tuple([qpreserving_const_config]))
|
238
240
|
|
239
241
|
mp_cfg_list_16bit = [mp_cfg.clone_and_edit(activation_n_bits=16, signedness=Signedness.SIGNED)
|
240
242
|
for mp_cfg in mixed_precision_cfg_list]
|
241
243
|
|
242
244
|
# Create Mixed-Precision quantization configuration options from the given list of OpQuantizationConfig objects
|
243
|
-
mixed_precision_configuration_options = schema.QuantizationConfigOptions(tuple(
|
245
|
+
mixed_precision_configuration_options = schema.QuantizationConfigOptions(quantization_configurations=tuple(
|
244
246
|
mixed_precision_cfg_list + mp_cfg_list_16bit),
|
245
247
|
base_config=base_config)
|
246
248
|
|
@@ -252,70 +254,72 @@ def generate_tp_model(default_config: OpQuantizationConfig,
|
|
252
254
|
operator_set = []
|
253
255
|
fusing_patterns = []
|
254
256
|
# May suit for operations like: Dropout, Reshape, etc.
|
255
|
-
operator_set.append(schema.OperatorsSet(OPSET_NO_QUANTIZATION,
|
256
|
-
default_configuration_options.clone_and_edit(
|
257
|
+
operator_set.append(schema.OperatorsSet(name=OPSET_NO_QUANTIZATION,
|
258
|
+
qc_options=default_configuration_options.clone_and_edit(
|
257
259
|
enable_activation_quantization=False)
|
258
260
|
.clone_and_edit_weight_attribute(enable_weights_quantization=False)))
|
259
|
-
operator_set.append(schema.OperatorsSet(OPSET_QUANTIZATION_PRESERVING,
|
260
|
-
default_configuration_options.clone_and_edit(
|
261
|
+
operator_set.append(schema.OperatorsSet(name=OPSET_QUANTIZATION_PRESERVING,
|
262
|
+
qc_options=default_configuration_options.clone_and_edit(
|
261
263
|
enable_activation_quantization=False,
|
262
264
|
quantization_preserving=True)
|
263
265
|
.clone_and_edit_weight_attribute(enable_weights_quantization=False)))
|
264
266
|
operator_set.append(
|
265
|
-
schema.OperatorsSet(OPSET_DIMENSION_MANIPULATION_OPS_WITH_WEIGHTS,
|
266
|
-
|
267
|
-
|
267
|
+
schema.OperatorsSet(name=OPSET_DIMENSION_MANIPULATION_OPS_WITH_WEIGHTS,
|
268
|
+
qc_options=qpreserving_const_config_options))
|
269
|
+
operator_set.append(schema.OperatorsSet(name=OPSET_DIMENSION_MANIPULATION_OPS,
|
270
|
+
qc_options=default_configuration_options.clone_and_edit(
|
268
271
|
enable_activation_quantization=False,
|
269
272
|
quantization_preserving=True,
|
270
273
|
supported_input_activation_n_bits=(8, 16))
|
271
274
|
.clone_and_edit_weight_attribute(enable_weights_quantization=False)))
|
272
|
-
|
273
|
-
operator_set.append(schema.OperatorsSet(
|
275
|
+
|
276
|
+
operator_set.append(schema.OperatorsSet(name=OPSET_SPLIT_OPS, qc_options=qpreseving_config_options))
|
277
|
+
operator_set.append(schema.OperatorsSet(name=OPSET_MERGE_OPS, qc_options=const_configuration_options_inout16_per_tensor))
|
274
278
|
|
275
279
|
# Define operator sets that use mixed_precision_configuration_options:
|
276
|
-
conv = schema.OperatorsSet(OPSET_CONV, mixed_precision_configuration_options)
|
277
|
-
fc = schema.OperatorsSet(OPSET_FULLY_CONNECTED, mixed_precision_configuration_options)
|
280
|
+
conv = schema.OperatorsSet(name=OPSET_CONV, qc_options=mixed_precision_configuration_options)
|
281
|
+
fc = schema.OperatorsSet(name=OPSET_FULLY_CONNECTED, qc_options=mixed_precision_configuration_options)
|
278
282
|
|
279
|
-
operator_set.append(schema.OperatorsSet(OPSET_BATCH_NORM, default_config_options_16bit))
|
283
|
+
operator_set.append(schema.OperatorsSet(name=OPSET_BATCH_NORM, qc_options=default_config_options_16bit))
|
280
284
|
|
281
285
|
# Note: Operations sets without quantization configuration are useful for creating fusing patterns
|
282
|
-
any_relu = schema.OperatorsSet(OPSET_ANY_RELU, default_config_options_16bit)
|
283
|
-
add = schema.OperatorsSet(OPSET_ADD, const_configuration_options_inout16)
|
284
|
-
sub = schema.OperatorsSet(OPSET_SUB, const_configuration_options_inout16)
|
285
|
-
mul = schema.OperatorsSet(OPSET_MUL, const_configuration_options_inout16)
|
286
|
-
div = schema.OperatorsSet(OPSET_DIV, const_configuration_options)
|
287
|
-
min_max = schema.OperatorsSet(OPSET_MIN_MAX, const_configuration_options_inout16)
|
288
|
-
prelu = schema.OperatorsSet(OPSET_PRELU, default_config_options_16bit)
|
289
|
-
swish = schema.OperatorsSet(OPSET_SWISH, default_config_options_16bit)
|
290
|
-
sigmoid = schema.OperatorsSet(OPSET_SIGMOID, default_config_options_16bit)
|
291
|
-
tanh = schema.OperatorsSet(OPSET_TANH, default_config_options_16bit)
|
292
|
-
gelu = schema.OperatorsSet(OPSET_GELU, default_config_options_16bit)
|
293
|
-
hardsigmoid = schema.OperatorsSet(OPSET_HARDSIGMOID, default_config_options_16bit)
|
294
|
-
hardswish = schema.OperatorsSet(OPSET_HARDSWISH, default_config_options_16bit)
|
286
|
+
any_relu = schema.OperatorsSet(name=OPSET_ANY_RELU, qc_options=default_config_options_16bit)
|
287
|
+
add = schema.OperatorsSet(name=OPSET_ADD, qc_options=const_configuration_options_inout16)
|
288
|
+
sub = schema.OperatorsSet(name=OPSET_SUB, qc_options=const_configuration_options_inout16)
|
289
|
+
mul = schema.OperatorsSet(name=OPSET_MUL, qc_options=const_configuration_options_inout16)
|
290
|
+
div = schema.OperatorsSet(name=OPSET_DIV, qc_options=const_configuration_options)
|
291
|
+
min_max = schema.OperatorsSet(name=OPSET_MIN_MAX, qc_options=const_configuration_options_inout16)
|
292
|
+
prelu = schema.OperatorsSet(name=OPSET_PRELU, qc_options=default_config_options_16bit)
|
293
|
+
swish = schema.OperatorsSet(name=OPSET_SWISH, qc_options=default_config_options_16bit)
|
294
|
+
sigmoid = schema.OperatorsSet(name=OPSET_SIGMOID, qc_options=default_config_options_16bit)
|
295
|
+
tanh = schema.OperatorsSet(name=OPSET_TANH, qc_options=default_config_options_16bit)
|
296
|
+
gelu = schema.OperatorsSet(name=OPSET_GELU, qc_options=default_config_options_16bit)
|
297
|
+
hardsigmoid = schema.OperatorsSet(name=OPSET_HARDSIGMOID, qc_options=default_config_options_16bit)
|
298
|
+
hardswish = schema.OperatorsSet(name=OPSET_HARDSWISH, qc_options=default_config_options_16bit)
|
295
299
|
|
296
300
|
operator_set.extend(
|
297
301
|
[conv, fc, any_relu, add, sub, mul, div, prelu, swish, sigmoid, tanh, min_max, gelu, hardsigmoid, hardswish])
|
298
302
|
# Combine multiple operators into a single operator to avoid quantization between
|
299
303
|
# them. To do this we define fusing patterns using the OperatorsSets that were created.
|
300
304
|
# To group multiple sets with regard to fusing, an OperatorSetConcat can be created
|
301
|
-
activations_after_conv_to_fuse = schema.OperatorSetConcat([any_relu, swish, prelu, sigmoid,
|
305
|
+
activations_after_conv_to_fuse = schema.OperatorSetConcat(operators_set=[any_relu, swish, prelu, sigmoid,
|
302
306
|
tanh, gelu, hardswish, hardsigmoid])
|
303
|
-
activations_after_fc_to_fuse = schema.OperatorSetConcat([any_relu, swish, sigmoid, tanh, gelu,
|
307
|
+
activations_after_fc_to_fuse = schema.OperatorSetConcat(operators_set=[any_relu, swish, sigmoid, tanh, gelu,
|
304
308
|
hardswish, hardsigmoid])
|
305
|
-
any_binary = schema.OperatorSetConcat([add, sub, mul, div])
|
309
|
+
any_binary = schema.OperatorSetConcat(operators_set=[add, sub, mul, div])
|
306
310
|
|
307
311
|
# ------------------- #
|
308
312
|
# Fusions
|
309
313
|
# ------------------- #
|
310
|
-
fusing_patterns.append(schema.Fusing((conv, activations_after_conv_to_fuse)))
|
311
|
-
fusing_patterns.append(schema.Fusing((fc, activations_after_fc_to_fuse)))
|
312
|
-
fusing_patterns.append(schema.Fusing((any_binary, any_relu)))
|
314
|
+
fusing_patterns.append(schema.Fusing(operator_groups=(conv, activations_after_conv_to_fuse)))
|
315
|
+
fusing_patterns.append(schema.Fusing(operator_groups=(fc, activations_after_fc_to_fuse)))
|
316
|
+
fusing_patterns.append(schema.Fusing(operator_groups=(any_binary, any_relu)))
|
313
317
|
|
314
318
|
# Create a TargetPlatformModel and set its default quantization config.
|
315
319
|
# This default configuration will be used for all operations
|
316
320
|
# unless specified otherwise (see OperatorsSet, for example):
|
317
321
|
generated_tpm = schema.TargetPlatformModel(
|
318
|
-
default_configuration_options,
|
322
|
+
default_qco=default_configuration_options,
|
319
323
|
tpc_minor_version=4,
|
320
324
|
tpc_patch_version=0,
|
321
325
|
tpc_platform_type=IMX500_TP_MODEL,
|
model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/tp_model.py
CHANGED
@@ -139,7 +139,7 @@ def generate_tp_model(default_config: OpQuantizationConfig,
|
|
139
139
|
# of possible configurations to consider when quantizing a set of operations (in mixed-precision, for example).
|
140
140
|
# If the QuantizationConfigOptions contains only one configuration,
|
141
141
|
# this configuration will be used for the operation quantization:
|
142
|
-
default_configuration_options = schema.QuantizationConfigOptions(tuple([default_config]))
|
142
|
+
default_configuration_options = schema.QuantizationConfigOptions(quantization_configurations=tuple([default_config]))
|
143
143
|
|
144
144
|
# Combine operations/modules into a single module.
|
145
145
|
# Pytorch supports the next fusing patterns:
|
@@ -148,24 +148,24 @@ def generate_tp_model(default_config: OpQuantizationConfig,
|
|
148
148
|
operator_set = []
|
149
149
|
fusing_patterns = []
|
150
150
|
|
151
|
-
conv = schema.OperatorsSet("Conv")
|
152
|
-
batchnorm = schema.OperatorsSet("BatchNorm")
|
153
|
-
relu = schema.OperatorsSet("Relu")
|
154
|
-
linear = schema.OperatorsSet("Linear")
|
151
|
+
conv = schema.OperatorsSet(name="Conv")
|
152
|
+
batchnorm = schema.OperatorsSet(name="BatchNorm")
|
153
|
+
relu = schema.OperatorsSet(name="Relu")
|
154
|
+
linear = schema.OperatorsSet(name="Linear")
|
155
155
|
|
156
156
|
operator_set.extend([conv, batchnorm, relu, linear])
|
157
157
|
# ------------------- #
|
158
158
|
# Fusions
|
159
159
|
# ------------------- #
|
160
|
-
fusing_patterns.append(schema.Fusing((conv, batchnorm, relu)))
|
161
|
-
fusing_patterns.append(schema.Fusing((conv, batchnorm)))
|
162
|
-
fusing_patterns.append(schema.Fusing((conv, relu)))
|
163
|
-
fusing_patterns.append(schema.Fusing((linear, relu)))
|
160
|
+
fusing_patterns.append(schema.Fusing(operator_groups=(conv, batchnorm, relu)))
|
161
|
+
fusing_patterns.append(schema.Fusing(operator_groups=(conv, batchnorm)))
|
162
|
+
fusing_patterns.append(schema.Fusing(operator_groups=(conv, relu)))
|
163
|
+
fusing_patterns.append(schema.Fusing(operator_groups=(linear, relu)))
|
164
164
|
# Create a TargetPlatformModel and set its default quantization config.
|
165
165
|
# This default configuration will be used for all operations
|
166
166
|
# unless specified otherwise (see OperatorsSet, for example):
|
167
167
|
generated_tpc = schema.TargetPlatformModel(
|
168
|
-
default_configuration_options,
|
168
|
+
default_qco=default_configuration_options,
|
169
169
|
tpc_minor_version=1,
|
170
170
|
tpc_patch_version=0,
|
171
171
|
tpc_platform_type=QNNPACK_TP_MODEL,
|
@@ -18,7 +18,8 @@ import model_compression_toolkit as mct
|
|
18
18
|
import model_compression_toolkit.target_platform_capabilities.schema.mct_current_schema as schema
|
19
19
|
from model_compression_toolkit.constants import FLOAT_BITWIDTH
|
20
20
|
from model_compression_toolkit.target_platform_capabilities.constants import BIAS_ATTR, KERNEL_ATTR, TFLITE_TP_MODEL
|
21
|
-
from model_compression_toolkit.target_platform_capabilities.schema.mct_current_schema import TargetPlatformModel,
|
21
|
+
from model_compression_toolkit.target_platform_capabilities.schema.mct_current_schema import TargetPlatformModel, \
|
22
|
+
Signedness, \
|
22
23
|
AttributeQuantizationConfig, OpQuantizationConfig
|
23
24
|
|
24
25
|
tp = mct.target_platform
|
@@ -136,7 +137,8 @@ def generate_tp_model(default_config: OpQuantizationConfig,
|
|
136
137
|
# of possible configurations to consider when quantizing a set of operations (in mixed-precision, for example).
|
137
138
|
# If the QuantizationConfigOptions contains only one configuration,
|
138
139
|
# this configuration will be used for the operation quantization:
|
139
|
-
default_configuration_options = schema.QuantizationConfigOptions(
|
140
|
+
default_configuration_options = schema.QuantizationConfigOptions(
|
141
|
+
quantization_configurations=tuple([default_config]))
|
140
142
|
|
141
143
|
# In TFLite, the quantized operator specifications constraint operators quantization
|
142
144
|
# differently. For more details:
|
@@ -144,59 +146,60 @@ def generate_tp_model(default_config: OpQuantizationConfig,
|
|
144
146
|
operator_set = []
|
145
147
|
fusing_patterns = []
|
146
148
|
|
147
|
-
operator_set.append(schema.OperatorsSet("NoQuantization",
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
fc = schema.OperatorsSet("FullyConnected",
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
149
|
+
operator_set.append(schema.OperatorsSet(name="NoQuantization",
|
150
|
+
qc_options=default_configuration_options.clone_and_edit(
|
151
|
+
quantization_preserving=True)))
|
152
|
+
|
153
|
+
fc = schema.OperatorsSet(name="FullyConnected",
|
154
|
+
qc_options=default_configuration_options.clone_and_edit_weight_attribute(
|
155
|
+
weights_per_channel_threshold=False))
|
156
|
+
|
157
|
+
operator_set.append(schema.OperatorsSet(name="L2Normalization",
|
158
|
+
qc_options=default_configuration_options.clone_and_edit(
|
159
|
+
fixed_zero_point=0, fixed_scale=1 / 128)))
|
160
|
+
operator_set.append(schema.OperatorsSet(name="LogSoftmax",
|
161
|
+
qc_options=default_configuration_options.clone_and_edit(
|
162
|
+
fixed_zero_point=127, fixed_scale=16 / 256)))
|
163
|
+
operator_set.append(schema.OperatorsSet(name="Tanh",
|
164
|
+
qc_options=default_configuration_options.clone_and_edit(
|
165
|
+
fixed_zero_point=0, fixed_scale=1 / 128)))
|
166
|
+
operator_set.append(schema.OperatorsSet(name="Softmax",
|
167
|
+
qc_options=default_configuration_options.clone_and_edit(
|
168
|
+
fixed_zero_point=-128, fixed_scale=1 / 256)))
|
169
|
+
operator_set.append(schema.OperatorsSet(name="Logistic",
|
170
|
+
qc_options=default_configuration_options.clone_and_edit(
|
171
|
+
fixed_zero_point=-128, fixed_scale=1 / 256)))
|
172
|
+
|
173
|
+
conv2d = schema.OperatorsSet(name="Conv2d")
|
174
|
+
kernel = schema.OperatorSetConcat(operators_set=[conv2d, fc])
|
175
|
+
|
176
|
+
relu = schema.OperatorsSet(name="Relu")
|
177
|
+
elu = schema.OperatorsSet(name="Elu")
|
178
|
+
activations_to_fuse = schema.OperatorSetConcat(operators_set=[relu, elu])
|
179
|
+
|
180
|
+
batch_norm = schema.OperatorsSet(name="BatchNorm")
|
181
|
+
bias_add = schema.OperatorsSet(name="BiasAdd")
|
182
|
+
add = schema.OperatorsSet(name="Add")
|
183
|
+
squeeze = schema.OperatorsSet(name="Squeeze",
|
184
|
+
qc_options=default_configuration_options.clone_and_edit(
|
185
|
+
quantization_preserving=True))
|
186
|
+
operator_set.extend([fc, conv2d, relu, elu, batch_norm, bias_add, add, squeeze])
|
184
187
|
# ------------------- #
|
185
188
|
# Fusions
|
186
189
|
# ------------------- #
|
187
190
|
# Source: https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/grappler/optimizers/remapper
|
188
|
-
fusing_patterns.append(schema.Fusing((kernel, bias_add)))
|
189
|
-
fusing_patterns.append(schema.Fusing((kernel, bias_add, activations_to_fuse)))
|
190
|
-
fusing_patterns.append(schema.Fusing((conv2d, batch_norm, activations_to_fuse)))
|
191
|
-
fusing_patterns.append(schema.Fusing((conv2d, squeeze, activations_to_fuse)))
|
192
|
-
fusing_patterns.append(schema.Fusing((batch_norm, activations_to_fuse)))
|
193
|
-
fusing_patterns.append(schema.Fusing((batch_norm, add, activations_to_fuse)))
|
191
|
+
fusing_patterns.append(schema.Fusing(operator_groups=(kernel, bias_add)))
|
192
|
+
fusing_patterns.append(schema.Fusing(operator_groups=(kernel, bias_add, activations_to_fuse)))
|
193
|
+
fusing_patterns.append(schema.Fusing(operator_groups=(conv2d, batch_norm, activations_to_fuse)))
|
194
|
+
fusing_patterns.append(schema.Fusing(operator_groups=(conv2d, squeeze, activations_to_fuse)))
|
195
|
+
fusing_patterns.append(schema.Fusing(operator_groups=(batch_norm, activations_to_fuse)))
|
196
|
+
fusing_patterns.append(schema.Fusing(operator_groups=(batch_norm, add, activations_to_fuse)))
|
194
197
|
|
195
198
|
# Create a TargetPlatformModel and set its default quantization config.
|
196
199
|
# This default configuration will be used for all operations
|
197
200
|
# unless specified otherwise (see OperatorsSet, for example):
|
198
201
|
generated_tpc = schema.TargetPlatformModel(
|
199
|
-
default_configuration_options,
|
202
|
+
default_qco=default_configuration_options,
|
200
203
|
tpc_minor_version=1,
|
201
204
|
tpc_patch_version=0,
|
202
205
|
operator_set=tuple(operator_set),
|
{mct_nightly-2.2.0.20241231.516.dist-info → mct_nightly-2.2.0.20250102.111338.dist-info}/LICENSE.md
RENAMED
File without changes
|
File without changes
|