1"""Auto-generated Pydantic models from config_schema.yaml."""
3from __future__
import annotations
4from typing
import Any, Dict, List, Optional, Union
5from pydantic
import BaseModel, Field, ConfigDict
8from pathlib
import Path
10SCHEMA_VERSION =
"1.0.0"
15 @brief Configuration for uint8 input handling
17 @details Defines whether inputs should be treated as uint8 and which specific inputs to apply this to.
19 @param apply bool. If true, treat specified inputs as uint8
20 @param inputs List[str]. List of input names to treat as uint8. If empty and apply is true, applies to all inputs
21 @param division_factor float. Division factor for uint8 to float conversion (e.g., 255.0 for [0,1], 127.5 for [0,2])
24 model_config = ConfigDict(
25 populate_by_name=
True,
30 default=
False, description=
"If true, treat specified inputs as uint8"
32 inputs: List[str] = Field(
34 description=
"List of input names to treat as uint8. If empty and apply is true, applies to all inputs",
36 division_factor: float = Field(
38 alias=
"divisionFactor",
39 description=
"Division factor for uint8 to float conversion (e.g., 255.0 for [0,1], 127.5 for [0,2])",
43 """Return a copy with updated fields."""
44 return self.model_copy(update=kwargs)
49 @brief Configuration for input preprocessing pipeline
51 @details Defines preprocessing operations to be applied to model inputs,
52 including operations like resize, normalize, color conversion, etc.
54 @param apply bool. If true, apply preprocessing pipeline
55 @param auto_convert_format bool. If true, automatically convert input format
56 @param pipeline List[Dict[str, Any]]. List of preprocessing operations to apply globally
57 @param input_configs Dict[str, Any]. Per-input preprocessing configurations. Keys are input names
60 model_config = ConfigDict(
61 populate_by_name=
True,
66 default=
False, description=
"If true, apply preprocessing pipeline"
68 auto_convert_format: bool = Field(
70 alias=
"autoConvertFormat",
71 description=
"If true, automatically convert input format",
73 pipeline: Any = Field(
74 default=[], description=
"List of preprocessing operations to apply globally"
76 input_configs: Any = Field(
79 description=
"Per-input preprocessing configurations. Keys are input names",
83 """Return a copy with updated fields."""
84 return self.model_copy(update=kwargs)
89 @brief Configuration for resource management during model compilation
91 @details Controls GPU and memory management settings during the compilation process.
93 @param weight_dtype str. Weight data type for calibration (e.g., 'float32', 'float16')
94 @param use_gpu_only_for_calibration bool. If True, use GPU only during the calibration phase
95 @param weight_memory WeightMemory. Weight memory management configuration
98 model_config = ConfigDict(
99 populate_by_name=
True,
103 weight_dtype: str = Field(
106 description=
"Weight data type for calibration (e.g., 'float32', 'float16')",
108 use_gpu_only_for_calibration: bool = Field(
110 alias=
"useGPUOnlyForCalibration",
111 description=
"If True, use GPU only during the calibration phase",
116 @brief Weight memory management configuration
118 @param method int. Weight memory management method index:<br>
119 0: DeleteFloat - Delete float weights after quantization.<br>
120 1: SaveFloat - Save float weights to disk.<br>
121 2: MoveFloat - Move float weights to CPU.<br>
122 3: KeepFloat - Keep float weights in memory.<br>
123 4: KeepAll - Keep all weights in memory.<br>
126 method_list: List[str] = Field(
127 default=[
"DeleteFloat",
"SaveFloat",
"MoveFloat",
"KeepFloat",
"KeepAll"],
130 method: int = Field(default=0, alias=
"method")
132 weight_memory: WeightMemory = Field(
133 default_factory=WeightMemory, alias=
"weightMemory"
137 """Return a copy with updated fields."""
138 return self.model_copy(update=kwargs)
143 @brief Configuration for calibration during quantization
145 @details Defines calibration and quantization parameterization used to derive activation/weight scales
146 and related statistics during quantized compilation.
148 @param method int. Calibration method index:<br>
149 0: WChALayer - Weight per-channel, Activation per-layer.<br>
150 1: WChAMulti - Weight per-channel, Activation multi-layer.<br>
151 2: WChALayerZeropoint - Weight per-channel, Activation per-layer with zeropoint.<br>
152 3: WChAMultiZeropoint - Weight per-channel, Activation multi-layer with zeropoint.<br>
153 @param output int. Output quantization type index:<br>
154 0: Layer - Per-layer quantization.<br>
155 1: Ch - Per-channel quantization.<br>
156 2: Sigmoid - Sigmoid-based quantization.<br>
157 @param mode int. Quantization mode index:<br>
158 0: Max - Maximum value calibration.<br>
159 1: MaxPercentile - Maximum percentile calibration.<br>
160 2: Histogram - Histogram-based calibration.<br>
161 @param clustering_methods int. LUT clustering method:<br>
162 0: Scale - Scale-based 1D clustering.<br>
163 1: Scale2D - Scale-based 2D clustering.<br>
164 2: ReparameterizedL2 - Reparameterized L2 distance clustering.<br>
165 3: SubgraphIoU - Subgraph intersection-over-union clustering.<br>
166 4: DomainAwareL2 - Domain-aware L2 distance on common absolute grid.<br>
167 5: OverlapWeightedL2 - L2 weighted by domain overlap (IoU).<br>
168 6: Fast - Minimal search space for fast LUT optimization.<br>
169 @param act_scale_min float. Minimum allowed activation scale (lower bound clamp)
170 @param act16_scale_min float. Minimum 16-bit activation scale (actScaleMin / 256)
171 @param weight_scale_min float. Minimum allowed weight scale (lower bound clamp)
172 @param weight16_scale_min float. Minimum 16-bit weight scale (weightScaleMin / 256)
173 @param min_clip_ratio float. Minimum clip ratio constraint applied during calibration
174 @param max_percentile MaxPercentile. MaxPercentile mode configuration
175 @param fast_dist FastDist. Fast distribution calibration configuration
176 @param histogram Histogram. Histogram-based calibration configuration
177 @param layer_overrides LayerOverrides. Layer-specific override settings for calibration
178 @param statistics Statistics. Statistics save/load configuration with percentile selection
181 model_config = ConfigDict(
182 populate_by_name=
True,
186 method_list: List[str] = Field(
187 default=[
"WChALayer",
"WChAMulti",
"WChALayerZeropoint",
"WChAMultiZeropoint"],
190 method: int = Field(default=1, alias=
"method")
191 output_list: List[str] = Field(
192 default=[
"Layer",
"Ch",
"Sigmoid"], alias=
"outputList"
194 output: int = Field(default=0, alias=
"output")
195 mode_list: List[str] = Field(
196 default=[
"Max",
"MaxPercentile",
"Histogram"], alias=
"modeList"
198 mode: int = Field(default=1, alias=
"mode")
199 clustering_methods_list: List[str] = Field(
209 alias=
"clusteringMethodsList",
211 clustering_methods: List[int] = Field(default=[0], alias=
"clusteringMethods")
213 act_scale_min: float = Field(
216 description=
"Minimum allowed activation scale (lower bound clamp)",
220 act16_scale_min: float = Field(
221 default=1.953125e-06,
222 alias=
"act16ScaleMin",
223 description=
"Minimum 16-bit activation scale (actScaleMin / 256)",
225 weight_scale_min: float = Field(
227 alias=
"weightScaleMin",
228 description=
"Minimum allowed weight scale (lower bound clamp)",
232 weight16_scale_min: float = Field(
234 alias=
"weight16ScaleMin",
235 description=
"Minimum 16-bit weight scale (weightScaleMin / 256)",
237 min_clip_ratio: float = Field(
239 alias=
"minClipRatio",
240 description=
"Minimum clip ratio constraint applied during calibration",
246 model_config = ConfigDict(populate_by_name=
True)
249 @brief MaxPercentile mode configuration
251 @param percentile float. Percentile value for maxPercentile mode
252 @param topk_ratio float. Top-k ratio used in maxPercentile mode
253 @param max_each int. Maximum number of samples processed per iteration
254 @param max_total int. Total maximum number of samples
255 @param per_ch_divisor int. Divisor for per-channel buffer capacity (bufferCap = max(maxTotal / perChDivisor, maxEach))
257 percentile: float = Field(
258 default=0.9999, description=
"Percentile value for maxPercentile mode"
260 topk_ratio: float = Field(
263 description=
"Top-k ratio used in maxPercentile mode",
265 max_each: int = Field(
268 description=
"Maximum number of samples processed per iteration",
270 max_total: int = Field(
273 description=
"Total maximum number of samples",
275 per_ch_divisor: int = Field(
277 alias=
"perChDivisor",
278 description=
"Divisor for per-channel buffer capacity (bufferCap = max(maxTotal / perChDivisor, maxEach))",
282 max_percentile: MaxPercentile = Field(
283 default_factory=MaxPercentile, alias=
"maxPercentile"
287 model_config = ConfigDict(populate_by_name=
True)
290 @brief Fast distribution calibration configuration
292 @param size_cali int.
293 @param kernel_size int.
294 @param stack_size int.
296 size_cali: int = Field(default=100, alias=
"sizeCali")
297 kernel_size: int = Field(default=9, alias=
"kernelSize")
298 stack_size: int = Field(default=32768, alias=
"stackSize")
300 fast_dist: FastDist = Field(default_factory=FastDist, alias=
"fastDist")
303 model_config = ConfigDict(populate_by_name=
True)
306 @brief Histogram-based calibration configuration
308 @param search_type int. Search type for histogram calibration:<br>
312 @param percentile float. Percentile value for histogram calibration
313 @param use_gpu bool. Use GPU for histogram computation
314 @param num_bins int. Number of bins for histogram
315 @param num_samples int. Number of samples for histogram calibration
316 @param buffer_size int. Buffer size for histogram computation (-1 for auto)
317 @param min_bin_width float. Minimum bin width for histogram
318 @param search_percentile_min float. Minimum search percentile
319 @param search_percentile_max float. Maximum search percentile
320 @param num_search int. Number of search iterations
322 search_type_list: List[str] = Field(
323 default=[
"Percentile",
"MSE",
"KL"], alias=
"searchTypeList"
325 search_type: int = Field(default=0, alias=
"searchType")
326 percentile: float = Field(
327 default=0.9999, description=
"Percentile value for histogram calibration"
329 use_gpu: bool = Field(
332 description=
"Use GPU for histogram computation",
334 num_bins: int = Field(
335 default=256, alias=
"numBins", description=
"Number of bins for histogram"
337 num_samples: int = Field(
340 description=
"Number of samples for histogram calibration",
342 buffer_size: int = Field(
345 description=
"Buffer size for histogram computation (-1 for auto)",
347 min_bin_width: float = Field(
350 description=
"Minimum bin width for histogram",
352 search_percentile_min: float = Field(
354 alias=
"searchPercentileMin",
355 description=
"Minimum search percentile",
357 search_percentile_max: float = Field(
359 alias=
"searchPercentileMax",
360 description=
"Maximum search percentile",
362 num_search: int = Field(
363 default=128, alias=
"numSearch", description=
"Number of search iterations"
366 histogram: Histogram = Field(default_factory=Histogram, alias=
"histogram")
369 model_config = ConfigDict(populate_by_name=
True)
372 @brief Layer-specific override settings for calibration
374 @param act_scale_min dict. Per-layer activation scale minimum overrides. Keys are actScaleMin values (e.g. '0.0005'), values are lists of layer names to apply that override. (e.g. {'0.0005' : ['layer1', 'layer2']})
376 act_scale_min: Any = Field(
379 description=
"Per-layer activation scale minimum overrides. Keys are actScaleMin values (e.g. '0.0005'), values are lists of layer names to apply that override. (e.g. {'0.0005' : ['layer1', 'layer2']})",
382 layer_overrides: LayerOverrides = Field(
383 default_factory=LayerOverrides, alias=
"layerOverrides"
387 model_config = ConfigDict(populate_by_name=
True)
390 @brief Statistics save/load configuration with percentile selection
392 @param apply bool. Enable statistics save/load
393 @param save_path str. Path to save statistics. If empty, not saved
394 @param load_path str. Path to load statistics. If empty, not loaded
395 @param percentiles List[float]. List of percentile candidates
396 @param percentile_index int. Index into percentiles list to select active percentile
398 apply: bool = Field(default=
False, description=
"Enable statistics save/load")
399 save_path: str = Field(
402 description=
"Path to save statistics. If empty, not saved",
404 load_path: str = Field(
407 description=
"Path to load statistics. If empty, not loaded",
409 percentiles: List[float] = Field(
410 default=[0.9999, 0.999, 0.99, 0.9],
411 description=
"List of percentile candidates",
413 percentile_index: int = Field(
415 alias=
"percentileIndex",
416 description=
"Index into percentiles list to select active percentile",
419 statistics: Statistics = Field(default_factory=Statistics, alias=
"statistics")
422 """Return a copy with updated fields."""
423 return self.model_copy(update=kwargs)
428 @brief Configuration for bit precision
430 @details Defines bit-width parameterization for activations and weights used in
431 mixed-precision quantization (e.g., attention and FFN components).
433 @param transformer Transformer. Transformer-specific bit-width configuration
434 @param save_info SaveInfo. Bit allocation save/load configuration
435 @param layer_overrides LayerOverrides. Layer-specific bit-width override settings
438 model_config = ConfigDict(
439 populate_by_name=
True,
444 model_config = ConfigDict(populate_by_name=
True)
447 @brief Transformer-specific bit-width configuration
449 @param activation Activation. Activation bit-widths for transformer components
450 @param weight Weight. Weight bit-widths for transformer components
451 @param mixed_precision MixedPrecision. Mixed precision configuration
456 @brief Activation bit-widths for transformer components
458 @param query int. Query activation bit-width
459 @param key int. Key activation bit-width
460 @param value int. Value activation bit-width
461 @param output int. Output activation bit-width
462 @param ffn int. FFN activation bit-width
463 @param head int. Head activation bit-width
466 query: int = Field(default=8, description=
"Query activation bit-width")
467 key: int = Field(default=8, description=
"Key activation bit-width")
468 value: int = Field(default=8, description=
"Value activation bit-width")
469 output: int = Field(default=16, description=
"Output activation bit-width")
470 ffn: int = Field(default=16, description=
"FFN activation bit-width")
471 head: int = Field(default=8, description=
"Head activation bit-width")
473 activation: Activation = Field(default_factory=Activation, alias=
"activation")
477 @brief Weight bit-widths for transformer components
479 @param query int. Query weight bit-width
480 @param key int. Key weight bit-width
481 @param value int. Value weight bit-width
482 @param output int. Output weight bit-width
483 @param ffn int. FFN weight bit-width
484 @param head int. Head weight bit-width
487 query: int = Field(default=8, description=
"Query weight bit-width")
488 key: int = Field(default=8, description=
"Key weight bit-width")
489 value: int = Field(default=8, description=
"Value weight bit-width")
490 output: int = Field(default=8, description=
"Output weight bit-width")
491 ffn: int = Field(default=8, description=
"FFN weight bit-width")
492 head: int = Field(default=8, description=
"Head weight bit-width")
494 weight: Weight = Field(default_factory=Weight, alias=
"weight")
497 model_config = ConfigDict(populate_by_name=
True)
500 @brief Mixed precision configuration
502 @param apply bool. If true, apply mixed-precision according to the specified bit-widths
503 @param type_wise bool. Apply type-wise mixed precision
504 @param prune float. Pruning ratio
505 @param bit_2 float. Ratio of 2-bit quantization
506 @param bit_4 float. Ratio of 4-bit quantization
507 @param bit_8 float. Ratio of 8-bit quantization
508 @param importance_threshold_low float. Low importance threshold
509 @param importance_threshold_high float. High importance threshold
513 description=
"If true, apply mixed-precision according to the specified bit-widths",
515 type_wise: bool = Field(
518 description=
"Apply type-wise mixed precision",
520 prune: float = Field(default=0, description=
"Pruning ratio")
521 bit_2: float = Field(
522 default=0, alias=
"bit2", description=
"Ratio of 2-bit quantization"
524 bit_4: float = Field(
525 default=0, alias=
"bit4", description=
"Ratio of 4-bit quantization"
527 bit_8: float = Field(
528 default=1, alias=
"bit8", description=
"Ratio of 8-bit quantization"
530 importance_threshold_low: float = Field(
532 alias=
"importanceThreshold_low",
533 description=
"Low importance threshold",
535 importance_threshold_high: float = Field(
537 alias=
"importanceThreshold_high",
538 description=
"High importance threshold",
541 mixed_precision: MixedPrecision = Field(
542 default_factory=MixedPrecision, alias=
"mixedPrecision"
545 transformer: Transformer = Field(default_factory=Transformer, alias=
"transformer")
548 model_config = ConfigDict(populate_by_name=
True)
551 @brief Bit allocation save/load configuration
553 @param save_path str. Path to save the bit allocation. If empty, not saved
554 @param load_path str. Path to load the bit allocation. If empty, not loaded
556 save_path: str = Field(
559 description=
"Path to save the bit allocation. If empty, not saved",
561 load_path: str = Field(
564 description=
"Path to load the bit allocation. If empty, not loaded",
567 save_info: SaveInfo = Field(default_factory=SaveInfo, alias=
"saveInfo")
570 model_config = ConfigDict(populate_by_name=
True)
573 @brief Layer-specific bit-width override settings
575 @param activation_16bits list[string]. Layer names to force 16-bit activations
576 @param weight_16bits list[string]. Layer names to force 16-bit weights
578 activation_16bits: List[str] = Field(
580 alias=
"activation16Bits",
581 description=
"Layer names to force 16-bit activations",
583 weight_16bits: List[str] = Field(
585 alias=
"weight16Bits",
586 description=
"Layer names to force 16-bit weights",
589 layer_overrides: LayerOverrides = Field(
590 default_factory=LayerOverrides, alias=
"layerOverrides"
594 """Return a copy with updated fields."""
595 return self.model_copy(update=kwargs)
600 @brief Configuration for OPTQ algorithm
602 @details Defines parameters controlling whether and how OPTQ is applied during quantization,
603 including layer-level inclusion/exclusion lists.
605 @param apply bool. If true, apply OPTQ
606 @param attributes Attributes. OPTQ algorithm attributes
609 model_config = ConfigDict(
610 populate_by_name=
True,
614 apply: bool = Field(default=
False, description=
"If true, apply OPTQ")
617 model_config = ConfigDict(populate_by_name=
True)
620 @brief OPTQ algorithm attributes
622 @param act_order bool. If true, use activation order
623 @param block_size int. Block size used for OPTQ
624 @param perc_damp float. Percentage dampening factor
625 @param apply_layers List[str]. Layer names to apply OPTQ. If empty, applies to all eligible layers
626 @param exclude_layers List[str]. Layer names to exclude from OPTQ
628 act_order: bool = Field(
629 default=
True, alias=
"actOrder", description=
"If true, use activation order"
631 block_size: int = Field(
632 default=128, alias=
"blockSize", description=
"Block size used for OPTQ"
634 perc_damp: float = Field(
635 default=0.01, alias=
"percDamp", description=
"Percentage dampening factor"
637 apply_layers: List[str] = Field(
640 description=
"Layer names to apply OPTQ. If empty, applies to all eligible layers",
642 exclude_layers: List[str] = Field(
644 alias=
"excludeLayers",
645 description=
"Layer names to exclude from OPTQ",
648 attributes: Attributes = Field(default_factory=Attributes, alias=
"attributes")
651 """Return a copy with updated fields."""
652 return self.model_copy(update=kwargs)
657 @brief Configuration for Minimum Output Difference algorithm
659 @details Defines parameters controlling whether and how MOD is applied during quantization,
660 including layer-level inclusion/exclusion lists.
662 @param apply bool. If true, apply MOD
663 @param attributes Attributes. MOD algorithm attributes
666 model_config = ConfigDict(
667 populate_by_name=
True,
671 apply: bool = Field(default=
False, description=
"If true, apply MOD")
674 model_config = ConfigDict(populate_by_name=
True)
677 @brief MOD algorithm attributes
679 @param epochs int. Number of training epochs
680 @param warmup_epochs int. Number of warmup epochs
681 @param lr_min_ratio float. Minimum learning rate ratio
682 @param save_dir str. Directory to save MOD results
683 @param seed int. Random seed for MOD
684 @param apply_layers List[str]. Layer names to apply MOD. If empty, applies to all eligible layers
685 @param exclude_layers List[str]. Layer names to exclude from MOD
686 @param mod_after_layer_name str. Apply MOD after this layer
687 @param anchors List. Anchor configurations for detection models. Nested list of anchor box sizes for detection models. Structure: List[List[List[int]]] where outer list is per detection head (e.g. small/medium/large), middle list is anchors per head, inner list is [width, height]. Example: [[[12,16],[19,36],[40,28]], [[36,75],[76,55],[72,146]], [[142,110],[192,243],[459,401]]]
688 @param use_xyxy bool. Use XYXY format for bounding boxes
689 @param learning_rates LearningRates. Learning rate configuration for MOD
690 @param training Training. MOD training configuration
691 @param loss Loss. MOD loss configuration
692 @param post_processing PostProcessing. Post-processing configuration for detection models
694 epochs: int = Field(default=4, description=
"Number of training epochs")
695 warmup_epochs: int = Field(
696 default=1, alias=
"warmupEpochs", description=
"Number of warmup epochs"
698 lr_min_ratio: float = Field(
701 description=
"Minimum learning rate ratio",
703 save_dir: str = Field(
704 default=
"", alias=
"saveDir", description=
"Directory to save MOD results"
706 seed: int = Field(default=0, description=
"Random seed for MOD")
707 apply_layers: List[str] = Field(
710 description=
"Layer names to apply MOD. If empty, applies to all eligible layers",
712 exclude_layers: List[str] = Field(
714 alias=
"excludeLayers",
715 description=
"Layer names to exclude from MOD",
717 mod_after_layer_name: str = Field(
719 alias=
"modAfterLayerName",
720 description=
"Apply MOD after this layer",
722 anchors: Any = Field(
724 description=
"Anchor configurations for detection models. Nested list of anchor box sizes for detection models. Structure: List[List[List[int]]] where outer list is per detection head (e.g. small/medium/large), middle list is anchors per head, inner list is [width, height]. Example: [[[12,16],[19,36],[40,28]], [[36,75],[76,55],[72,146]], [[142,110],[192,243],[459,401]]]",
726 use_xyxy: bool = Field(
729 description=
"Use XYXY format for bounding boxes",
733 model_config = ConfigDict(populate_by_name=
True)
736 @brief Learning rate configuration for MOD
738 @param act_scale float. Learning rate for activation scale
739 @param zeropoint float. Learning rate for zeropoint
740 @param weight_scale float. Learning rate for weight scale
741 @param weight float. Learning rate for weight
742 @param bias float. Learning rate for bias
744 act_scale: float = Field(
747 description=
"Learning rate for activation scale",
749 zeropoint: float = Field(
750 default=0.0, description=
"Learning rate for zeropoint"
752 weight_scale: float = Field(
755 description=
"Learning rate for weight scale",
757 weight: float = Field(default=4e-06, description=
"Learning rate for weight")
758 bias: float = Field(default=4e-06, description=
"Learning rate for bias")
760 learning_rates: LearningRates = Field(
761 default_factory=LearningRates, alias=
"learningRates"
765 model_config = ConfigDict(populate_by_name=
True)
768 @brief MOD training configuration
770 @param batch_size int. Batch size for MOD training
771 @param q_drop float. Quantization drop probability
772 @param quantize_weight bool. Whether to quantize weights
773 @param weight_scale_init str. Weight scale initialization method
774 @param downresol_mode str. Downresolution mode
775 @param scheduler_type str. LR scheduler type
777 batch_size: int = Field(
778 default=1, alias=
"batchSize", description=
"Batch size for MOD training"
780 q_drop: float = Field(
781 default=0.0, alias=
"qDrop", description=
"Quantization drop probability"
783 quantize_weight: bool = Field(
785 alias=
"quantizeWeight",
786 description=
"Whether to quantize weights",
788 weight_scale_init: str = Field(
790 alias=
"weightScaleInit",
791 description=
"Weight scale initialization method",
793 downresol_mode: str = Field(
794 default=
"STE", alias=
"downresolMode", description=
"Downresolution mode"
796 scheduler_type: str = Field(
797 default=
"Cosine", alias=
"schedulerType", description=
"LR scheduler type"
800 training: Training = Field(default_factory=Training, alias=
"training")
803 model_config = ConfigDict(populate_by_name=
True)
806 @brief MOD loss configuration
808 @param type str. Loss type (MSE, KL, etc.)
809 @param use_outputs bool. Use model outputs for loss computation
810 @param kl_temperature float. KL divergence temperature
811 @param recon_prob float. Reconstruction probability
812 @param recon_coeff float. Reconstruction coefficient
813 @param lambda_0 float. Loss weight lambda_0
814 @param lambda_1 float. Loss weight lambda_1
815 @param lambda_2 float. Loss weight lambda_2
816 @param lambda_3 float. Loss weight lambda_3
817 @param custom_loss_jit_path str. Path to custom JIT-compiled loss function. Refer to /workspace/quantizer/pyutils/mel.pt
819 type: str = Field(default=
"MSE", description=
"Loss type (MSE, KL, etc.)")
820 use_outputs: bool = Field(
823 description=
"Use model outputs for loss computation",
825 kl_temperature: float = Field(
827 alias=
"KLTemperature",
828 description=
"KL divergence temperature",
830 recon_prob: float = Field(
831 default=1.0, alias=
"reconProb", description=
"Reconstruction probability"
833 recon_coeff: float = Field(
836 description=
"Reconstruction coefficient",
838 lambda_0: float = Field(
839 default=1.0, alias=
"lambda0", description=
"Loss weight lambda_0"
841 lambda_1: float = Field(
842 default=1.0, alias=
"lambda1", description=
"Loss weight lambda_1"
844 lambda_2: float = Field(
845 default=1.0, alias=
"lambda2", description=
"Loss weight lambda_2"
847 lambda_3: float = Field(
848 default=1.0, alias=
"lambda3", description=
"Loss weight lambda_3"
850 custom_loss_jit_path: str = Field(
852 alias=
"customLossJITPath",
853 description=
"Path to custom JIT-compiled loss function. Refer to /workspace/quantizer/pyutils/mel.pt",
856 loss: Loss = Field(default_factory=Loss, alias=
"loss")
859 model_config = ConfigDict(populate_by_name=
True)
862 @brief Post-processing configuration for detection models
864 @param post str. Post-processing type
865 @param box_conf_thres float. Box confidence threshold
866 @param box_iou_thres float. Box IoU threshold
868 post: str = Field(default=
"", description=
"Post-processing type")
869 box_conf_thres: float = Field(
870 default=0, alias=
"boxConfThres", description=
"Box confidence threshold"
872 box_iou_thres: float = Field(
873 default=0, alias=
"boxIoUThres", description=
"Box IoU threshold"
876 post_processing: PostProcessing = Field(
877 default_factory=PostProcessing, alias=
"postProcessing"
880 attributes: Attributes = Field(default_factory=Attributes, alias=
"attributes")
883 """Return a copy with updated fields."""
884 return self.model_copy(update=kwargs)
889 @brief Configuration for Large Language Model (LLM) compilation
891 @details Defines LLM-specific settings including sequence lengths, cache configurations,
892 and runtime parameters for efficient LLM inference.
894 @param apply bool. If True, apply LLM-specific configurations
895 @param attributes Attributes. LLM attributes configuration
898 model_config = ConfigDict(
899 populate_by_name=
True,
904 default=
False, description=
"If True, apply LLM-specific configurations"
908 model_config = ConfigDict(populate_by_name=
True)
911 @brief LLM attributes configuration
913 @param max_data_length int. Maximum data length
914 @param max_sequence_length int. Maximum sequence length
915 @param max_cache_length int. Maximum cache length
916 @param max_core_data_length int. Maximum core data length
917 @param calibration Calibration. LLM calibration settings
918 @param runtime Runtime. LLM runtime settings
919 @param debug Debug. LLM debug settings
921 max_data_length: int = Field(
922 default=4096, alias=
"maxDataLength", description=
"Maximum data length"
924 max_sequence_length: int = Field(
926 alias=
"maxSequenceLength",
927 description=
"Maximum sequence length",
929 max_cache_length: int = Field(
930 default=4096, alias=
"maxCacheLength", description=
"Maximum cache length"
932 max_core_data_length: int = Field(
934 alias=
"maxCoreDataLength",
935 description=
"Maximum core data length",
939 model_config = ConfigDict(populate_by_name=
True)
942 @brief LLM calibration settings
944 @param random_seq_length int. Random sequence length used for calibration
945 @param use_full_seq_length bool. If True, use the full sequence length for calibration
946 @param use_custom_mask_input bool. Use custom mask input for calibration
948 random_seq_length: int = Field(
950 alias=
"randomSeqLength",
951 description=
"Random sequence length used for calibration",
953 use_full_seq_length: bool = Field(
955 alias=
"useFullSeqLength",
956 description=
"If True, use the full sequence length for calibration",
958 use_custom_mask_input: bool = Field(
960 alias=
"useCustomMaskInput",
961 description=
"Use custom mask input for calibration",
964 calibration: Calibration = Field(
965 default_factory=Calibration, alias=
"calibration"
969 model_config = ConfigDict(populate_by_name=
True)
972 @brief LLM runtime settings
974 @param use_global_core bool. If True, use a global core
975 @param batch_size int. Batch size
976 @param npu_core_ids List[int]. List of NPU core IDs
977 @param dynamic_rope bool. If True, enable dynamic RoPE (rotary position embedding)
979 use_global_core: bool = Field(
981 alias=
"useGlobalCore",
982 description=
"If True, use a global core",
984 batch_size: int = Field(
985 default=1, alias=
"batchSize", description=
"Batch size"
987 npu_core_ids: List[int] = Field(
988 default=[0], alias=
"npuCoreIds", description=
"List of NPU core IDs"
990 dynamic_rope: bool = Field(
993 description=
"If True, enable dynamic RoPE (rotary position embedding)",
996 runtime: Runtime = Field(default_factory=Runtime, alias=
"runtime")
999 model_config = ConfigDict(populate_by_name=
True)
1002 @brief LLM debug settings
1004 @param apply bool. Enable LLM debug mode
1005 @param batch_debug_bundle_size int. Batch debug bundle size
1007 apply: bool = Field(default=
False, description=
"Enable LLM debug mode")
1008 batch_debug_bundle_size: int = Field(
1010 alias=
"batchDebugBundleSize",
1011 description=
"Batch debug bundle size",
1014 debug: Debug = Field(default_factory=Debug, alias=
"debug")
1016 attributes: Attributes = Field(default_factory=Attributes, alias=
"attributes")
1019 """Return a copy with updated fields."""
1020 return self.model_copy(update=kwargs)
1025 @brief Configuration for equivalent transformation techniques
1027 @details Defines parameters for various equivalent transformation methods including
1028 NormConv, QK smoothing, and rotation matrices for improved quantization.
1030 @param seed int. Random seed for transformation
1031 @param apply_hadamard_rotation_matrix bool. Apply Hadamard rotation matrix
1032 @param norm_conv NormConv. NormConv equivalent transformation
1033 @param qk Qk. QK smoothing transformation
1034 @param ud Ud. UD transformation
1035 @param vo Vo. VO transformation
1036 @param feed_forward_multi_lut FeedForwardMultiLut. Feed-forward multi-LUT transformation
1037 @param spin_r1 SpinR1. SpinR1 rotation transformation
1038 @param head_out_ch_rotation HeadOutChRotation. Head output channel rotation transformation
1039 @param in_rotation InRotation. Input rotation transformation
1040 @param spin_r2 SpinR2. SpinR2 rotation transformation
1041 @param qk_rotation QkRotation. QK rotation transformation
1042 @param flatten_quant FlattenQuant. Flatten quantization transformation
1043 @param optimize_ffn OptimizeFfn. FFN optimization
1046 model_config = ConfigDict(
1047 populate_by_name=
True,
1051 seed: int = Field(default=0, description=
"Random seed for transformation")
1052 apply_hadamard_rotation_matrix: bool = Field(
1054 alias=
"applyHadamardRotationMatrix",
1055 description=
"Apply Hadamard rotation matrix",
1059 model_config = ConfigDict(populate_by_name=
True)
1062 @brief NormConv equivalent transformation
1064 @param apply bool. Apply NormConv transformation
1065 @param learn bool. Learn transformation parameters
1066 @param smoothing_factor float. Smoothing factor
1067 @param min_gamma float. Minimum gamma value
1068 @param max_gamma float. Maximum gamma value
1070 apply: bool = Field(default=
False, description=
"Apply NormConv transformation")
1071 learn: bool = Field(
1072 default=
False, description=
"Learn transformation parameters"
1074 smoothing_factor: float = Field(
1075 default=0.5, alias=
"smoothingFactor", description=
"Smoothing factor"
1077 min_gamma: float = Field(
1078 default=0.0001, alias=
"minGamma", description=
"Minimum gamma value"
1080 max_gamma: float = Field(
1081 default=10000.0, alias=
"maxGamma", description=
"Maximum gamma value"
1084 norm_conv: NormConv = Field(default_factory=NormConv, alias=
"NormConv")
1087 model_config = ConfigDict(populate_by_name=
True)
1090 @brief QK smoothing transformation
1092 @param apply bool. Apply QK transformation
1093 @param smoothing_factor float. Smoothing factor
1094 @param min_gamma float. Minimum gamma value
1095 @param max_gamma float. Maximum gamma value
1097 apply: bool = Field(default=
False, description=
"Apply QK transformation")
1098 smoothing_factor: float = Field(
1099 default=0.5, alias=
"smoothingFactor", description=
"Smoothing factor"
1101 min_gamma: float = Field(
1102 default=0.0001, alias=
"minGamma", description=
"Minimum gamma value"
1104 max_gamma: float = Field(
1105 default=10000.0, alias=
"maxGamma", description=
"Maximum gamma value"
1108 qk: Qk = Field(default_factory=Qk, alias=
"QK")
1111 model_config = ConfigDict(populate_by_name=
True)
1114 @brief UD transformation
1116 @param apply bool. Apply UD transformation
1117 @param learn bool. Learn transformation parameters
1118 @param smoothing_factor float. Smoothing factor
1119 @param min_gamma float. Minimum gamma value
1120 @param max_gamma float. Maximum gamma value
1122 apply: bool = Field(default=
False, description=
"Apply UD transformation")
1123 learn: bool = Field(
1124 default=
False, description=
"Learn transformation parameters"
1126 smoothing_factor: float = Field(
1127 default=0.5, alias=
"smoothingFactor", description=
"Smoothing factor"
1129 min_gamma: float = Field(
1130 default=0.0001, alias=
"minGamma", description=
"Minimum gamma value"
1132 max_gamma: float = Field(
1133 default=10000.0, alias=
"maxGamma", description=
"Maximum gamma value"
1136 ud: Ud = Field(default_factory=Ud, alias=
"UD")
1139 model_config = ConfigDict(populate_by_name=
True)
1142 @brief VO transformation
1144 @param apply bool. Apply VO transformation
1145 @param smoothing_factor float. Smoothing factor
1146 @param min_gamma float. Minimum gamma value
1147 @param max_gamma float. Maximum gamma value
1149 apply: bool = Field(default=
False, description=
"Apply VO transformation")
1150 smoothing_factor: float = Field(
1151 default=0.5, alias=
"smoothingFactor", description=
"Smoothing factor"
1153 min_gamma: float = Field(
1154 default=0.0001, alias=
"minGamma", description=
"Minimum gamma value"
1156 max_gamma: float = Field(
1157 default=10000.0, alias=
"maxGamma", description=
"Maximum gamma value"
1160 vo: Vo = Field(default_factory=Vo, alias=
"VO")
1164 @brief Feed-forward multi-LUT transformation
1166 @param apply bool. Apply feed-forward multi-LUT transformation
1167 @param breakpoints List[float]. Breakpoints for multi-LUT
1170 apply: bool = Field(
1171 default=
False, description=
"Apply feed-forward multi-LUT transformation"
1173 breakpoints: List[float] = Field(
1174 default=[-8.0, -4.0, 0], description=
"Breakpoints for multi-LUT"
1177 feed_forward_multi_lut: FeedForwardMultiLut = Field(
1178 default_factory=FeedForwardMultiLut, alias=
"FeedForwardMultiLUT"
1182 model_config = ConfigDict(populate_by_name=
True)
1185 @brief SpinR1 rotation transformation
1187 @param apply bool. Apply SpinR1 transformation
1188 @param matrix_path str. Path to rotation matrix file
1190 apply: bool = Field(default=
False, description=
"Apply SpinR1 transformation")
1191 matrix_path: str = Field(
1192 default=
"", alias=
"matrixPath", description=
"Path to rotation matrix file"
1195 spin_r1: SpinR1 = Field(default_factory=SpinR1, alias=
"SpinR1")
1198 model_config = ConfigDict(populate_by_name=
True)
1201 @brief Head output channel rotation transformation
1203 @param apply bool. Apply head output channel rotation
1204 @param matrix_path str. Path to rotation matrix file
1206 apply: bool = Field(
1207 default=
False, description=
"Apply head output channel rotation"
1209 matrix_path: str = Field(
1210 default=
"", alias=
"matrixPath", description=
"Path to rotation matrix file"
1213 head_out_ch_rotation: HeadOutChRotation = Field(
1214 default_factory=HeadOutChRotation, alias=
"HeadOutChRotation"
1218 model_config = ConfigDict(populate_by_name=
True)
1221 @brief Input rotation transformation
1223 @param apply bool. Apply input rotation
1224 @param matrix_path str. Path to rotation matrix file
1225 @param input_names List[str]. Names of the input layers to rotate
1227 apply: bool = Field(default=
False, description=
"Apply input rotation")
1228 matrix_path: str = Field(
1229 default=
"", alias=
"matrixPath", description=
"Path to rotation matrix file"
1231 input_names: List[str] = Field(
1234 description=
"Names of the input layers to rotate",
1237 in_rotation: InRotation = Field(default_factory=InRotation, alias=
"InRotation")
1240 model_config = ConfigDict(populate_by_name=
True)
1243 @brief SpinR2 rotation transformation
1245 @param apply bool. Apply SpinR2 transformation
1246 @param learn bool. Learn rotation matrix
1247 @param matrix_path str. Path to rotation matrix file
1249 apply: bool = Field(default=
False, description=
"Apply SpinR2 transformation")
1250 learn: bool = Field(default=
False, description=
"Learn rotation matrix")
1251 matrix_path: str = Field(
1252 default=
"", alias=
"matrixPath", description=
"Path to rotation matrix file"
1255 spin_r2: SpinR2 = Field(default_factory=SpinR2, alias=
"SpinR2")
1258 model_config = ConfigDict(populate_by_name=
True)
1261 @brief QK rotation transformation
1263 @param apply bool. Apply QK rotation transformation
1264 @param matrix_path str. Path to rotation matrix file
1266 apply: bool = Field(
1267 default=
False, description=
"Apply QK rotation transformation"
1269 matrix_path: str = Field(
1270 default=
"", alias=
"matrixPath", description=
"Path to rotation matrix file"
1273 qk_rotation: QkRotation = Field(default_factory=QkRotation, alias=
"QKRotation")
1276 model_config = ConfigDict(populate_by_name=
True)
1279 @brief Flatten quantization transformation
1281 @param apply bool. Apply flatten quantization
1282 @param learn bool. Learn flattening parameters
1283 @param apply_threshold float. Threshold for applying flatten quantization
1284 @param max_overhead float. Maximum overhead allowed for flattening
1286 apply: bool = Field(default=
False, description=
"Apply flatten quantization")
1287 learn: bool = Field(default=
False, description=
"Learn flattening parameters")
1288 apply_threshold: float = Field(
1290 alias=
"applyThreshold",
1291 description=
"Threshold for applying flatten quantization",
1293 max_overhead: float = Field(
1295 alias=
"maxOverhead",
1296 description=
"Maximum overhead allowed for flattening",
1299 flatten_quant: FlattenQuant = Field(
1300 default_factory=FlattenQuant, alias=
"FlattenQuant"
1304 model_config = ConfigDict(populate_by_name=
True)
1307 @brief FFN optimization
1309 @param apply bool. Apply FFN optimization
1310 @param ch_per_ffn int. Optimize FFN split (-1 for auto)
1312 apply: bool = Field(default=
False, description=
"Apply FFN optimization")
1313 ch_per_ffn: int = Field(
1314 default=-1, alias=
"chPerFFN", description=
"Optimize FFN split (-1 for auto)"
1317 optimize_ffn: OptimizeFfn = Field(default_factory=OptimizeFfn, alias=
"OptimizeFFN")
1320 """Return a copy with updated fields."""
1321 return self.model_copy(update=kwargs)
1326 @brief Configuration for weight scale search
1328 @details Defines which transformer components should have their weight scales
1329 searched for optimal quantization.
1331 @param apply bool. If true, apply weight scale search
1332 @param transformer Transformer. Transformer components for weight scale search
1335 model_config = ConfigDict(
1336 populate_by_name=
True,
1340 apply: bool = Field(default=
False, description=
"If true, apply weight scale search")
1344 @brief Transformer components for weight scale search
1346 @param query bool. Search weight scale for query
1347 @param key bool. Search weight scale for key
1348 @param value bool. Search weight scale for value
1349 @param out bool. Search weight scale for output
1350 @param ffn bool. Search weight scale for FFN
1353 query: bool = Field(default=
False, description=
"Search weight scale for query")
1354 key: bool = Field(default=
False, description=
"Search weight scale for key")
1355 value: bool = Field(default=
False, description=
"Search weight scale for value")
1356 out: bool = Field(default=
False, description=
"Search weight scale for output")
1357 ffn: bool = Field(default=
False, description=
"Search weight scale for FFN")
1359 transformer: Transformer = Field(default_factory=Transformer, alias=
"transformer")
1362 """Return a copy with updated fields."""
1363 return self.model_copy(update=kwargs)
1368 @brief Runtime options for compilation
1370 @details Contains runtime-specific settings like version info and cache options.
1372 @param version str. Compiler version string (e.g., 0.0.0)
1375 model_config = ConfigDict(
1376 populate_by_name=
True,
1380 version: str = Field(
1381 default=
"0.0.0", description=
"Compiler version string (e.g., 0.0.0)"
1385 """Return a copy with updated fields."""
1386 return self.model_copy(update=kwargs)
1391 @brief Sample data generation and saving configuration
1393 @param apply bool. Enable sample data saving
1394 @param mode str. Inference mode: infer (standard) or inferWithCache (LLM cache models)
1395 @param batch_size int. Number of inference batches to generate
1396 @param batch_seq_lens List. Per-batch step-wise sequence lengths for inferWithCache mode. e.g. [[80, 1], [240, 10]]
1397 @param save_folder str. Output folder for sample data
1398 @param dtype str. Data type for saved samples: float or int8
1401 model_config = ConfigDict(
1402 populate_by_name=
True,
1406 apply: bool = Field(default=
False, description=
"Enable sample data saving")
1409 description=
"Inference mode: infer (standard) or inferWithCache (LLM cache models)",
1411 batch_size: int = Field(
1414 description=
"Number of inference batches to generate",
1416 batch_seq_lens: Any = Field(
1418 alias=
"batchSeqLens",
1419 description=
"Per-batch step-wise sequence lengths for inferWithCache mode. e.g. [[80, 1], [240, 10]]",
1421 save_folder: str = Field(
1422 default=
"sampleInout",
1424 description=
"Output folder for sample data",
1427 default=
"float", description=
"Data type for saved samples: float or int8"
1431 """Return a copy with updated fields."""
1432 return self.model_copy(update=kwargs)
1436 """Unified compilation configuration for Mobilint MXQ compilation."""
1438 model_config = ConfigDict(
1439 populate_by_name=
True,
1443 model_paths: List[str] = Field(
1444 default=[], alias=
"modelPaths", description=
"Paths to model files"
1446 calib_data_path: List[str] = Field(
1447 default=[], alias=
"calibDataPaths", description=
"Paths to calibration datasets"
1449 save_paths: List[str] = Field(
1450 default=[
"./tmp.mxq"],
1452 description=
"Output MXQ filename/paths",
1454 use_random_calib: bool = Field(
1455 default=
False, alias=
"useRandomCalib", description=
"Use random calibration"
1457 save_msgpack_name: Optional[str] = Field(
1459 alias=
"saveMsgpackName",
1460 description=
"Name of the msgpack file to save",
1462 inference_scheme: str = Field(
1463 default=
"single", alias=
"inferenceScheme", description=
"NPU inference scheme"
1465 cpu_offload: bool = Field(
1468 description=
"Enable CPU offload for unsupported operators",
1470 force_npu_input_reposition: bool = Field(
1472 alias=
"forceNpuInputReposition",
1473 description=
"Force input reposition operations to run on NPU instead of CPU",
1475 force_npu_output_reposition: bool = Field(
1477 alias=
"forceNpuOutputReposition",
1478 description=
"Force output reposition operations to run on NPU instead of CPU",
1480 optimize_option: int = Field(
1482 alias=
"optimizeOption",
1483 description=
"Compiler optimization selector",
1486 buffer_mode: int = Field(
1487 default=1, alias=
"bufferMode", description=
"Buffer serialization mode"
1489 input_shape_dict: Any = Field(
1490 default={}, alias=
"inputShapeDict", description=
"Dictionary of input shapes"
1492 device: str = Field(default=
"gpu", description=
"Device for computation")
1493 dtype: str = Field(default=
"float", description=
"Data type for computation")
1494 debug: bool = Field(default=
False, description=
"Enable debug mode")
1495 trace: bool = Field(default=
False, description=
"Enable trace mode")
1496 image_channels: int = Field(
1498 alias=
"imageChannels",
1499 description=
"Number of image channels (0 for auto-detect)",
1501 config_version: str = Field(
1502 default=
"1.0.0", alias=
"configVersion", description=
"Config schema version"
1504 split_blocks: List[int] = Field(
1506 alias=
"splitBlocks",
1507 description=
"Multi-MXQ split points by transformer block index",
1509 split_parts: int = Field(
1512 description=
"Evenly split transformer blocks into N MXQ parts",
1515 uint8_input: Uint8InputConfig = Field(
1516 default_factory=Uint8InputConfig, alias=
"uint8Input"
1518 preprocessing: PreprocessingConfig = Field(default_factory=PreprocessingConfig)
1519 resource_management: ResourceManagementConfig = Field(
1520 default_factory=ResourceManagementConfig, alias=
"resourceManagement"
1522 calibration: CalibrationConfig = Field(default_factory=CalibrationConfig)
1523 bit: BitConfig = Field(default_factory=BitConfig)
1524 optq: OptqConfig = Field(default_factory=OptqConfig)
1525 mod: ModConfig = Field(default_factory=ModConfig)
1526 llm: LlmConfig = Field(default_factory=LlmConfig)
1527 equivalent_transformation: EquivalentTransformationConfig = Field(
1528 default_factory=EquivalentTransformationConfig, alias=
"equivalentTransformation"
1530 search_weight_scale: SearchWeightScaleConfig = Field(
1531 default_factory=SearchWeightScaleConfig, alias=
"searchWeightScale"
1533 runtime_options: RuntimeOptions = Field(
1534 default_factory=RuntimeOptions, alias=
"runtimeOptions"
1536 save_sample: SaveSampleConfig = Field(
1537 default_factory=SaveSampleConfig, alias=
"saveSample"
1541 """Return a copy with uint8_input settings enabled."""
1542 data = {
"apply":
True, **kwargs}
1543 new_cfg = self.
uint8_input.model_copy(update=data)
1544 return self.model_copy(update={
"uint8_input": new_cfg})
1547 """Return a copy with preprocessing settings enabled."""
1548 data = {
"apply":
True, **kwargs}
1550 return self.model_copy(update={
"preprocessing": new_cfg})
1553 """Return a copy with optq settings enabled."""
1554 data = {
"apply":
True, **kwargs}
1555 new_cfg = self.
optq.model_copy(update=data)
1556 return self.model_copy(update={
"optq": new_cfg})
1559 """Return a copy with mod settings enabled."""
1560 data = {
"apply":
True, **kwargs}
1561 new_cfg = self.
mod.model_copy(update=data)
1562 return self.model_copy(update={
"mod": new_cfg})
1565 """Return a copy with llm settings enabled."""
1566 data = {
"apply":
True, **kwargs}
1567 new_cfg = self.
llm.model_copy(update=data)
1568 return self.model_copy(update={
"llm": new_cfg})
1571 """Return a copy with search_weight_scale settings enabled."""
1572 data = {
"apply":
True, **kwargs}
1574 return self.model_copy(update={
"search_weight_scale": new_cfg})
1577 """Return a copy with save_sample settings enabled."""
1578 data = {
"apply":
True, **kwargs}
1579 new_cfg = self.
save_sample.model_copy(update=data)
1580 return self.model_copy(update={
"save_sample": new_cfg})
1583 def from_file(cls, path: Union[str, Path]) ->
"CompileConfig":
1584 """Load config from YAML or JSON file."""
1586 with open(path)
as f:
1587 if path.suffix
in (
".yaml",
".yml"):
1588 data = yaml.safe_load(f)
1592 return cls.model_validate(data)
1596 """Flatten grouped JSON keys (e.g. quantization.calibration) to flat structure."""
1598 if "quantization" in data:
1599 group = data.pop(
"quantization")
1600 if "calibration" in group:
1601 data[
"calibration"] = group[
"calibration"]
1603 data[
"bit"] = group[
"bit"]
1604 if "advancedQuantization" in data:
1605 group = data.pop(
"advancedQuantization")
1607 data[
"optq"] = group[
"optq"]
1609 data[
"mod"] = group[
"mod"]
1610 if "EquivalentTransformation" in group:
1611 data[
"equivalentTransformation"] = group[
"EquivalentTransformation"]
1612 if "searchWeightScale" in group:
1613 data[
"searchWeightScale"] = group[
"searchWeightScale"]
1618 """Load config from a preset."""
1619 from .presets
import get_preset
1621 return get_preset(name)
1625 """Group flat keys back into nested JSON structure (inverse of _flatten_grouped_json)."""
1627 quantization_group = {}
1628 if "calibration" in data:
1629 quantization_group[
"calibration"] = data.pop(
"calibration")
1631 quantization_group[
"bit"] = data.pop(
"bit")
1632 if quantization_group:
1633 data[
"quantization"] = quantization_group
1634 advancedQuantization_group = {}
1636 advancedQuantization_group[
"optq"] = data.pop(
"optq")
1638 advancedQuantization_group[
"mod"] = data.pop(
"mod")
1639 if "equivalentTransformation" in data:
1640 advancedQuantization_group[
"EquivalentTransformation"] = data.pop(
1641 "equivalentTransformation"
1643 if "searchWeightScale" in data:
1644 advancedQuantization_group[
"searchWeightScale"] = data.pop(
1647 if advancedQuantization_group:
1648 data[
"advancedQuantization"] = advancedQuantization_group
1651 def to_file(self, path: Union[str, Path]) ->
None:
1652 """Save config to YAML or JSON file."""
1654 data = self.model_dump(by_alias=
True, exclude_none=
True)
1656 with open(path,
"w")
as f:
1657 if path.suffix
in (
".yaml",
".yml"):
1658 yaml.dump(data, f, default_flow_style=
False)
1660 json.dump(data, f, indent=2)
Configuration for bit precision.
"BitConfig" with_updates(self, **kwargs)
Return a copy with updated fields.
Configuration for calibration during quantization.
"CalibrationConfig" with_updates(self, **kwargs)
Return a copy with updated fields.
Unified compilation configuration for Mobilint MXQ compilation.
"CompileConfig" with_optq(self, **kwargs)
Return a copy with optq settings enabled.
"CompileConfig" with_llm(self, **kwargs)
Return a copy with llm settings enabled.
PreprocessingConfig preprocessing
"CompileConfig" from_preset(cls, str name)
Load config from a preset.
"CompileConfig" with_search_weight_scale(self, **kwargs)
Return a copy with search_weight_scale settings enabled.
Uint8InputConfig uint8_input
SearchWeightScaleConfig search_weight_scale
SaveSampleConfig save_sample
"CompileConfig" with_preprocessing(self, **kwargs)
Return a copy with preprocessing settings enabled.
dict _flatten_grouped_json(dict data)
Flatten grouped JSON keys (e.g.
"CompileConfig" with_mod(self, **kwargs)
Return a copy with mod settings enabled.
dict _group_to_json(dict data)
Group flat keys back into nested JSON structure (inverse of _flatten_grouped_json).
"CompileConfig" with_save_sample(self, **kwargs)
Return a copy with save_sample settings enabled.
"CompileConfig" from_file(cls, Union[str, Path] path)
Load config from YAML or JSON file.
None to_file(self, Union[str, Path] path)
Save config to YAML or JSON file.
"CompileConfig" with_uint8_input(self, **kwargs)
Return a copy with uint8_input settings enabled.
Configuration for Large Language Model (LLM) compilation.
"LlmConfig" with_updates(self, **kwargs)
Return a copy with updated fields.
Configuration for Minimum Output Difference algorithm.
"ModConfig" with_updates(self, **kwargs)
Return a copy with updated fields.
Configuration for OPTQ algorithm.
"OptqConfig" with_updates(self, **kwargs)
Return a copy with updated fields.
Configuration for input preprocessing pipeline.
"PreprocessingConfig" with_updates(self, **kwargs)
Return a copy with updated fields.
Weight memory management configuration.
Configuration for resource management during model compilation.
"ResourceManagementConfig" with_updates(self, **kwargs)
Return a copy with updated fields.
Runtime options for compilation.
"RuntimeOptions" with_updates(self, **kwargs)
Return a copy with updated fields.
Sample data generation and saving configuration.
"SaveSampleConfig" with_updates(self, **kwargs)
Return a copy with updated fields.
Configuration for weight scale search.
"SearchWeightScaleConfig" with_updates(self, **kwargs)
Return a copy with updated fields.