advanced_quantization_config.py Source File

advanced_quantization_config.py Source File#

Mobilint SDK qb Compiler: advanced_quantization_config.py Source File
Mobilint SDK qb Compiler v1.0
MCS002-KR
advanced_quantization_config.py
1from typing import Optional
2from typeguard import typechecked
3from . import ConfigABC
4from .optq_config import OptqConfig
5from .mod_config import ModConfig
6from .equivalent_transformation_config import EquivalentTransformationConfig
7from .search_weight_scale_config import SearchWeightScaleConfig
8
9
15
16
18 """
19 @brief Configuration for advanced quantization options used during quantization.
20 @details Unified configuration for advanced quantization techniques, including OPTQ, MOD, Equivalent Transformation, and Weight Scale Search.
21
22 """
23
24 optional = False
25
26 @typechecked
28 self,
29 optq: Optional[OptqConfig] = None,
30 mod: Optional[ModConfig] = None,
31 equivalent_transformation: Optional[EquivalentTransformationConfig] = None,
32 search_weight_scale: Optional[SearchWeightScaleConfig] = None,
33 optional: bool = optional,
34 ):
35 """
36 @param optq OptqConfig. OPTQ configuration.
37 @param mod ModConfig. MOD configuration.
38 @param equivalent_transformation EquivalentTransformationConfig. Equivalent transformation configuration.
39 @param search_weight_scale SearchWeightScaleConfig. Weight scale search configuration.
40 @param optional bool. Indicates whether this config is optional. Use the default value defined as a class variable.
41 """
42 super().__init__(optional)
43 self.optq = optq or OptqConfig.default_config()
44 self.mod = mod or ModConfig.default_config()
46 equivalent_transformation or EquivalentTransformationConfig.default_config()
47 )
48 self.search_weight_scale = (
49 search_weight_scale or SearchWeightScaleConfig.default_config()
50 )
51
52 @classmethod
53 def default_config(cls):
55 optq=OptqConfig.default_config(),
56 mod=ModConfig.default_config(),
57 equivalent_transformation=EquivalentTransformationConfig.default_config(),
58 search_weight_scale=SearchWeightScaleConfig.default_config(),
59 optional=cls.optional,
60 )
61
62 @classmethod
63 def from_dict(cls, config_dict: dict):
64 """Create AdvancedQuantizationConfig from dictionary (JSON structure)"""
65 optq_dict = config_dict.get("optq", {})
66 mod_dict = config_dict.get("mod", {})
67 et_dict = config_dict.get("EquivalentTransformation", {})
68 sws_dict = config_dict.get("searchWeightScale", {})
69
70 return cls(
71 optq=OptqConfig.from_dict(optq_dict),
72 mod=ModConfig.from_dict(mod_dict),
73 equivalent_transformation=EquivalentTransformationConfig.from_dict(et_dict),
74 search_weight_scale=SearchWeightScaleConfig.from_dict(sws_dict),
75 )
76
77 def to_dict(self):
78 return {
79 "advancedQuantization": {
80 "optq": self.optq.to_dict(),
81 "mod": self.mod.to_dict(),
82 "EquivalentTransformation": self.equivalent_transformation.to_dict(),
83 "searchWeightScale": self.search_weight_scale.to_dict(),
84 }
85 }
86
87
89 optq: Optional[OptqConfig] = None,
90 mod: Optional[ModConfig] = None,
91 equivalent_transformation: Optional[EquivalentTransformationConfig] = None,
92 search_weight_scale: Optional[SearchWeightScaleConfig] = None,
93) -> AdvancedQuantizationConfig:
94 """
95 @brief Create AdvancedQuantizationConfig with EquivalentTransformationConfig and SearchWeightScaleConfig.
96 """
98 optq=optq,
99 mod=mod,
100 equivalent_transformation=equivalent_transformation,
101 search_weight_scale=search_weight_scale,
102 optional=AdvancedQuantizationConfig.optional,
103 )
104
105
106# @}
Configuration for advanced quantization options used during quantization.
from_dict(cls, dict config_dict)
Create AdvancedQuantizationConfig from dictionary (JSON structure)
AdvancedQuantizationConfig get_advanced_quantization_config(Optional[OptqConfig] optq=None, Optional[ModConfig] mod=None, Optional[EquivalentTransformationConfig] equivalent_transformation=None, Optional[SearchWeightScaleConfig] search_weight_scale=None)
Create AdvancedQuantizationConfig with EquivalentTransformationConfig and SearchWeightScaleConfig.
__init__(self, Optional[OptqConfig] optq=None, Optional[ModConfig] mod=None, Optional[EquivalentTransformationConfig] equivalent_transformation=None, Optional[SearchWeightScaleConfig] search_weight_scale=None, bool optional=optional)