Пример #1
0
 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))
Пример #2
0
 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))
Пример #3
0
 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)
Пример #4
0
 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
Пример #5
0
 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)
Пример #6
0
 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))
Пример #7
0
 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
Пример #8
0
 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))
Пример #9
0
 def __init__(self):
     super(QuantProxy, self).__init__()
     self._zero_hw_sentinel = StatelessBuffer(tensor(0.0))
Пример #10
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)))
Пример #11
0
 def __init__(self):
     super(IdentityQuant, self).__init__()
     self.minus_one = StatelessBuffer(torch.tensor(-1))
Пример #12
0
 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))
Пример #13
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))
Пример #14
0
 def __init__(self, parameter_stats_scaling: StatsFromParameterScaling):
     self.parameter_stats_scaling = parameter_stats_scaling
     self.ignored = StatelessBuffer(torch.tensor(0.0))