def get_byteswidth(tensor): if dtype.is_quantize(tensor.dtype): return 1 # elif dtype.is_bfloat16(tensor.dtype): # return 2 else: return 4
def test_dtype_qint8(): dt = qint8(0.01) assert isinstance(dt, np.dtype) assert "mgb_dtype" in dt.metadata np.testing.assert_allclose(dt.metadata["mgb_dtype"]["scale"], 0.01) assert is_quantize(dt) == True np.testing.assert_allclose(get_scale(dt), 0.01)
def _check_result_attr(oup, dtype, dtype_str, is_unsigned=True): metadata = _metadata_dict[dtype_str] assert "mgb_dtype" in oup.dtype.metadata assert is_quantize(oup.dtype) np.testing.assert_equal(oup.dtype.metadata["mgb_dtype"]["name"], metadata.name) np.testing.assert_allclose(get_scale(oup.dtype), get_scale(dtype)) if is_unsigned: np.testing.assert_equal(get_zero_point(oup.dtype), get_zero_point(dtype))
def test_dtype_quint8(): with pytest.raises(ValueError): blah = quint8(0.05, 0.233) with pytest.raises(ValueError): blah = quint8(0.02, 777) with pytest.raises(ValueError): blah = quint8(0.02, -1) dt = quint8(0.01, 135) assert isinstance(dt, np.dtype) assert "mgb_dtype" in dt.metadata np.testing.assert_allclose(dt.metadata["mgb_dtype"]["scale"], 0.01) np.testing.assert_equal(dt.metadata["mgb_dtype"]["zero_point"], 135) assert is_quantize(dt) np.testing.assert_allclose(get_scale(dt), 0.01) np.testing.assert_equal(get_zero_point(dt), 135)