quantization_config.py Source File

quantization_config.py Source File#

Mobilint SDK qb Compiler: quantization_config.py Source File
Mobilint SDK qb Compiler v1.0
MCS002-KR
quantization_config.py
1import numbers
2from typing import Dict, List, Optional
3from typeguard import typechecked
4from . import ConfigABC
5
6
12
13
14class CalibrationConfig(ConfigABC):
15 """
16 @brief Configuration for calibration during quantization.
17
18 @details Defines calibration and quantization parameterization used to derive activation/weight scales and related
19 statistics during quantized compilation.
20 """
21
22 optional = False
23 method_list = ["WChALayer", "WChAMulti", "WChALayerZeropoint", "WChAMultiZeropoint"]
24 output_list = ["Layer", "Ch", "Sigmoid"]
25 mode_list = ["max", "maxPercentile", "histogram"]
26 search_type_list = ["percentile", "mse", "kl"]
27
28 DEFAULTS = {
29 "quantization_method": 1,
30 "quantization_output": 0,
31 "quantization_mode": 1, # maxPercentile is now index 1
32 # maxPercentile config
33 "percentile": 0.9999,
34 "topk_ratio": 0.01,
35 "max_each": 128,
36 "max_total": 65536,
37 # histogram config
38 "hist_percentile": 0.9999,
39 "hist_use_gpu": True,
40 "hist_num_bins": 2048,
41 "hist_num_samples": 1024,
42 "hist_buffer_size": 1024,
43 "hist_min_bin_width": 0.0001,
44 "hist_search_percentile_min": 0.9999,
45 "hist_search_percentile_max": 0.999999,
46 "hist_num_search": 1024,
47 "hist_search_type": 0, # 0=percentile, 1=mse, 2=kl
48 # common
49 "act_scale_min": 0.0005,
50 "weight_scale_min": 1e-6,
51 "min_clip_ratio": -1,
52 "layer_overrides": {"actScaleMin": {"0.0005": []}},
53 }
54
55 py_to_cpp_name = {
56 "quantization_method": "method",
57 "quantization_output": "output",
58 "quantization_mode": "mode",
59 # maxPercentile
60 "percentile": "percentile",
61 "topk_ratio": "topKRatio",
62 "max_each": "maxEach",
63 "max_total": "maxTotal",
64 # histogram
65 "hist_percentile": "percentile",
66 "hist_use_gpu": "useGPU",
67 "hist_num_bins": "numBins",
68 "hist_num_samples": "numSamples",
69 "hist_buffer_size": "bufferSize",
70 "hist_min_bin_width": "minBinWidth",
71 "hist_search_percentile_min": "searchPercentileMin",
72 "hist_search_percentile_max": "searchPercentileMax",
73 "hist_num_search": "numSearch",
74 "hist_search_type": "searchType",
75 # common
76 "act_scale_min": "actScaleMin",
77 "weight_scale_min": "weightScaleMin",
78 "min_clip_ratio": "minclipRatio",
79 }
80
81 min_max_check = {
82 "quantization_method": [0, 3],
83 "quantization_output": [0, 2],
84 "quantization_mode": [0, 2], # 0=max, 1=maxPercentile, 2=histogram
85 # maxPercentile
86 "percentile": [0, 1],
87 "topk_ratio": [0, 1],
88 "max_each": [0, None],
89 "max_total": [0, None],
90 # histogram
91 "hist_percentile": [0, 1],
92 "hist_num_bins": [1, None],
93 "hist_num_samples": [1, None],
94 "hist_buffer_size": [1, None],
95 "hist_min_bin_width": [0, None],
96 "hist_search_percentile_min": [0, 1],
97 "hist_search_percentile_max": [0, 1],
98 "hist_num_search": [1, None],
99 "hist_search_type": [0, 2], # 0=percentile, 1=mse, 2=kl
100 # common
101 "act_scale_min": [0, 1],
102 "weight_scale_min": [0, 1],
103 "min_clip_ratio": [-1, 1],
104 }
105
107 self,
108 quantization_method: int,
109 quantization_output: int,
110 quantization_mode: int,
111 # maxPercentile config
112 percentile: numbers.Number,
113 topk_ratio: numbers.Number,
114 max_each: int,
115 max_total: int,
116 # histogram config
117 hist_percentile: numbers.Number,
118 hist_use_gpu: bool,
119 hist_num_bins: int,
120 hist_num_samples: int,
121 hist_buffer_size: int,
122 hist_min_bin_width: numbers.Number,
123 hist_search_percentile_min: numbers.Number,
124 hist_search_percentile_max: numbers.Number,
125 hist_num_search: int,
126 hist_search_type: int,
127 # common
128 act_scale_min: numbers.Number,
129 weight_scale_min: numbers.Number,
130 min_clip_ratio: numbers.Number,
131 layer_overrides: Dict,
132 optional: bool = optional,
133 ):
134 """
135 @brief Initialize the CalibrationConfig.
136
137 @param quantization_method int. Calibration method index:<br>
138 0: WChALayer - Weight per-channel, Activation per-layer.<br>
139 1: WChAMulti - Weight per-channel, Activation multi-layer.<br>
140 2: WChALayerZeropoint - Weight per-channel, Activation per-layer with zeropoint.<br>
141 3: WChAMultiZeropoint - Weight per-channel, Activation multi-layer with zeropoint.<br>
142 @param quantization_output int. Output quantization type index:<br>
143 0: Layer - Per-layer quantization.<br>
144 1: Ch - Per-channel quantization.<br>
145 2: Sigmoid - Sigmoid-based quantization.<br>
146 @param quantization_mode int. Quantization mode index:<br>
147 0: max.<br>
148 1: maxPercentile.<br>
149 2: histogram.<br>
150 @param percentile float. Percentile value for maxPercentile mode.
151 @param topk_ratio float. Top-k ratio used in maxPercentile mode.
152 @param max_each int. Maximum number of samples processed per iteration (maxPercentile).
153 @param max_total int. Total maximum number of samples (maxPercentile).
154 @param hist_percentile float. Percentile for histogram mode (when searchType is percentile).
155 @param hist_use_gpu bool. Whether to use GPU for histogram computation.
156 @param hist_num_bins int. Number of histogram bins.
157 @param hist_num_samples int. Number of representative samples for metric computation.
158 @param hist_buffer_size int. Buffer size for batch histogram computation.
159 @param hist_min_bin_width float. Minimum bin width for histogram.
160 @param hist_search_percentile_min float. Minimum search percentile for MSE/KL search.
161 @param hist_search_percentile_max float. Maximum search percentile for MSE/KL search.
162 @param hist_num_search int. Number of search iterations for MSE/KL search.
163 @param hist_search_type int. Search type: 0=percentile, 1=mse, 2=kl.
164 @param act_scale_min float. Minimum allowed activation scale (lower bound clamp).
165 @param weight_scale_min float. Minimum allowed weight scale (lower bound clamp).
166 @param min_clip_ratio float. Minimum clip ratio constraint applied during calibration.
167 @param layer_overrides Dict. Layer-specific override settings.
168 @param optional bool. Indicates whether this config is optional.
169 """
170 super().__init__(optional)
171 self.quantization_method = quantization_method
172 self.quantization_output = quantization_output
173 self.quantization_mode = quantization_mode
174 # maxPercentile config
175 self.percentile = percentile
176 self.topk_ratio = topk_ratio
177 self.max_each = max_each
178 self.max_total = max_total
179 # histogram config
180 self.hist_percentile = hist_percentile
181 self.hist_use_gpu = hist_use_gpu
182 self.hist_num_bins = hist_num_bins
183 self.hist_num_samples = hist_num_samples
184 self.hist_buffer_size = hist_buffer_size
185 self.hist_min_bin_width = hist_min_bin_width
186 self.hist_search_percentile_min = hist_search_percentile_min
187 self.hist_search_percentile_max = hist_search_percentile_max
188 self.hist_num_search = hist_num_search
189 self.hist_search_type = hist_search_type
190 # common
191 self.act_scale_min = act_scale_min
192 self.weight_scale_min = weight_scale_min
193 self.min_clip_ratio = min_clip_ratio
194 self.layer_overrides = layer_overrides
195 self.check_valid(except_list=["optional", "layer_overrides"])
196
197 @classmethod
198 def default_config(cls):
199 return cls(**cls.DEFAULTS, optional=cls.optional)
200
201 @classmethod
202 def from_kwargs(cls, **kwargs):
203 params = cls.DEFAULTS.copy()
204 updated_kwargs = dict()
205 for key in cls.DEFAULTS.keys():
206 if key in kwargs:
207 updated_kwargs[key] = kwargs[key]
208 params[key] = kwargs[key]
209
210 try:
211 return cls(**params, optional=cls.optional)
212 except:
213 raise ValueError(
214 f"Please review the configuration kwargs passed to {cls.__name__}. These kwargs were updated and will be used: {updated_kwargs}"
215 )
216
217 @classmethod
218 def from_dict(cls, config_dict: dict):
219 """Create CalibrationConfig from dictionary (JSON structure)"""
220 params = cls.DEFAULTS.copy()
221
222 # Top-level parameters
223 if "method" in config_dict:
224 params["quantization_method"] = config_dict["method"]
225 if "output" in config_dict:
226 params["quantization_output"] = config_dict["output"]
227 if "mode" in config_dict:
228 params["quantization_mode"] = config_dict["mode"]
229
230 # maxPercentile config (NEW structure)
231 if "maxPercentile" in config_dict:
232 mp = config_dict["maxPercentile"]
233 if "percentile" in mp:
234 params["percentile"] = mp["percentile"]
235 if "topKRatio" in mp:
236 params["topk_ratio"] = mp["topKRatio"]
237 if "maxEach" in mp:
238 params["max_each"] = mp["maxEach"]
239 if "maxTotal" in mp:
240 params["max_total"] = mp["maxTotal"]
241
242 # histogram config (NEW structure)
243 if "histogram" in config_dict:
244 h = config_dict["histogram"]
245 if "percentile" in h:
246 params["hist_percentile"] = h["percentile"]
247 if "useGPU" in h:
248 params["hist_use_gpu"] = h["useGPU"]
249 if "numBins" in h:
250 params["hist_num_bins"] = h["numBins"]
251 if "numSamples" in h:
252 params["hist_num_samples"] = h["numSamples"]
253 if "bufferSize" in h:
254 params["hist_buffer_size"] = h["bufferSize"]
255 if "minBinWidth" in h:
256 params["hist_min_bin_width"] = h["minBinWidth"]
257 if "searchPercentileMin" in h:
258 params["hist_search_percentile_min"] = h["searchPercentileMin"]
259 if "searchPercentileMax" in h:
260 params["hist_search_percentile_max"] = h["searchPercentileMax"]
261 if "numSearch" in h:
262 params["hist_num_search"] = h["numSearch"]
263 if "searchType" in h:
264 # Handle both string and int
265 st = h["searchType"]
266 if isinstance(st, str):
267 params["hist_search_type"] = cls.search_type_list.index(st.lower())
268 else:
269 params["hist_search_type"] = st
270
271 # Scale and clip parameters
272 if "actScaleMin" in config_dict:
273 params["act_scale_min"] = config_dict["actScaleMin"]
274 if "weightScaleMin" in config_dict:
275 params["weight_scale_min"] = config_dict["weightScaleMin"]
276 if "minclipRatio" in config_dict:
277 params["min_clip_ratio"] = config_dict["minclipRatio"]
278 if "layerOverrides" in config_dict:
279 params["layer_overrides"] = config_dict["layerOverrides"]
280
281 return cls(**params)
282
283 def to_dict(self):
284 return {
285 "minclipRatio": self.min_clip_ratio,
286 "methodList": self.method_list,
287 "method": self.quantization_method,
288 "outputList": self.output_list,
289 "output": self.quantization_output,
290 "modeList": self.mode_list,
291 "mode": self.quantization_mode,
292 "maxPercentile": {
293 "percentile": self.percentile,
294 "topKRatio": self.topk_ratio,
295 "maxEach": self.max_each,
296 "maxTotal": self.max_total,
297 },
298 "histogram": {
299 "percentile": self.hist_percentile,
300 "useGPU": self.hist_use_gpu,
301 "numBins": self.hist_num_bins,
302 "numSamples": self.hist_num_samples,
303 "bufferSize": self.hist_buffer_size,
304 "minBinWidth": self.hist_min_bin_width,
305 "searchPercentileMin": self.hist_search_percentile_min,
306 "searchPercentileMax": self.hist_search_percentile_max,
307 "numSearch": self.hist_num_search,
308 "searchType": self.search_type_list[self.hist_search_type],
309 },
310 "actScaleMin": self.act_scale_min,
311 "weightScaleMin": self.weight_scale_min,
312 "layerOverrides": self.layer_overrides,
313 }
314
315
316class BitConfig(ConfigABC):
317 """
318 @brief Configuration for bit precision.
319 @details Defines bit-width parameterization for activations and weights used in mixed-precision quantization (e.g., attention and FFN components).
320 """
321
322 optional = False
323
324 DEFAULTS = {
325 "query_act_bits": 8,
326 "key_act_bits": 8,
327 "value_act_bits": 8,
328 "output_act_bits": 16,
329 "ffn_act_bits": 16,
330 "head_act_bits": 8,
331 "query_weight_bits": 8,
332 "key_weight_bits": 8,
333 "value_weight_bits": 8,
334 "output_weight_bits": 8,
335 "ffn_weight_bits": 8,
336 "head_weight_bits": 8,
337 "mixed_precision_apply": False,
338 "save_path": "",
339 "load_path": "",
340 "activation_16bits": [],
341 "weight_16bits": [],
342 }
343
344 py_to_cpp_name = {
345 "query_act_bits": "queryActBits",
346 "key_act_bits": "keyActBits",
347 "value_act_bits": "valueActBits",
348 "output_act_bits": "outputActBits",
349 "ffn_act_bits": "ffnActBits",
350 "head_act_bits": "headActBits",
351 "query_weight_bits": "queryWeightBits",
352 "key_weight_bits": "keyWeightBits",
353 "value_weight_bits": "valueWeightBits",
354 "output_weight_bits": "outputWeightBits",
355 "ffn_weight_bits": "ffnWeightBits",
356 "head_weight_bits": "headWeightBits",
357 "mixed_precision_apply": "mixedPrecisionApply",
358 "save_path": "savePath",
359 "load_path": "loadPath",
360 }
361
362 # Check that all bits values are positive
363 min_max_check = {
364 "query_act_bits": [1, None],
365 "key_act_bits": [1, None],
366 "value_act_bits": [1, None],
367 "output_act_bits": [1, None],
368 "ffn_act_bits": [1, None],
369 "head_act_bits": [1, None],
370 "query_weight_bits": [1, None],
371 "key_weight_bits": [1, None],
372 "value_weight_bits": [1, None],
373 "output_weight_bits": [1, None],
374 "ffn_weight_bits": [1, None],
375 "head_weight_bits": [1, None],
376 }
377
379 self,
380 query_act_bits: int,
381 key_act_bits: int,
382 value_act_bits: int,
383 output_act_bits: int,
384 ffn_act_bits: int,
385 head_act_bits: int,
386 query_weight_bits: int,
387 key_weight_bits: int,
388 value_weight_bits: int,
389 output_weight_bits: int,
390 ffn_weight_bits: int,
391 head_weight_bits: int,
392 mixed_precision_apply: bool,
393 save_path: str,
394 load_path: str,
395 activation_16bits: List[str],
396 weight_16bits: List[str],
397 optional: bool = optional,
398 ):
399 """
400 @brief Initialize the BitConfig.
401
402 @param query_act_bits int. Query activation bit-width.
403 @param key_act_bits int. Key activation bit-width.
404 @param value_act_bits int. Value activation bit-width.
405 @param output_act_bits int. Output activation bit-width.
406 @param ffn_act_bits int. FFN activation bit-width.
407 @param head_act_bits int. Head activation bit-width.
408 @param query_weight_bits int. Query weight bit-width.
409 @param key_weight_bits int. Key weight bit-width.
410 @param value_weight_bits int. Value weight bit-width.
411 @param output_weight_bits int. Output weight bit-width.
412 @param ffn_weight_bits int. FFN weight bit-width.
413 @param head_weight_bits int. Head weight bit-width.
414 @param mixed_precision_apply bool. If true, apply mixed-precision according to the specified bit-widths.
415 @param save_path str. (optional) Path to save the bit allocation. If empty, the allocation is not saved.
416 @param load_path str. (optional) Path to load the bit allocation. If empty, allocation is not loaded.
417 @param activation_16bits List[str]. (optional) Layer names to force 16-bit activations.
418 @param weight_16bits List[str]. (optional) Layer names to force 16-bit weights.
419 """
420 super().__init__(optional)
421 self.query_act_bits = query_act_bits
422 self.key_act_bits = key_act_bits
423 self.value_act_bits = value_act_bits
424 self.output_act_bits = output_act_bits
425 self.ffn_act_bits = ffn_act_bits
426 self.head_act_bits = head_act_bits
427 self.query_weight_bits = query_weight_bits
428 self.key_weight_bits = key_weight_bits
429 self.value_weight_bits = value_weight_bits
430 self.output_weight_bits = output_weight_bits
431 self.ffn_weight_bits = ffn_weight_bits
432 self.head_weight_bits = head_weight_bits
433 self.mixed_precision_apply = mixed_precision_apply
434 self.save_path = save_path
435 self.load_path = load_path
436 self.activation_16bits = activation_16bits
437 self.weight_16bits = weight_16bits
438 self.check_valid(except_list=["optional", "activation_16bits", "weight_16bits"])
439
440 @classmethod
441 def default_config(cls):
442 return cls(**cls.DEFAULTS, optional=cls.optional)
443
444 @classmethod
445 def from_kwargs(cls, **kwargs):
446 params = cls.DEFAULTS.copy()
447 updated_kwargs = dict()
448 for key in cls.DEFAULTS.keys():
449 if key in kwargs:
450 updated_kwargs[key] = kwargs[key]
451 params[key] = kwargs[key]
452
453 try:
454 return cls(**params, optional=cls.optional)
455 except:
456 raise ValueError(
457 f"Please review the configuration kwargs passed to {cls.__name__}. These kwargs were updated and will be used: {updated_kwargs}"
458 )
459
460 @classmethod
461 def from_dict(cls, config_dict: dict):
462 """Create BitConfig from dictionary (JSON structure)"""
463 params = cls.DEFAULTS.copy()
464
465 # Transformer config
466 if "transformer" in config_dict:
467 transformer = config_dict["transformer"]
468
469 # Activation bits
470 if "activation" in transformer:
471 activation = transformer["activation"]
472 if "query" in activation:
473 params["query_act_bits"] = activation["query"]
474 if "key" in activation:
475 params["key_act_bits"] = activation["key"]
476 if "value" in activation:
477 params["value_act_bits"] = activation["value"]
478 if "output" in activation:
479 params["output_act_bits"] = activation["output"]
480 if "ffn" in activation:
481 params["ffn_act_bits"] = activation["ffn"]
482 if "head" in activation:
483 params["head_act_bits"] = activation["head"]
484
485 # Weight bits
486 if "weight" in transformer:
487 weight = transformer["weight"]
488 if "query" in weight:
489 params["query_weight_bits"] = weight["query"]
490 if "key" in weight:
491 params["key_weight_bits"] = weight["key"]
492 if "value" in weight:
493 params["value_weight_bits"] = weight["value"]
494 if "output" in weight:
495 params["output_weight_bits"] = weight["output"]
496 if "ffn" in weight:
497 params["ffn_weight_bits"] = weight["ffn"]
498 if "head" in weight:
499 params["head_weight_bits"] = weight["head"]
500
501 # Mixed precision
502 if "mixedPrecision" in transformer:
503 mixed_precision = transformer["mixedPrecision"]
504 if "apply" in mixed_precision:
505 params["mixed_precision_apply"] = mixed_precision["apply"]
506
507 # Save info
508 if "saveInfo" in config_dict:
509 save_info = config_dict["saveInfo"]
510 if "savePath" in save_info:
511 params["save_path"] = save_info["savePath"]
512 if "loadPath" in save_info:
513 params["load_path"] = save_info["loadPath"]
514
515 # Layer overrides
516 if "layerOverrides" in config_dict:
517 layer_overrides = config_dict["layerOverrides"]
518 if "activation16Bits" in layer_overrides:
519 params["activation_16bits"] = layer_overrides["activation16Bits"]
520 if "weight16Bits" in layer_overrides:
521 params["weight_16bits"] = layer_overrides["weight16Bits"]
522
523 return cls(**params)
524
525 def to_dict(self):
526 return {
527 "transformer": {
528 "activation": {
529 "query": self.query_act_bits,
530 "key": self.key_act_bits,
531 "value": self.value_act_bits,
532 "output": self.output_act_bits,
533 "ffn": self.ffn_act_bits,
534 "head": self.head_act_bits,
535 },
536 "weight": {
537 "query": self.query_weight_bits,
538 "key": self.key_weight_bits,
539 "value": self.value_weight_bits,
540 "output": self.output_weight_bits,
541 "ffn": self.ffn_weight_bits,
542 "head": self.head_weight_bits,
543 },
544 "mixedPrecision": {
545 "apply": self.mixed_precision_apply,
546 "typeWise": True,
547 "prune": 0,
548 "bit_2": 0,
549 "bit_4": 0,
550 "bit_8": 1,
551 "importanceThreshold_low": -1,
552 "importanceThreshold_high": -1,
553 },
554 },
555 "saveInfo": {
556 "savePath": self.save_path,
557 "loadPath": self.load_path,
558 },
559 "layerOverrides": {
560 "activation16Bits": self.activation_16bits,
561 "weight16Bits": self.weight_16bits,
562 },
563 }
564
565
566class QuantizationConfig(ConfigABC):
567 """
568 @brief Unified quantization configuration.
569
570 @details Groups calibration and bit-precision configurations into a single configuration.
571 """
572
573 optional = False
574 py_to_cpp_name = {
575 "calibration": "calibration",
576 "bit": "bit",
577 }
578
579 min_max_check = {}
580
581 @typechecked
583 self,
584 optional: bool,
585 calibration: Optional[CalibrationConfig] = None,
586 bit: Optional[BitConfig] = None,
587 ):
588 """
589 @brief Initialize the QuantizationConfig.
590 @param calibration CalibrationConfig. Calibration configuration.
591 @param bit BitConfig. Bit precision configuration.
592 """
593 super().__init__(optional)
594 self.calibration = calibration or CalibrationConfig.default_config()
595 self.bit = bit or BitConfig.default_config()
596
597 @classmethod
598 def default_config(cls):
599 return QuantizationConfig(
600 calibration=CalibrationConfig.default_config(),
601 bit=BitConfig.default_config(),
602 optional=cls.optional,
603 )
604
605 @classmethod
606 def from_kwargs(cls, **kwargs):
607 return QuantizationConfig(
608 calibration=CalibrationConfig.from_kwargs(**kwargs),
609 bit=BitConfig.from_kwargs(**kwargs),
610 optional=cls.optional,
611 )
612
613 @classmethod
614 def from_dict(cls, config_dict: dict):
615 calibration_dict = config_dict.get("calibration", {})
616 bit_dict = config_dict.get("bit", {})
617
618 return cls(
619 calibration=CalibrationConfig.from_dict(calibration_dict),
620 bit=BitConfig.from_dict(bit_dict),
621 optional=cls.optional,
622 )
623
624 def to_dict(self):
625 return {
626 "quantization": {
627 "calibration": self.calibration.to_dict(),
628 "bit": self.bit.to_dict(),
629 }
630 }
631
632
633def get_calibration_config(**kwargs) -> CalibrationConfig:
634 """
635 @brief Create CalibrationConfig with partial parameters merged with defaults.
636 """
637 params = CalibrationConfig.DEFAULTS.copy()
638 params.update(kwargs)
639 return CalibrationConfig(**params, optional=CalibrationConfig.optional)
640
641
642def get_bit_config(**kwargs) -> BitConfig:
643 """
644 @brief Create BitConfig with partial parameters merged with defaults.
645 """
646 params = BitConfig.DEFAULTS.copy()
647 params.update(kwargs)
648 return BitConfig(**params, optional=BitConfig.optional)
649
650
652 calibration: Optional[CalibrationConfig] = None,
653 bit: Optional[BitConfig] = None,
654) -> QuantizationConfig:
655 """
656 @brief Create QuantizationConfig with partial parameters merged with defaults.
657 """
658 return QuantizationConfig(
659 calibration=calibration, bit=bit, optional=QuantizationConfig.optional
660 )
661
662
663# @}
Configuration for calibration during quantization.
__init__(self, int query_act_bits, int key_act_bits, int value_act_bits, int output_act_bits, int ffn_act_bits, int head_act_bits, int query_weight_bits, int key_weight_bits, int value_weight_bits, int output_weight_bits, int ffn_weight_bits, int head_weight_bits, bool mixed_precision_apply, str save_path, str load_path, List[str] activation_16bits, List[str] weight_16bits, bool optional=optional)
Initialize the BitConfig.
CalibrationConfig get_calibration_config(**kwargs)
Create CalibrationConfig with partial parameters merged with defaults.
BitConfig get_bit_config(**kwargs)
Create BitConfig with partial parameters merged with defaults.
QuantizationConfig get_quantization_config(Optional[CalibrationConfig] calibration=None, Optional[BitConfig] bit=None)
Create QuantizationConfig with partial parameters merged with defaults.
__init__(self, bool optional, Optional[CalibrationConfig] calibration=None, Optional[BitConfig] bit=None)
Initialize the QuantizationConfig.
from_dict(cls, dict config_dict)
Create CalibrationConfig from dictionary (JSON structure)
from_dict(cls, dict config_dict)
Create BitConfig from dictionary (JSON structure)
__init__(self, int quantization_method, int quantization_output, int quantization_mode, numbers.Number percentile, numbers.Number topk_ratio, int max_each, int max_total, numbers.Number hist_percentile, bool hist_use_gpu, int hist_num_bins, int hist_num_samples, int hist_buffer_size, numbers.Number hist_min_bin_width, numbers.Number hist_search_percentile_min, numbers.Number hist_search_percentile_max, int hist_num_search, int hist_search_type, numbers.Number act_scale_min, numbers.Number weight_scale_min, numbers.Number min_clip_ratio, Dict layer_overrides, bool optional=optional)
Initialize the CalibrationConfig.