@@ -114,12 +114,6 @@ def get_observer(self):
114
114
"""
115
115
:return: torch quantization FakeQuantize built based on these QuantizationArgs
116
116
"""
117
-
118
- # No observer required for the dynamic case
119
- if self .dynamic :
120
- self .observer = None
121
- return self .observer
122
-
123
117
return self .observer
124
118
125
119
@field_validator ("type" , mode = "before" )
@@ -203,6 +197,7 @@ def validate_model_after(model: "QuantizationArgs") -> Dict[str, Any]:
203
197
"activation ordering"
204
198
)
205
199
200
+ # infer observer w.r.t. dynamic
206
201
if dynamic :
207
202
if strategy not in (
208
203
QuantizationStrategy .TOKEN ,
@@ -214,18 +209,19 @@ def validate_model_after(model: "QuantizationArgs") -> Dict[str, Any]:
214
209
"quantization" ,
215
210
)
216
211
if observer is not None :
217
- warnings .warn (
218
- "No observer is used for dynamic quantization, setting to None"
219
- )
220
- model .observer = None
212
+ if observer != "memoryless" : # avoid annoying users with old configs
213
+ warnings .warn (
214
+ "No observer is used for dynamic quantization, setting to None"
215
+ )
216
+ observer = None
221
217
222
- # if we have not set an observer and we
223
- # are running static quantization, use minmax
224
- if not observer and not dynamic :
225
- model .observer = "minmax"
218
+ elif observer is None :
219
+ # default to minmax for non-dynamic cases
220
+ observer = "minmax"
226
221
227
222
# write back modified values
228
223
model .strategy = strategy
224
+ model .observer = observer
229
225
return model
230
226
231
227
def pytorch_dtype (self ) -> torch .dtype :
0 commit comments