megengine.quantization.QConfig¶
- class QConfig(weight_observer, act_observer, weight_fake_quant, act_fake_quant)[源代码]¶
A config class indicating how to do quantize toward
QATModule
‘sactivation
andweight
. Seeset_qconfig
for detail usage.- 参数
weight_observer – 创建
Observer
实例的接口,指定获得权重(weight)的scale和zero_point的方法。act_observer – 类似
weight_observer
,但该observer针对激活。weight_fake_quant – 创建
FakeQuantize
实例来指明如何做fake_quant
计算的接口。act_observer – 类似
weight_fake_quant
,但针对激活。
实际案例
# Default EMA QConfig for QAT. ema_fakequant_qconfig = QConfig( weight_observer=partial(MinMaxObserver, dtype="qint8_narrow"), act_observer=partial(ExponentialMovingAverageObserver, dtype="qint8"), weight_fake_quant=partial(FakeQuantize, dtype="qint8_narrow"), act_fake_quant=partial(FakeQuantize, dtype="qint8"), )
每个参数都是一个
class
而不是一个实例。 我们建议使用functools.partial
来添加class
的初始化参数,这样就不需要在set_qconfig
中提供参数。通常我们给权重设置“窄”范围版本 (比如“qint8_narrow”) 的数值类型,给激活值设置普通版本的类型。比如对以下乘加操作的结果
a * b + c * d
,如果四个变量都是数值类型为qint8
的 -128,那么乘加之后的结果是2^15
,而这会超出qint32
的表示范围。而权重的计算方式一般都是这种形式,所以需要将最小值缩窄到 -127 以避免溢出。属性。
Alias for field number 3
Alias for field number 1
Alias for field number 2
Alias for field number 0
方法
count
(value, /)Return number of occurrences of value.
index
(value[, start, stop])Return first index of value.