DynamicMxQuant
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR/Ascend 950DT | √ |
| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | × |
| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | × |
| Atlas 200I/500 A2 推理产品 | × |
| Atlas 推理系列产品 | × |
| Atlas 训练系列产品 | × |
功能说明
- 算子功能:在给定的轴axis上,根据每blocksize个数,计算出这组数对应的量化尺度mxscale,然后对这组数每一个除以mxscale,根据round_mode转换到对应的dst_type,得到量化结果y。在dst_type为FLOAT8_E4M3FN、FLOAT8_E5M2时,根据scale_alg的取值来指定计算mxscale的不同算法。
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| x | 输入 | 待量化数据。 | FLOAT16、BFLOAT16 | ND |
| axis | 输入 | 量化发生的轴 | INT64 | ND |
| round_mode | 可选属性 | 数据转换的模式 | STRING | ND |
| dst_type | 输入 | 指定数据转换后y的类型 | INT64 | ND |
| blocksize | 输入 | 每次量化的元素个数 | INT64 | ND |
| scale_alg | 输入 | mxscale的计算方法 | INT64 | ND |
| y | 输出 | 输入x量化后的对应结果 | FLOAT4_E2M1、FLOAT4_E1M2、FLOAT8_E4M3FN、FLOAT8_E5M2 | ND |
| mxscale | 输出 | 每个分组对应的量化尺度 | FLOAT8_E8M0 | ND |
约束说明
- 关于x、mxscale的shape约束说明如下:
- rank(mxscale) = rank(x) + 1。
- axis_change = axis if axis >= 0 else axis + rank(x)。
- mxscale.shape[axis_change] = (ceil(x.shape[axis] / blocksize) + 2 - 1) / 2。
- mxscale.shape[-1] = 2。
- 其他维度与输入x一致。
调用说明
| 调用方式 | 调用样例 | 说明 |
|---|---|---|
| aclnn调用 | test_aclnn_dynamic_mx_quant | 通过aclnnDynamicMxQuant接口方式调用DynamicMxQuant算子。 |