MCPcopy Create free account
hub / github.com/ModelTC/LightX2V / IntegerQuantizer

Class IntegerQuantizer

lightx2v/utils/quant_utils.py:115–151  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

113
114
115class IntegerQuantizer(BaseQuantizer):
116 def __init__(self, bit, symmetric, granularity, **kwargs):
117 super().__init__(bit, symmetric, granularity, **kwargs)
118 if "int_range" in self.kwargs:
119 self.qmin = self.kwargs["int_range"][0]
120 self.qmax = self.kwargs["int_range"][1]
121 else:
122 if self.sym:
123 self.qmin = -(2 ** (self.bit - 1))
124 self.qmax = 2 ** (self.bit - 1) - 1
125 else:
126 self.qmin = 0.0
127 self.qmax = 2**self.bit - 1
128
129 self.qmin = torch.tensor(self.qmin)
130 self.qmax = torch.tensor(self.qmax)
131 self.dst_nbins = 2**bit
132
133 def quant(self, tensor, scales, zeros, qmax, qmin):
134 tensor = torch.clamp(torch.round(tensor / scales) + zeros, qmin, qmax)
135 return tensor
136
137 def dequant(self, tensor, scales, zeros):
138 tensor = (tensor - zeros) * scales
139 return tensor
140
141 def quant_dequant(
142 self,
143 tensor,
144 scales,
145 zeros,
146 qmax,
147 qmin,
148 ):
149 tensor = self.quant(tensor, scales, zeros, qmax, qmin)
150 tensor = self.dequant(tensor, scales, zeros)
151 return tensor
152
153
154class FloatQuantizer(BaseQuantizer):

Callers 5

quant_utils.pyFile · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected