def __init__(self, scaling_init: Union[float, Tensor], restrict_scaling_impl: Module, scaling_min_val: Optional[float] = None) -> None: super(ConstScaling, self).__init__() self.restrict_clamp_scaling = _RestrictClampValue( scaling_min_val, restrict_scaling_impl) if isinstance(scaling_init, Tensor): scaling_init = restrict_scaling_impl.restrict_init_tensor( scaling_init) self.value = StatelessBuffer(scaling_init.detach()) else: scaling_init = restrict_scaling_impl.restrict_init_float( scaling_init) self.value = StatelessBuffer(torch.tensor(scaling_init))
def __init__(self, stats_reduce_dim: int, sigma: float, std_dev_epsilon: float = DEFAULT_STD_DEV_EPSILON) -> None: super(MeanSigmaStd, self).__init__() self.impl = _MeanSigmaStdImpl(stats_reduce_dim, std_dev_epsilon) self.sigma = StatelessBuffer(torch.tensor(sigma))
def __init__(self, scaling_impl: Module, threshold: float, quant_delay_steps: int = None): super(TernaryQuant, self).__init__() self.scaling_impl = scaling_impl self.threshold = threshold self.bit_width = BitWidthConst(2) self.zero_point = StatelessBuffer(torch.tensor(0.0)) self.delay_wrapper = DelayWrapper(quant_delay_steps)
def __init__( self, scaling_impl: Module, tensor_clamp_impl: Module = TensorClamp(), quant_delay_steps: int = 0): super(ClampedBinaryQuant, self).__init__() self.scaling_impl = scaling_impl self.bit_width = BitWidthConst(1) self.zero_point = StatelessBuffer(torch.tensor(0.0)) self.delay_wrapper = DelayWrapper(quant_delay_steps) self.tensor_clamp_impl = tensor_clamp_impl
def __init__(self, quant_layer: nn.Module, quant_injector: Injector) -> None: super(QuantProxyFromInjector, self).__init__() self.is_signed = _is_signed(quant_injector) self.is_narrow_range = _is_narrow_range(quant_injector) self.update_state_dict_impl = _update_state_dict_impl(quant_injector) self.quant_injector = quant_injector self._zero_hw_sentinel = StatelessBuffer(tensor(0.0)) self.tensor_quant = None # Use a normal list and not a ModuleList since this is a pointer to parent modules self.tracked_module_list = [] self.add_tracked_module(quant_layer)
def __init__(self, negative_slope, alpha_quant=qnn.QuantIdentity(Uint8ActPerTensorFixedPoint, bit_width=16), input_quant=qnn.QuantIdentity(Int8ActPerTensorFixedPoint, bit_width=16, scaling_stats_momentum=None), output_quant=qnn.QuantIdentity(Int8ActPerTensorFixedPoint, return_quant_tensor=True)): super(FlexMLQuantLeakyReLU, self).__init__() self.alpha_quant = alpha_quant self.input_quant = input_quant self.output_quant = output_quant self.negative_slope = StatelessBuffer(torch.tensor(negative_slope))
def __init__(self, quant_layer: nn.Module, quant_injector: Injector, export_mode: bool = False, export_handler: Optional[nn.Module] = None) -> None: super(QuantProxyFromInjector, self).__init__() self.update_state_dict_impl = _update_state_dict_impl(quant_injector) self.quant_injector = quant_injector self._zero_hw_sentinel = StatelessBuffer(tensor(0.0)) self.tensor_quant = None # Use a normal list and not a ModuleList since this is a pointer to parent modules self.tracked_module_list = [] self.add_tracked_module(quant_layer) self.export_handler = export_handler self.export_mode = export_mode self.export_debug_name = None self.export_input_debug = False self.export_output_debug = False self.disable_quant = False
def __init__(self, stats_reduce_dim: Optional[int] = None) -> None: super(NegativeMinOrZero, self).__init__() self.stats_reduce_dim = stats_reduce_dim self.zero = StatelessBuffer(torch.tensor(0.0))
def __init__(self): super(QuantProxy, self).__init__() self._zero_hw_sentinel = StatelessBuffer(tensor(0.0))
def __init__(self, bit_width: int) -> None: super(BitWidthConst, self).__init__() assert isinstance(bit_width, int) self.bit_width = StatelessBuffer(torch.tensor(float(bit_width)))
def __init__(self): super(IdentityQuant, self).__init__() self.minus_one = StatelessBuffer(torch.tensor(-1))
def __init__(self, int_quant: Module, bit_width_impl: Module): super(PrescaledRestrictIntQuant, self).__init__() self.int_quant = int_quant self.msb_clamp_bit_width_impl = bit_width_impl self.int_scale = StatelessBuffer(torch.tensor(1.0))
def __init__(self, int_quant: Module, bit_width_impl: Module): super(PrescaledRestrictIntQuantWithInputBitWidth, self).__init__() self.int_quant = int_quant self.msb_clamp_bit_width_impl = bit_width_impl self.zero_point = StatelessBuffer(torch.tensor(0.0))
def __init__(self, parameter_stats_scaling: StatsFromParameterScaling): self.parameter_stats_scaling = parameter_stats_scaling self.ignored = StatelessBuffer(torch.tensor(0.0))