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_calib_data_size int. Maximum number of calibration samples kept after loading or generation
175 @param max_percentile MaxPercentile. MaxPercentile mode configuration
176 @param fast_dist FastDist. Fast distribution calibration configuration
177 @param histogram Histogram. Histogram-based calibration configuration
178 @param layer_overrides LayerOverrides. Layer-specific override settings for calibration
179 @param statistics Statistics. Statistics save/load configuration with percentile selection
182 model_config = ConfigDict(
183 populate_by_name=
True,
187 method_list: List[str] = Field(
188 default=[
"WChALayer",
"WChAMulti",
"WChALayerZeropoint",
"WChAMultiZeropoint"],
191 method: int = Field(default=1, alias=
"method")
192 output_list: List[str] = Field(
193 default=[
"Layer",
"Ch",
"Sigmoid"], alias=
"outputList"
195 output: int = Field(default=0, alias=
"output")
196 mode_list: List[str] = Field(
197 default=[
"Max",
"MaxPercentile",
"Histogram"], alias=
"modeList"
199 mode: int = Field(default=1, alias=
"mode")
200 clustering_methods_list: List[str] = Field(
210 alias=
"clusteringMethodsList",
212 clustering_methods: List[int] = Field(default=[0], alias=
"clusteringMethods")
214 act_scale_min: float = Field(
217 description=
"Minimum allowed activation scale (lower bound clamp)",
221 act16_scale_min: float = Field(
222 default=1.953125e-06,
223 alias=
"act16ScaleMin",
224 description=
"Minimum 16-bit activation scale (actScaleMin / 256)",
226 weight_scale_min: float = Field(
228 alias=
"weightScaleMin",
229 description=
"Minimum allowed weight scale (lower bound clamp)",
233 weight16_scale_min: float = Field(
235 alias=
"weight16ScaleMin",
236 description=
"Minimum 16-bit weight scale (weightScaleMin / 256)",
238 min_clip_ratio: float = Field(
240 alias=
"minClipRatio",
241 description=
"Minimum clip ratio constraint applied during calibration",
245 max_calib_data_size: int = Field(
247 alias=
"maxCalibDataSize",
248 description=
"Maximum number of calibration samples kept after loading or generation",
253 model_config = ConfigDict(populate_by_name=
True)
256 @brief MaxPercentile mode configuration
258 @param percentile float. Percentile value for maxPercentile mode
259 @param topk_ratio float. Top-k ratio used in maxPercentile mode
260 @param max_each int. Maximum number of samples processed per iteration
261 @param max_total int. Total maximum number of samples
262 @param per_ch_divisor int. Divisor for per-channel buffer capacity (bufferCap = max(maxTotal / perChDivisor, maxEach))
264 percentile: float = Field(
265 default=0.9999, description=
"Percentile value for maxPercentile mode"
267 topk_ratio: float = Field(
270 description=
"Top-k ratio used in maxPercentile mode",
272 max_each: int = Field(
275 description=
"Maximum number of samples processed per iteration",
277 max_total: int = Field(
280 description=
"Total maximum number of samples",
282 per_ch_divisor: int = Field(
284 alias=
"perChDivisor",
285 description=
"Divisor for per-channel buffer capacity (bufferCap = max(maxTotal / perChDivisor, maxEach))",
289 max_percentile: MaxPercentile = Field(
290 default_factory=MaxPercentile, alias=
"maxPercentile"
294 model_config = ConfigDict(populate_by_name=
True)
297 @brief Fast distribution calibration configuration
299 @param size_cali int.
300 @param kernel_size int.
301 @param stack_size int.
303 size_cali: int = Field(default=100, alias=
"sizeCali")
304 kernel_size: int = Field(default=9, alias=
"kernelSize")
305 stack_size: int = Field(default=32768, alias=
"stackSize")
307 fast_dist: FastDist = Field(default_factory=FastDist, alias=
"fastDist")
310 model_config = ConfigDict(populate_by_name=
True)
313 @brief Histogram-based calibration configuration
315 @param search_type int. Search type for histogram calibration:<br>
319 @param percentile float. Percentile value for histogram calibration
320 @param use_gpu bool. Use GPU for histogram computation
321 @param num_bins int. Number of bins for histogram
322 @param num_samples int. Number of samples for histogram calibration
323 @param buffer_size int. Buffer size for histogram computation (-1 for auto)
324 @param min_bin_width float. Minimum bin width for histogram
325 @param search_percentile_min float. Minimum search percentile
326 @param search_percentile_max float. Maximum search percentile
327 @param num_search int. Number of search iterations
329 search_type_list: List[str] = Field(
330 default=[
"Percentile",
"MSE",
"KL"], alias=
"searchTypeList"
332 search_type: int = Field(default=0, alias=
"searchType")
333 percentile: float = Field(
334 default=0.9999, description=
"Percentile value for histogram calibration"
336 use_gpu: bool = Field(
339 description=
"Use GPU for histogram computation",
341 num_bins: int = Field(
342 default=256, alias=
"numBins", description=
"Number of bins for histogram"
344 num_samples: int = Field(
347 description=
"Number of samples for histogram calibration",
349 buffer_size: int = Field(
352 description=
"Buffer size for histogram computation (-1 for auto)",
354 min_bin_width: float = Field(
357 description=
"Minimum bin width for histogram",
359 search_percentile_min: float = Field(
361 alias=
"searchPercentileMin",
362 description=
"Minimum search percentile",
364 search_percentile_max: float = Field(
366 alias=
"searchPercentileMax",
367 description=
"Maximum search percentile",
369 num_search: int = Field(
370 default=128, alias=
"numSearch", description=
"Number of search iterations"
373 histogram: Histogram = Field(default_factory=Histogram, alias=
"histogram")
376 model_config = ConfigDict(populate_by_name=
True)
379 @brief Layer-specific override settings for calibration
381 @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']})
382 @param percentile dict. Per-layer maxPercentile percentile overrides. Keys are layer names, values are percentile floats. (e.g. {'/model/layer0/conv': 0.999, '/model/layer5/attn': 0.99})
384 act_scale_min: Any = Field(
387 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']})",
389 percentile: Any = Field(
391 description=
"Per-layer maxPercentile percentile overrides. Keys are layer names, values are percentile floats. (e.g. {'/model/layer0/conv': 0.999, '/model/layer5/attn': 0.99})",
395 description=
"Per-layer quantization method overrides. Keys are layer names, values are method ints (0=WChALayer, 1=WChAMulti, 2=WChALayerZeropoint asym, 3=WChAMultiZeropoint asym). (e.g. {'/model/layer0/conv': 3})",
398 layer_overrides: LayerOverrides = Field(
399 default_factory=LayerOverrides, alias=
"layerOverrides"
403 model_config = ConfigDict(populate_by_name=
True)
406 @brief Statistics save/load configuration with percentile selection
408 @param apply bool. Enable statistics save/load
409 @param save_path str. Path to save statistics. If empty, not saved
410 @param load_path str. Path to load statistics. If empty, not loaded
411 @param percentiles List[float]. List of percentile candidates
412 @param percentile_index int. Index into percentiles list to select active percentile
414 apply: bool = Field(default=
False, description=
"Enable statistics save/load")
415 save_path: str = Field(
418 description=
"Path to save statistics. If empty, not saved",
420 load_path: str = Field(
423 description=
"Path to load statistics. If empty, not loaded",
425 percentiles: List[float] = Field(
426 default=[0.9999, 0.999, 0.99, 0.9],
427 description=
"List of percentile candidates",
429 percentile_index: int = Field(
431 alias=
"percentileIndex",
432 description=
"Index into percentiles list to select active percentile",
435 statistics: Statistics = Field(default_factory=Statistics, alias=
"statistics")
438 """Return a copy with updated fields."""
439 return self.model_copy(update=kwargs)
444 @brief Configuration for bit precision
446 @details Defines bit-width parameterization for activations and weights used in
447 mixed-precision quantization (e.g., attention and FFN components).
449 @param transformer Transformer. Transformer-specific bit-width configuration
450 @param save_info SaveInfo. Bit allocation save/load configuration
451 @param layer_overrides LayerOverrides. Layer-specific bit-width override settings
454 model_config = ConfigDict(
455 populate_by_name=
True,
460 model_config = ConfigDict(populate_by_name=
True)
463 @brief Transformer-specific bit-width configuration
465 @param activation Activation. Activation bit-widths for transformer components
466 @param weight Weight. Weight bit-widths for transformer components
467 @param mixed_precision MixedPrecision. Mixed precision configuration
472 @brief Activation bit-widths for transformer components
474 @param query int. Query activation bit-width
475 @param key int. Key activation bit-width
476 @param value int. Value activation bit-width
477 @param output int. Output activation bit-width
478 @param ffn int. FFN activation bit-width
479 @param head int. Head activation bit-width
482 query: int = Field(default=8, description=
"Query activation bit-width")
483 key: int = Field(default=8, description=
"Key activation bit-width")
484 value: int = Field(default=8, description=
"Value activation bit-width")
485 output: int = Field(default=16, description=
"Output activation bit-width")
486 ffn: int = Field(default=16, description=
"FFN activation bit-width")
487 head: int = Field(default=8, description=
"Head activation bit-width")
489 activation: Activation = Field(default_factory=Activation, alias=
"activation")
493 @brief Weight bit-widths for transformer components
495 @param query int. Query weight bit-width
496 @param key int. Key weight bit-width
497 @param value int. Value weight bit-width
498 @param output int. Output weight bit-width
499 @param ffn int. FFN weight bit-width
500 @param head int. Head weight bit-width
503 query: int = Field(default=8, description=
"Query weight bit-width")
504 key: int = Field(default=8, description=
"Key weight bit-width")
505 value: int = Field(default=8, description=
"Value weight bit-width")
506 output: int = Field(default=8, description=
"Output weight bit-width")
507 ffn: int = Field(default=8, description=
"FFN weight bit-width")
508 head: int = Field(default=8, description=
"Head weight bit-width")
510 weight: Weight = Field(default_factory=Weight, alias=
"weight")
513 model_config = ConfigDict(populate_by_name=
True)
516 @brief Mixed precision configuration
518 @param weight Weight. Mixed precision configuration for weights
519 @param activation Activation. Per-layer activation mixed precision configuration
523 model_config = ConfigDict(populate_by_name=
True)
526 @brief Mixed precision configuration for weights
528 @param apply bool. If true, apply mixed-precision according to the specified bit-widths
529 @param type_wise bool. Apply type-wise mixed precision
530 @param prune float. Pruning ratio
531 @param bit_2 float. Ratio of 2-bit quantization
532 @param bit_4 float. Ratio of 4-bit quantization
533 @param bit_8 float. Ratio of 8-bit quantization
534 @param importance_threshold_low float. Low importance threshold
535 @param importance_threshold_high float. High importance threshold
539 description=
"If true, apply mixed-precision according to the specified bit-widths",
541 type_wise: bool = Field(
544 description=
"Apply type-wise mixed precision",
546 prune: float = Field(default=0, description=
"Pruning ratio")
547 bit_2: float = Field(
548 default=0, alias=
"bit2", description=
"Ratio of 2-bit quantization"
550 bit_4: float = Field(
551 default=0, alias=
"bit4", description=
"Ratio of 4-bit quantization"
553 bit_8: float = Field(
554 default=1, alias=
"bit8", description=
"Ratio of 8-bit quantization"
556 importance_threshold_low: float = Field(
558 alias=
"importanceThreshold_low",
559 description=
"Low importance threshold",
561 importance_threshold_high: float = Field(
563 alias=
"importanceThreshold_high",
564 description=
"High importance threshold",
567 weight: Weight = Field(default_factory=Weight, alias=
"weight")
570 model_config = ConfigDict(populate_by_name=
True)
573 @brief Per-layer activation mixed precision configuration
575 @param apply bool. If true, apply per-layer activation mixed precision
576 @param ratio_16bit float. Ratio of layers assigned 16-bit (used when importanceThreshold < 0)
577 @param importance_threshold float. Normalized importance threshold for 16-bit assignment (negative = use ratio_16bit)
578 @param search_range int. Target layer range: -1=all layers, N=first N layers
582 description=
"If true, apply per-layer activation mixed precision",
584 ratio_16bit: float = Field(
587 description=
"Ratio of layers assigned 16-bit (used when importanceThreshold < 0)",
589 importance_threshold: float = Field(
591 alias=
"importanceThreshold",
592 description=
"Normalized importance threshold for 16-bit assignment (negative = use ratio_16bit)",
594 search_range: int = Field(
597 description=
"Target layer range: -1=all layers, N=first N layers",
600 activation: Activation = Field(
601 default_factory=Activation, alias=
"activation"
604 mixed_precision: MixedPrecision = Field(
605 default_factory=MixedPrecision, alias=
"mixedPrecision"
608 transformer: Transformer = Field(default_factory=Transformer, alias=
"transformer")
611 model_config = ConfigDict(populate_by_name=
True)
614 @brief Bit allocation save/load configuration
616 @param save_path str. Path to save the bit allocation. If empty, not saved
617 @param load_path str. Path to load the bit allocation. If empty, not loaded
619 save_path: str = Field(
622 description=
"Path to save the bit allocation. If empty, not saved",
624 load_path: str = Field(
627 description=
"Path to load the bit allocation. If empty, not loaded",
630 save_info: SaveInfo = Field(default_factory=SaveInfo, alias=
"saveInfo")
633 model_config = ConfigDict(populate_by_name=
True)
636 @brief Layer-specific bit-width override settings
638 @param activation_16bits list[string]. Layer names to force 16-bit activations
639 @param weight_16bits list[string]. Layer names to force 16-bit weights
641 activation_16bits: List[str] = Field(
643 alias=
"activation16Bits",
644 description=
"Layer names to force 16-bit activations",
646 weight_16bits: List[str] = Field(
648 alias=
"weight16Bits",
649 description=
"Layer names to force 16-bit weights",
652 layer_overrides: LayerOverrides = Field(
653 default_factory=LayerOverrides, alias=
"layerOverrides"
657 """Return a copy with updated fields."""
658 return self.model_copy(update=kwargs)
663 @brief Configuration for OPTQ algorithm
665 @details Defines parameters controlling whether and how OPTQ is applied during quantization,
666 including layer-level inclusion/exclusion lists.
668 @param apply bool. If true, apply OPTQ
669 @param attributes Attributes. OPTQ algorithm attributes
672 model_config = ConfigDict(
673 populate_by_name=
True,
677 apply: bool = Field(default=
False, description=
"If true, apply OPTQ")
680 model_config = ConfigDict(populate_by_name=
True)
683 @brief OPTQ algorithm attributes
685 @param act_order bool. If true, use activation order
686 @param block_size int. Block size used for OPTQ
687 @param perc_damp float. Percentage dampening factor
688 @param apply_layers List[str]. Layer names to apply OPTQ. If empty, applies to all eligible layers
689 @param exclude_layers List[str]. Layer names to exclude from OPTQ
691 act_order: bool = Field(
692 default=
True, alias=
"actOrder", description=
"If true, use activation order"
694 block_size: int = Field(
695 default=128, alias=
"blockSize", description=
"Block size used for OPTQ"
697 perc_damp: float = Field(
698 default=0.01, alias=
"percDamp", description=
"Percentage dampening factor"
700 apply_layers: List[str] = Field(
703 description=
"Layer names to apply OPTQ. If empty, applies to all eligible layers",
705 exclude_layers: List[str] = Field(
707 alias=
"excludeLayers",
708 description=
"Layer names to exclude from OPTQ",
711 attributes: Attributes = Field(default_factory=Attributes, alias=
"attributes")
714 """Return a copy with updated fields."""
715 return self.model_copy(update=kwargs)
720 @brief Configuration for Minimum Output Difference algorithm
722 @details Defines parameters controlling whether and how MOD is applied during quantization,
723 including layer-level inclusion/exclusion lists.
725 @param apply bool. If true, apply MOD
726 @param attributes Attributes. MOD algorithm attributes
729 model_config = ConfigDict(
730 populate_by_name=
True,
734 apply: bool = Field(default=
False, description=
"If true, apply MOD")
737 model_config = ConfigDict(populate_by_name=
True)
740 @brief MOD algorithm attributes
742 @param epochs int. Number of training epochs
743 @param warmup_epochs int. Number of warmup epochs
744 @param lr_min_ratio float. Minimum learning rate ratio
745 @param save_dir str. Directory to save MOD results
746 @param seed int. Random seed for MOD
747 @param apply_layers List[str]. Layer names to apply MOD. If empty, applies to all eligible layers
748 @param exclude_layers List[str]. Layer names to exclude from MOD
749 @param mod_after_layer_name str. Apply MOD after this layer
750 @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]]]
751 @param use_xyxy bool. Use XYXY format for bounding boxes
752 @param learning_rates LearningRates. Learning rate configuration for MOD
753 @param training Training. MOD training configuration
754 @param loss Loss. MOD loss configuration
755 @param post_processing PostProcessing. Post-processing configuration for detection models
757 epochs: int = Field(default=4, description=
"Number of training epochs")
758 warmup_epochs: int = Field(
759 default=1, alias=
"warmupEpochs", description=
"Number of warmup epochs"
761 lr_min_ratio: float = Field(
764 description=
"Minimum learning rate ratio",
766 save_dir: str = Field(
767 default=
"", alias=
"saveDir", description=
"Directory to save MOD results"
769 seed: int = Field(default=0, description=
"Random seed for MOD")
770 apply_layers: List[str] = Field(
773 description=
"Layer names to apply MOD. If empty, applies to all eligible layers",
775 exclude_layers: List[str] = Field(
777 alias=
"excludeLayers",
778 description=
"Layer names to exclude from MOD",
780 mod_after_layer_name: str = Field(
782 alias=
"modAfterLayerName",
783 description=
"Apply MOD after this layer",
785 anchors: Any = Field(
787 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]]]",
789 use_xyxy: bool = Field(
792 description=
"Use XYXY format for bounding boxes",
796 model_config = ConfigDict(populate_by_name=
True)
799 @brief Learning rate configuration for MOD
801 @param act_scale float. Learning rate for activation scale
802 @param zeropoint float. Learning rate for zeropoint
803 @param weight_scale float. Learning rate for weight scale
804 @param weight float. Learning rate for weight
805 @param bias float. Learning rate for bias
807 act_scale: float = Field(
810 description=
"Learning rate for activation scale",
812 zeropoint: float = Field(
813 default=0.0, description=
"Learning rate for zeropoint"
815 weight_scale: float = Field(
818 description=
"Learning rate for weight scale",
820 weight: float = Field(default=4e-06, description=
"Learning rate for weight")
821 bias: float = Field(default=4e-06, description=
"Learning rate for bias")
823 learning_rates: LearningRates = Field(
824 default_factory=LearningRates, alias=
"learningRates"
828 model_config = ConfigDict(populate_by_name=
True)
831 @brief MOD training configuration
833 @param batch_size int. Batch size for MOD training
834 @param q_drop float. Quantization drop probability
835 @param quantize_weight bool. Whether to quantize weights
836 @param weight_scale_init str. Weight scale initialization method
837 @param downresol_mode str. Downresolution mode
838 @param scheduler_type str. LR scheduler type
840 batch_size: int = Field(
841 default=1, alias=
"batchSize", description=
"Batch size for MOD training"
843 q_drop: float = Field(
844 default=0.0, alias=
"qDrop", description=
"Quantization drop probability"
846 quantize_weight: bool = Field(
848 alias=
"quantizeWeight",
849 description=
"Whether to quantize weights",
851 weight_scale_init: str = Field(
853 alias=
"weightScaleInit",
854 description=
"Weight scale initialization method",
856 downresol_mode: str = Field(
857 default=
"STE", alias=
"downresolMode", description=
"Downresolution mode"
859 scheduler_type: str = Field(
860 default=
"Cosine", alias=
"schedulerType", description=
"LR scheduler type"
863 training: Training = Field(default_factory=Training, alias=
"training")
866 model_config = ConfigDict(populate_by_name=
True)
869 @brief MOD loss configuration
871 @param type str. Loss type (MSE, KL, etc.)
872 @param use_outputs bool. Use model outputs for loss computation
873 @param kl_temperature float. KL divergence temperature
874 @param recon_prob float. Reconstruction probability
875 @param recon_coeff float. Reconstruction coefficient
876 @param lambda_0 float. Loss weight lambda_0
877 @param lambda_1 float. Loss weight lambda_1
878 @param lambda_2 float. Loss weight lambda_2
879 @param lambda_3 float. Loss weight lambda_3
880 @param custom_loss_jit_path str. Path to custom JIT-compiled loss function. Refer to /workspace/quantizer/pyutils/mel.pt
882 type: str = Field(default=
"MSE", description=
"Loss type (MSE, KL, etc.)")
883 use_outputs: bool = Field(
886 description=
"Use model outputs for loss computation",
888 kl_temperature: float = Field(
890 alias=
"KLTemperature",
891 description=
"KL divergence temperature",
893 recon_prob: float = Field(
894 default=1.0, alias=
"reconProb", description=
"Reconstruction probability"
896 recon_coeff: float = Field(
899 description=
"Reconstruction coefficient",
901 lambda_0: float = Field(
902 default=1.0, alias=
"lambda0", description=
"Loss weight lambda_0"
904 lambda_1: float = Field(
905 default=1.0, alias=
"lambda1", description=
"Loss weight lambda_1"
907 lambda_2: float = Field(
908 default=1.0, alias=
"lambda2", description=
"Loss weight lambda_2"
910 lambda_3: float = Field(
911 default=1.0, alias=
"lambda3", description=
"Loss weight lambda_3"
913 custom_loss_jit_path: str = Field(
915 alias=
"customLossJITPath",
916 description=
"Path to custom JIT-compiled loss function. Refer to /workspace/quantizer/pyutils/mel.pt",
919 loss: Loss = Field(default_factory=Loss, alias=
"loss")
922 model_config = ConfigDict(populate_by_name=
True)
925 @brief Post-processing configuration for detection models
927 @param post str. Post-processing type
928 @param box_conf_thres float. Box confidence threshold
929 @param box_iou_thres float. Box IoU threshold
931 post: str = Field(default=
"", description=
"Post-processing type")
932 box_conf_thres: float = Field(
933 default=0, alias=
"boxConfThres", description=
"Box confidence threshold"
935 box_iou_thres: float = Field(
936 default=0, alias=
"boxIoUThres", description=
"Box IoU threshold"
939 post_processing: PostProcessing = Field(
940 default_factory=PostProcessing, alias=
"postProcessing"
943 attributes: Attributes = Field(default_factory=Attributes, alias=
"attributes")
946 """Return a copy with updated fields."""
947 return self.model_copy(update=kwargs)
952 @brief Configuration for Large Language Model (LLM) compilation
954 @details Defines LLM-specific settings including sequence lengths, cache configurations,
955 and runtime parameters for efficient LLM inference.
957 @param apply bool. If True, apply LLM-specific configurations
958 @param npu_parallel_degree int. Number of NPU partitions for FFN tensor parallelism (1 = disabled). Applied before OptimizeFFN if both active.
959 @param attributes Attributes. LLM attributes configuration
962 model_config = ConfigDict(
963 populate_by_name=
True,
968 default=
False, description=
"If True, apply LLM-specific configurations"
970 npu_parallel_degree: int = Field(
972 alias=
"npuParallelDegree",
973 description=
"Number of NPU partitions for FFN tensor parallelism (1 = disabled). Applied before OptimizeFFN if both active.",
977 model_config = ConfigDict(populate_by_name=
True)
980 @brief LLM attributes configuration
982 @param max_data_length int. Maximum data length
983 @param max_sequence_length int. Maximum sequence length
984 @param max_cache_length int. Maximum cache length
985 @param max_core_data_length int. Maximum core data length
986 @param calibration Calibration. LLM calibration settings
987 @param runtime Runtime. LLM runtime settings
988 @param debug Debug. LLM debug settings
990 max_data_length: int = Field(
991 default=4096, alias=
"maxDataLength", description=
"Maximum data length"
993 max_sequence_length: int = Field(
995 alias=
"maxSequenceLength",
996 description=
"Maximum sequence length",
998 max_cache_length: int = Field(
999 default=4096, alias=
"maxCacheLength", description=
"Maximum cache length"
1001 max_core_data_length: int = Field(
1003 alias=
"maxCoreDataLength",
1004 description=
"Maximum core data length",
1008 model_config = ConfigDict(populate_by_name=
True)
1011 @brief LLM calibration settings
1013 @param random_seq_length int. Random sequence length used for calibration
1014 @param use_full_seq_length bool. If True, use the full sequence length for calibration
1016 random_seq_length: int = Field(
1018 alias=
"randomSeqLength",
1019 description=
"Random sequence length used for calibration",
1021 use_full_seq_length: bool = Field(
1023 alias=
"useFullSeqLength",
1024 description=
"If True, use the full sequence length for calibration",
1027 calibration: Calibration = Field(
1028 default_factory=Calibration, alias=
"calibration"
1032 model_config = ConfigDict(populate_by_name=
True)
1035 @brief LLM runtime settings
1037 @param use_global_core bool. If True, use a global core
1038 @param batch_size int. Batch size
1039 @param npu_core_ids List[int]. List of NPU core IDs
1040 @param dynamic_rope bool. If True, enable dynamic RoPE (rotary position embedding)
1041 @param dynamic_mask bool. If True, enable dynamic mask (attention mask as runtime input)
1043 use_global_core: bool = Field(
1045 alias=
"useGlobalCore",
1046 description=
"If True, use a global core",
1048 batch_size: int = Field(
1049 default=1, alias=
"batchSize", description=
"Batch size"
1051 npu_core_ids: List[int] = Field(
1052 default=[0], alias=
"npuCoreIds", description=
"List of NPU core IDs"
1054 dynamic_rope: bool = Field(
1056 alias=
"dynamicRope",
1057 description=
"If True, enable dynamic RoPE (rotary position embedding)",
1059 dynamic_mask: bool = Field(
1061 alias=
"dynamicMask",
1062 description=
"If True, enable dynamic mask (attention mask as runtime input)",
1065 runtime: Runtime = Field(default_factory=Runtime, alias=
"runtime")
1068 model_config = ConfigDict(populate_by_name=
True)
1071 @brief LLM debug settings
1073 @param apply bool. Enable LLM debug mode
1074 @param batch_debug_bundle_size int. Batch debug bundle size
1076 apply: bool = Field(default=
False, description=
"Enable LLM debug mode")
1077 batch_debug_bundle_size: int = Field(
1079 alias=
"batchDebugBundleSize",
1080 description=
"Batch debug bundle size",
1083 debug: Debug = Field(default_factory=Debug, alias=
"debug")
1085 attributes: Attributes = Field(default_factory=Attributes, alias=
"attributes")
1088 """Return a copy with updated fields."""
1089 return self.model_copy(update=kwargs)
1094 @brief Sparse MoE expert-selection configuration (calibration only)
1096 @details Controls which experts are calibrated inside SparseMoe modules. selectionMode
1097 is a calibration-only knob: it picks which experts collect statistics (and, for
1098 TopK, on which tokens). It does NOT change inference routing — the forward path
1099 always routes the router's top-K experts regardless of this setting.
1100 scoreThreshold is only used when selectionMode is Threshold.
1102 @param selection_mode int. Expert selection mode index (calibration only; inference is always top-K):<br>
1103 0: TopK - Calibrate only the router's top-K experts per token (matches inference routing).<br>
1104 1: All - Calibrate every expert on the full sequence.<br>
1105 2: Threshold - Calibrate all experts whose routing score exceeds scoreThreshold.<br>
1106 @param score_threshold float. Routing score threshold used when selectionMode is Threshold (calibration only)
1109 model_config = ConfigDict(
1110 populate_by_name=
True,
1114 selection_mode_list: List[str] = Field(
1115 default=[
"TopK",
"All",
"Threshold"], alias=
"selectionModeList"
1117 selection_mode: int = Field(default=0, alias=
"selectionMode")
1119 score_threshold: float = Field(
1121 alias=
"scoreThreshold",
1122 description=
"Routing score threshold used when selectionMode is Threshold (calibration only)",
1127 """Return a copy with updated fields."""
1128 return self.model_copy(update=kwargs)
1133 @brief Configuration for equivalent transformation techniques
1135 @details Defines parameters for various equivalent transformation methods including
1136 NormConv, QK smoothing, and rotation matrices for improved quantization.
1138 @param seed int. Random seed for transformation
1139 @param apply_hadamard_rotation_matrix bool. Apply Hadamard rotation matrix
1140 @param norm_conv NormConv. NormConv equivalent transformation
1141 @param qk Qk. QK smoothing transformation
1142 @param ud Ud. UD transformation
1143 @param vo Vo. VO transformation
1144 @param feed_forward_multi_lut FeedForwardMultiLut. Feed-forward multi-LUT transformation
1145 @param spin_r1 SpinR1. SpinR1 rotation transformation
1146 @param head_out_ch_rotation HeadOutChRotation. Head output channel rotation transformation
1147 @param in_rotation InRotation. Input rotation transformation
1148 @param spin_r2 SpinR2. SpinR2 rotation transformation
1149 @param qk_rotation QkRotation. QK rotation transformation
1150 @param flatten_quant FlattenQuant. Flatten quantization transformation
1151 @param optimize_ffn OptimizeFfn. FFN optimization
1154 model_config = ConfigDict(
1155 populate_by_name=
True,
1159 seed: int = Field(default=0, description=
"Random seed for transformation")
1160 apply_hadamard_rotation_matrix: bool = Field(
1162 alias=
"applyHadamardRotationMatrix",
1163 description=
"Apply Hadamard rotation matrix",
1167 model_config = ConfigDict(populate_by_name=
True)
1170 @brief NormConv equivalent transformation
1172 @param apply bool. Apply NormConv transformation
1173 @param learn bool. Learn transformation parameters
1174 @param smoothing_factor float. Smoothing factor
1175 @param min_gamma float. Minimum gamma value
1176 @param max_gamma float. Maximum gamma value
1178 apply: bool = Field(default=
False, description=
"Apply NormConv transformation")
1179 learn: bool = Field(
1180 default=
False, description=
"Learn transformation parameters"
1182 smoothing_factor: float = Field(
1183 default=0.5, alias=
"smoothingFactor", description=
"Smoothing factor"
1185 min_gamma: float = Field(
1186 default=0.0001, alias=
"minGamma", description=
"Minimum gamma value"
1188 max_gamma: float = Field(
1189 default=10000.0, alias=
"maxGamma", description=
"Maximum gamma value"
1192 norm_conv: NormConv = Field(default_factory=NormConv, alias=
"NormConv")
1195 model_config = ConfigDict(populate_by_name=
True)
1198 @brief QK smoothing transformation
1200 @param apply bool. Apply QK transformation
1201 @param smoothing_factor float. Smoothing factor
1202 @param min_gamma float. Minimum gamma value
1203 @param max_gamma float. Maximum gamma value
1205 apply: bool = Field(default=
False, description=
"Apply QK transformation")
1206 smoothing_factor: float = Field(
1207 default=0.5, alias=
"smoothingFactor", description=
"Smoothing factor"
1209 min_gamma: float = Field(
1210 default=0.0001, alias=
"minGamma", description=
"Minimum gamma value"
1212 max_gamma: float = Field(
1213 default=10000.0, alias=
"maxGamma", description=
"Maximum gamma value"
1216 qk: Qk = Field(default_factory=Qk, alias=
"QK")
1219 model_config = ConfigDict(populate_by_name=
True)
1222 @brief UD transformation
1224 @param apply bool. Apply UD transformation
1225 @param learn bool. Learn transformation parameters
1226 @param smoothing_factor float. Smoothing factor
1227 @param min_gamma float. Minimum gamma value
1228 @param max_gamma float. Maximum gamma value
1230 apply: bool = Field(default=
False, description=
"Apply UD transformation")
1231 learn: bool = Field(
1232 default=
False, description=
"Learn transformation parameters"
1234 smoothing_factor: float = Field(
1235 default=0.5, alias=
"smoothingFactor", description=
"Smoothing factor"
1237 min_gamma: float = Field(
1238 default=0.0001, alias=
"minGamma", description=
"Minimum gamma value"
1240 max_gamma: float = Field(
1241 default=10000.0, alias=
"maxGamma", description=
"Maximum gamma value"
1244 ud: Ud = Field(default_factory=Ud, alias=
"UD")
1247 model_config = ConfigDict(populate_by_name=
True)
1250 @brief VO transformation
1252 @param apply bool. Apply VO transformation
1253 @param smoothing_factor float. Smoothing factor
1254 @param min_gamma float. Minimum gamma value
1255 @param max_gamma float. Maximum gamma value
1257 apply: bool = Field(default=
False, description=
"Apply VO transformation")
1258 smoothing_factor: float = Field(
1259 default=0.5, alias=
"smoothingFactor", description=
"Smoothing factor"
1261 min_gamma: float = Field(
1262 default=0.0001, alias=
"minGamma", description=
"Minimum gamma value"
1264 max_gamma: float = Field(
1265 default=10000.0, alias=
"maxGamma", description=
"Maximum gamma value"
1268 vo: Vo = Field(default_factory=Vo, alias=
"VO")
1272 @brief Feed-forward multi-LUT transformation
1274 @param apply bool. Apply feed-forward multi-LUT transformation
1275 @param breakpoints List[float]. Breakpoints for multi-LUT
1278 apply: bool = Field(
1279 default=
False, description=
"Apply feed-forward multi-LUT transformation"
1281 breakpoints: List[float] = Field(
1282 default=[-8.0, -4.0, 0], description=
"Breakpoints for multi-LUT"
1285 feed_forward_multi_lut: FeedForwardMultiLut = Field(
1286 default_factory=FeedForwardMultiLut, alias=
"FeedForwardMultiLUT"
1290 model_config = ConfigDict(populate_by_name=
True)
1293 @brief SpinR1 rotation transformation
1295 @param apply bool. Apply SpinR1 transformation
1296 @param matrix_path str. Path to rotation matrix file
1298 apply: bool = Field(default=
False, description=
"Apply SpinR1 transformation")
1299 matrix_path: str = Field(
1300 default=
"", alias=
"matrixPath", description=
"Path to rotation matrix file"
1303 spin_r1: SpinR1 = Field(default_factory=SpinR1, alias=
"SpinR1")
1306 model_config = ConfigDict(populate_by_name=
True)
1309 @brief Head output channel rotation transformation
1311 @param apply bool. Apply head output channel rotation
1312 @param matrix_path str. Path to rotation matrix file
1314 apply: bool = Field(
1315 default=
False, description=
"Apply head output channel rotation"
1317 matrix_path: str = Field(
1318 default=
"", alias=
"matrixPath", description=
"Path to rotation matrix file"
1321 head_out_ch_rotation: HeadOutChRotation = Field(
1322 default_factory=HeadOutChRotation, alias=
"HeadOutChRotation"
1326 model_config = ConfigDict(populate_by_name=
True)
1329 @brief Input rotation transformation
1331 @param apply bool. Apply input rotation
1332 @param matrix_path str. Path to rotation matrix file
1333 @param input_names List[str]. Names of the input layers to rotate
1335 apply: bool = Field(default=
False, description=
"Apply input rotation")
1336 matrix_path: str = Field(
1337 default=
"", alias=
"matrixPath", description=
"Path to rotation matrix file"
1339 input_names: List[str] = Field(
1342 description=
"Names of the input layers to rotate",
1345 in_rotation: InRotation = Field(default_factory=InRotation, alias=
"InRotation")
1348 model_config = ConfigDict(populate_by_name=
True)
1351 @brief SpinR2 rotation transformation
1353 @param apply bool. Apply SpinR2 transformation
1354 @param learn bool. Learn rotation matrix
1355 @param matrix_path str. Path to rotation matrix file
1357 apply: bool = Field(default=
False, description=
"Apply SpinR2 transformation")
1358 learn: bool = Field(default=
False, description=
"Learn rotation matrix")
1359 matrix_path: str = Field(
1360 default=
"", alias=
"matrixPath", description=
"Path to rotation matrix file"
1363 spin_r2: SpinR2 = Field(default_factory=SpinR2, alias=
"SpinR2")
1366 model_config = ConfigDict(populate_by_name=
True)
1369 @brief QK rotation transformation
1371 @param apply bool. Apply QK rotation transformation
1372 @param matrix_path str. Path to rotation matrix file
1374 apply: bool = Field(
1375 default=
False, description=
"Apply QK rotation transformation"
1377 matrix_path: str = Field(
1378 default=
"", alias=
"matrixPath", description=
"Path to rotation matrix file"
1381 qk_rotation: QkRotation = Field(default_factory=QkRotation, alias=
"QKRotation")
1384 model_config = ConfigDict(populate_by_name=
True)
1387 @brief Flatten quantization transformation
1389 @param apply bool. Apply flatten quantization
1390 @param learn bool. Learn flattening parameters
1391 @param apply_threshold float. Threshold for applying flatten quantization
1392 @param max_overhead float. Maximum overhead allowed for flattening
1394 apply: bool = Field(default=
False, description=
"Apply flatten quantization")
1395 learn: bool = Field(default=
False, description=
"Learn flattening parameters")
1396 apply_threshold: float = Field(
1398 alias=
"applyThreshold",
1399 description=
"Threshold for applying flatten quantization",
1401 max_overhead: float = Field(
1403 alias=
"maxOverhead",
1404 description=
"Maximum overhead allowed for flattening",
1407 flatten_quant: FlattenQuant = Field(
1408 default_factory=FlattenQuant, alias=
"FlattenQuant"
1412 model_config = ConfigDict(populate_by_name=
True)
1415 @brief FFN optimization
1417 @param apply bool. Apply FFN optimization
1418 @param ch_per_ffn int. Optimize FFN split (-1 for auto)
1420 apply: bool = Field(default=
False, description=
"Apply FFN optimization")
1421 ch_per_ffn: int = Field(
1422 default=-1, alias=
"chPerFFN", description=
"Optimize FFN split (-1 for auto)"
1425 optimize_ffn: OptimizeFfn = Field(default_factory=OptimizeFfn, alias=
"OptimizeFFN")
1428 """Return a copy with updated fields."""
1429 return self.model_copy(update=kwargs)
1434 @brief Configuration for weight scale search
1436 @details Defines which transformer components should have their weight scales
1437 searched for optimal quantization.
1439 @param apply bool. If true, apply weight scale search
1440 @param transformer Transformer. Transformer components for weight scale search
1443 model_config = ConfigDict(
1444 populate_by_name=
True,
1448 apply: bool = Field(default=
False, description=
"If true, apply weight scale search")
1452 @brief Transformer components for weight scale search
1454 @param query bool. Search weight scale for query
1455 @param key bool. Search weight scale for key
1456 @param value bool. Search weight scale for value
1457 @param out bool. Search weight scale for output
1458 @param ffn bool. Search weight scale for FFN
1461 query: bool = Field(default=
False, description=
"Search weight scale for query")
1462 key: bool = Field(default=
False, description=
"Search weight scale for key")
1463 value: bool = Field(default=
False, description=
"Search weight scale for value")
1464 out: bool = Field(default=
False, description=
"Search weight scale for output")
1465 ffn: bool = Field(default=
False, description=
"Search weight scale for FFN")
1467 transformer: Transformer = Field(default_factory=Transformer, alias=
"transformer")
1470 """Return a copy with updated fields."""
1471 return self.model_copy(update=kwargs)
1476 @brief QAT activation scale loading configuration
1478 @details Loads pre-trained activation scales from safetensors files and applies them
1479 to specified layers before scale/zeropoint computation.
1480 NOTE: entries is stored as raw JSON (type: list) because the generator does
1481 not support list[CustomStruct]. The schema records the field shape; parsing
1482 is done manually in applyQATLoadScaleQuantType / applyQATLoadScales.
1484 @param apply bool. If true, load and apply QAT scales from safetensors files
1485 @param entries List. List of file entries. Each entry is a dict:
1486 { path: str, scales: [ { key: str, layers: [str] } ] }
1487 path: safetensors file path; key: tensor name in the file;
1488 layers: layer names whose activation scale will be overridden.
1492 model_config = ConfigDict(
1493 populate_by_name=
True,
1497 apply: bool = Field(
1499 description=
"If true, load and apply QAT scales from safetensors files",
1501 entries: Any = Field(
1503 description=
"List of file entries. Each entry is a dict: { path: str, scales: [ { key: str, layers: [str] } ] } path: safetensors file path; key: tensor name in the file; layers: layer names whose activation scale will be overridden.",
1507 """Return a copy with updated fields."""
1508 return self.model_copy(update=kwargs)
1513 @brief Runtime options for compilation
1515 @details Contains runtime-specific settings like version info and cache options.
1517 @param version str. Compiler version string (e.g., 0.0.0)
1520 model_config = ConfigDict(
1521 populate_by_name=
True,
1525 version: str = Field(
1526 default=
"0.0.0", description=
"Compiler version string (e.g., 0.0.0)"
1530 """Return a copy with updated fields."""
1531 return self.model_copy(update=kwargs)
1536 @brief Sample data generation and saving configuration
1538 @param apply bool. Enable sample data saving
1539 @param mode str. Inference mode: infer (standard) or inferWithCache (LLM cache models)
1540 @param batch_size int. Number of inference batches to generate
1541 @param batch_seq_lens List. Per-batch step-wise sequence lengths for inferWithCache mode. e.g. [[80, 1], [240, 10]]
1542 @param save_folder str. Output folder for sample data
1543 @param dtype str. Data type for saved samples: float or int8
1546 model_config = ConfigDict(
1547 populate_by_name=
True,
1551 apply: bool = Field(default=
False, description=
"Enable sample data saving")
1554 description=
"Inference mode: infer (standard) or inferWithCache (LLM cache models)",
1556 batch_size: int = Field(
1559 description=
"Number of inference batches to generate",
1561 batch_seq_lens: Any = Field(
1563 alias=
"batchSeqLens",
1564 description=
"Per-batch step-wise sequence lengths for inferWithCache mode. e.g. [[80, 1], [240, 10]]",
1566 save_folder: str = Field(
1567 default=
"sampleInout",
1569 description=
"Output folder for sample data",
1572 default=
"float", description=
"Data type for saved samples: float or int8"
1576 """Return a copy with updated fields."""
1577 return self.model_copy(update=kwargs)
1581 """Unified compilation configuration for Mobilint MXQ compilation."""
1583 model_config = ConfigDict(
1584 populate_by_name=
True,
1588 model_paths: List[str] = Field(
1589 default=[], alias=
"modelPaths", description=
"Paths to model files"
1591 calib_data_path: List[str] = Field(
1592 default=[], alias=
"calibDataPaths", description=
"Paths to calibration datasets"
1594 save_paths: List[str] = Field(
1595 default=[
"./tmp.mxq"],
1597 description=
"Output MXQ filename/paths",
1599 use_random_calib: bool = Field(
1600 default=
False, alias=
"useRandomCalib", description=
"Use random calibration"
1602 save_msgpack_name: Optional[str] = Field(
1604 alias=
"saveMsgpackName",
1605 description=
"Name of the msgpack file to save",
1607 inference_scheme: str = Field(
1608 default=
"single", alias=
"inferenceScheme", description=
"NPU inference scheme"
1610 cpu_offload: bool = Field(
1613 description=
"Enable CPU offload for unsupported operators",
1615 force_npu_input_reposition: bool = Field(
1617 alias=
"forceNpuInputReposition",
1618 description=
"Force input reposition operations to run on NPU instead of CPU",
1620 force_npu_output_reposition: bool = Field(
1622 alias=
"forceNpuOutputReposition",
1623 description=
"Force output reposition operations to run on NPU instead of CPU",
1625 optimize_option: int = Field(
1627 alias=
"optimizeOption",
1628 description=
"Compiler optimization selector",
1631 buffer_mode: int = Field(
1632 default=1, alias=
"bufferMode", description=
"Buffer serialization mode"
1634 input_shape_dict: Any = Field(
1635 default={}, alias=
"inputShapeDict", description=
"Dictionary of input shapes"
1637 device: str = Field(default=
"gpu", description=
"Device for computation")
1638 dtype: str = Field(default=
"float", description=
"Data type for computation")
1639 debug: bool = Field(default=
False, description=
"Enable debug mode")
1640 trace: bool = Field(default=
False, description=
"Enable trace mode")
1641 image_channels: int = Field(
1643 alias=
"imageChannels",
1644 description=
"Number of image channels (0 for auto-detect)",
1646 config_version: str = Field(
1647 default=
"1.0.0", alias=
"configVersion", description=
"Config schema version"
1649 split_blocks: List[int] = Field(
1651 alias=
"splitBlocks",
1652 description=
"Multi-MXQ split points by transformer block index",
1654 split_parts: int = Field(
1657 description=
"Evenly split transformer blocks into N MXQ parts",
1660 uint8_input: Uint8InputConfig = Field(
1661 default_factory=Uint8InputConfig, alias=
"uint8Input"
1663 preprocessing: PreprocessingConfig = Field(default_factory=PreprocessingConfig)
1664 resource_management: ResourceManagementConfig = Field(
1665 default_factory=ResourceManagementConfig, alias=
"resourceManagement"
1667 calibration: CalibrationConfig = Field(default_factory=CalibrationConfig)
1668 bit: BitConfig = Field(default_factory=BitConfig)
1669 optq: OptqConfig = Field(default_factory=OptqConfig)
1670 mod: ModConfig = Field(default_factory=ModConfig)
1671 llm: LlmConfig = Field(default_factory=LlmConfig)
1672 moe: MoeConfig = Field(default_factory=MoeConfig)
1673 equivalent_transformation: EquivalentTransformationConfig = Field(
1674 default_factory=EquivalentTransformationConfig, alias=
"equivalentTransformation"
1676 search_weight_scale: SearchWeightScaleConfig = Field(
1677 default_factory=SearchWeightScaleConfig, alias=
"searchWeightScale"
1679 load_scale: LoadScaleConfig = Field(
1680 default_factory=LoadScaleConfig, alias=
"loadScale"
1682 runtime_options: RuntimeOptions = Field(
1683 default_factory=RuntimeOptions, alias=
"runtimeOptions"
1685 save_sample: SaveSampleConfig = Field(
1686 default_factory=SaveSampleConfig, alias=
"saveSample"
1690 """Return a copy with uint8_input settings enabled."""
1691 data = {
"apply":
True, **kwargs}
1692 new_cfg = self.
uint8_input.model_copy(update=data)
1693 return self.model_copy(update={
"uint8_input": new_cfg})
1696 """Return a copy with preprocessing settings enabled."""
1697 data = {
"apply":
True, **kwargs}
1699 return self.model_copy(update={
"preprocessing": new_cfg})
1702 """Return a copy with optq settings enabled."""
1703 data = {
"apply":
True, **kwargs}
1704 new_cfg = self.
optq.model_copy(update=data)
1705 return self.model_copy(update={
"optq": new_cfg})
1708 """Return a copy with mod settings enabled."""
1709 data = {
"apply":
True, **kwargs}
1710 new_cfg = self.
mod.model_copy(update=data)
1711 return self.model_copy(update={
"mod": new_cfg})
1714 """Return a copy with llm settings enabled."""
1715 data = {
"apply":
True, **kwargs}
1716 new_cfg = self.
llm.model_copy(update=data)
1717 return self.model_copy(update={
"llm": new_cfg})
1720 """Return a copy with search_weight_scale settings enabled."""
1721 data = {
"apply":
True, **kwargs}
1723 return self.model_copy(update={
"search_weight_scale": new_cfg})
1726 """Return a copy with load_scale settings enabled."""
1727 data = {
"apply":
True, **kwargs}
1728 new_cfg = self.
load_scale.model_copy(update=data)
1729 return self.model_copy(update={
"load_scale": new_cfg})
1732 """Return a copy with save_sample settings enabled."""
1733 data = {
"apply":
True, **kwargs}
1734 new_cfg = self.
save_sample.model_copy(update=data)
1735 return self.model_copy(update={
"save_sample": new_cfg})
1738 def from_file(cls, path: Union[str, Path]) ->
"CompileConfig":
1739 """Load config from YAML or JSON file."""
1741 with open(path)
as f:
1742 if path.suffix
in (
".yaml",
".yml"):
1743 data = yaml.safe_load(f)
1747 return cls.model_validate(data)
1751 """Flatten grouped JSON keys (e.g. quantization.calibration) to flat structure."""
1753 if "quantization" in data:
1754 group = data.pop(
"quantization")
1755 if "calibration" in group:
1756 data[
"calibration"] = group[
"calibration"]
1758 data[
"bit"] = group[
"bit"]
1759 if "advancedQuantization" in data:
1760 group = data.pop(
"advancedQuantization")
1762 data[
"optq"] = group[
"optq"]
1764 data[
"mod"] = group[
"mod"]
1765 if "EquivalentTransformation" in group:
1766 data[
"equivalentTransformation"] = group[
"EquivalentTransformation"]
1767 if "searchWeightScale" in group:
1768 data[
"searchWeightScale"] = group[
"searchWeightScale"]
1769 if "loadScale" in group:
1770 data[
"loadScale"] = group[
"loadScale"]
1775 """Load config from a preset."""
1776 from .presets
import get_preset
1778 return get_preset(name)
1782 """Group flat keys back into nested JSON structure (inverse of _flatten_grouped_json)."""
1784 quantization_group = {}
1785 if "calibration" in data:
1786 quantization_group[
"calibration"] = data.pop(
"calibration")
1788 quantization_group[
"bit"] = data.pop(
"bit")
1789 if quantization_group:
1790 data[
"quantization"] = quantization_group
1791 advancedQuantization_group = {}
1793 advancedQuantization_group[
"optq"] = data.pop(
"optq")
1795 advancedQuantization_group[
"mod"] = data.pop(
"mod")
1796 if "equivalentTransformation" in data:
1797 advancedQuantization_group[
"EquivalentTransformation"] = data.pop(
1798 "equivalentTransformation"
1800 if "searchWeightScale" in data:
1801 advancedQuantization_group[
"searchWeightScale"] = data.pop(
1804 if "loadScale" in data:
1805 advancedQuantization_group[
"loadScale"] = data.pop(
"loadScale")
1806 if advancedQuantization_group:
1807 data[
"advancedQuantization"] = advancedQuantization_group
1810 def to_file(self, path: Union[str, Path]) ->
None:
1811 """Save config to YAML or JSON file."""
1813 data = self.model_dump(by_alias=
True, exclude_none=
True)
1815 with open(path,
"w")
as f:
1816 if path.suffix
in (
".yaml",
".yml"):
1817 yaml.dump(data, f, default_flow_style=
False)
1819 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.
LoadScaleConfig load_scale
Uint8InputConfig uint8_input
SearchWeightScaleConfig search_weight_scale
"CompileConfig" with_load_scale(self, **kwargs)
Return a copy with load_scale settings enabled.
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.
"LoadScaleConfig" 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.
Sparse MoE expert-selection configuration (calibration only)
"MoeConfig" 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.