WQ的max_val为什么是 (1 << self.bits) - 2)?
xingyueye opened this issue · comments
xingyueye commented
你好,我注意到IAO的quantizer中,weights的max_val被设置为 (1 << self.bits) - 2 ,而activation是(1 << self.bits) - 1)。不知道为什么这样设置,两者不应该都是255(8bit)吗?
class UnsignedQuantizer(Quantizer):
def __init__(self, *args, **kwargs):
super(UnsignedQuantizer, self).__init__(*args, **kwargs)
if self.activation_weight_flag == 0: # weight
self.register_buffer(
"quant_min_val", torch.tensor((0), dtype=torch.float32)
)
self.register_buffer(
"quant_max_val",
torch.tensor(((1 << self.bits) - 2), dtype=torch.float32),
)
elif self.activation_weight_flag == 1: # activation
self.register_buffer(
"quant_min_val", torch.tensor((0), dtype=torch.float32)
)
self.register_buffer(
"quant_max_val",
torch.tensor(((1 << self.bits) - 1), dtype=torch.float32),
)
else:
print("activation_weight_flag error")