AscendRequant
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR&950DT系列产品 | √ |
| Atlas A3系列产品 | √ |
| Atlas A2系列产品 | √ |
| Atlas 200I/500 A2推理产品 | √ |
| Atlas推理系列产品 | √ |
| Atlas训练系列产品 | × |
功能说明
AscendRequant 是 INT8 静态量化推理链路中的反量化再量化算子,将上游 Conv/MatMul 在 INT8 权重下产生的 INT32 累加结果,按反量化缩放因子重新量化回 INT8,作为下一层 INT8 计算的输入。req_scale 为 UINT64 类型的硬件亲和反量化缩放因子(DeqScale 编码),按 numpy 广播规则作用到 x;计算结果按 round-to-nearest-even 取整并饱和到 INT8 范围 [-128, 127]。
计算公式:
y=SaturateInt8(RoundToNearestEven(x×scale))y = \text{SaturateInt8}(\text{RoundToNearestEven}(x \times scale))
其中 scale 由 req_scale(UINT64 DeqScale 编码)解码得到,SaturateInt8 将结果饱和到 [-128, 127]。当 relu_flag=true 时再执行 y = max(y, 0),对负值截零。
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| x | 输入 | 待再量化的 INT32 累加结果,对应公式中x。 | INT32 | ND |
| req_scale | 输入 | UINT64 硬件亲和反量化缩放因子(DeqScale 编码),对应公式中scale的来源。 | UINT64 | ND |
| y | 输出 | 再量化 INT8 结果,shape与x相同,对应公式中y。 | INT8 | ND |
| relu_flag | 可选属性 | 是否对再量化结果融合ReLU,默认false,true时对负值截零。 | BOOL | - |
约束说明
- 数据类型固定组合:
x为 INT32、req_scale为 UINT64、y为 INT8,不支持其他数据类型组合。 - 数据格式仅支持 ND。
x的维度范围为 1-8;req_scale的维度范围为 0-8,且rank(req_scale)需小于等于rank(x)。req_scale的 shape 需可按 numpy 广播规则广播到x的 shape,广播在 Kernel 内处理;输出 shape 等于x的 shape。- 输入需为连续 Tensor,不支持非连续 Tensor。
调用说明
| 调用方式 | 样例代码 | 说明 |
|---|---|---|
| GE图模式 | - | 通过 AscendRequant算子IR 注册图引擎算子原型。 |