From 683b3e304af15660401928b0456464ce52673c28 Mon Sep 17 00:00:00 2001 From: Megvii Engine Team Date: Thu, 8 Dec 2022 19:11:05 +0800 Subject: [PATCH] fix(mge/quantization): disable creation of qint8 dtype with zeropoint GitOrigin-RevId: d3b87c303f91ae333e8ba42c23180b9626836d39 --- imperative/python/megengine/core/tensor/dtype.py | 7 +++++++ imperative/python/megengine/quantization/utils.py | 3 +++ 2 files changed, 10 insertions(+) diff --git a/imperative/python/megengine/core/tensor/dtype.py b/imperative/python/megengine/core/tensor/dtype.py index ea9eb3585..ba3d56959 100644 --- a/imperative/python/megengine/core/tensor/dtype.py +++ b/imperative/python/megengine/core/tensor/dtype.py @@ -146,6 +146,13 @@ def create_quantized_dtype( else: # Don't trick to combine with is_unsigned. Metadata should not contain # invalid field to keep consistent with c dtype. + if zp is not None: + raise ValueError( + "'{}' only supports symmetric quantization, " + "zero_point should be None, but actually got '{}'".format( + dtype_meta.name, zp + ) + ) return np.dtype( dtype_meta.np_dtype_str, metadata={"mgb_dtype": {"name": dtype_meta.cname, "scale": float(scale)}}, diff --git a/imperative/python/megengine/quantization/utils.py b/imperative/python/megengine/quantization/utils.py index 00699d3fb..216c2172a 100644 --- a/imperative/python/megengine/quantization/utils.py +++ b/imperative/python/megengine/quantization/utils.py @@ -210,6 +210,9 @@ def fake_quant_bias(bias: Tensor, inp: Tensor, w_qat: Tensor) -> Tensor: if inp_params.scale is None or w_params.scale is None: return b_qat + if inp_params.mode != QuantMode.SYMMERTIC: + return b_qat + # TODO: support different mode if inp_params.mode != w_params.mode: return b_qat -- GitLab