aclnnAddRmsNormQuantV2
产品支持情况
功能描述
算子功能:RmsNorm是大模型常用的标准化操作,相比LayerNorm,其去掉了减去均值的部分。AddRmsNormQuant算子将RmsNorm前的Add算子以及RmsNorm归一化的输出给到1个或2个Quantize算子融合起来,减少搬入搬出操作。AddRmsNormQuantV2算子相较于AddRmsNormQuant在RmsNorm计算过程中增加了偏置项betaOptional参数,即计算公式中的
[object Object]。计算公式:
divMode为True时:
divMode为False时:
函数原型
每个算子分为,必须先调用[object Object]接口获取入参并根据计算流程所需workspace大小,再调用[object Object]接口执行计算。
[object Object][object Object]
aclnnAddRmsNormQuantV2GetWorkspaceSize
参数说明:
- x1(aclTensor*,计算输入):表示标准化过程中的源数据张量,公式中的
[object Object],Device侧的aclTensor。shape支持1-8维。支持ND,支持。- [object Object]Atlas 推理系列产品[object Object]:数据类型支持FLOAT16。
- [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]、[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:数据类型支持FLOAT16、BFLOAT16。
- x2(aclTensor*,计算输入):表示标准化过程中的源数据张量,公式中的
[object Object],Device侧的aclTensor。shape支持1-8维,shape和数据类型需要与x1保持一致。支持ND,支持。- [object Object]Atlas 推理系列产品[object Object]:数据类型支持FLOAT16。
- [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]、[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:数据类型支持FLOAT16、BFLOAT16。
- gamma(aclTensor*,计算输入):表示标准化过程中的权重张量,公式中的
[object Object],Device侧的aclTensor。shape支持1-8维,shape需要与x1需要Norm的维度保持一致,数据类型需要与x1保持一致。支持ND,支持。- [object Object]Atlas 推理系列产品[object Object]:数据类型支持FLOAT16。
- [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]、[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:数据类型支持FLOAT16、BFLOAT16。
- scales1(aclTensor*,计算输入):表示量化过程中得到y1进行的scales张量,公式中的
[object Object],Device侧的aclTensor。shape需要与gamma保持一致。支持ND,支持。当参数divMode的值为True时,该参数的值不能为0。- [object Object]Atlas 推理系列产品[object Object]:数据类型支持FLOAT32。
- [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]、[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:数据类型支持FLOAT32、BFLOAT16。
- scales2Optional(aclTensor*,计算输入):表示量化过程中得到y2进行的scales张量,公式中的
[object Object],Device侧的aclTensor。可选参数,支持传入空指针。shape需要与gamma保持一致,数据类型需要与scales1保持一致。支持ND,支持。当参数divMode的值为True时,该参数的值不能为0。- [object Object]Atlas 推理系列产品[object Object]:数据类型支持FLOAT32。
- [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]、[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:数据类型支持FLOAT32、BFLOAT16。
- zeroPoints1Optional(aclTensor*,计算输入):表示量化过程中得到y1进行的offset张量,公式中的
[object Object],Device侧的aclTensor。可选参数,支持传入空指针。shape需要与gamma保持一致。支持ND,支持。- [object Object]Atlas 推理系列产品[object Object]:数据类型支持INT32。
- [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]、[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:数据类型支持INT32、BFLOAT16。
- zeroPoints2Optional(aclTensor*,计算输入):表示量化过程中得到y2进行的offset张量,公式中的
[object Object],Device侧的aclTensor。可选参数,支持传入空指针。shape需要与gamma保持一致,数据类型需要与zeroPoints1Optional保持一致。支持ND,支持。- [object Object]Atlas 推理系列产品[object Object]:数据类型支持INT32。
- [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]、[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:数据类型支持INT32、BFLOAT16。
- betaOptional(aclTensor*,计算输入):表示标准化过程中的偏置项,公式中的
[object Object],Device侧的aclTensor。可选参数,支持传入空指针。shape支持1-8维,shape需要与[object Object]的shape保持一致,数据类型需要与[object Object]保持一致。支持ND,支持非连续的Tensor。- [object Object]Atlas 推理系列产品[object Object]:数据类型支持FLOAT16。
- [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]、[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:数据类型支持FLOAT16、BFLOAT16。
- axis(int64_t,计算输入):Host侧的整型,表示需要进行量化的elewise轴,其他的轴做broadcast,指定的轴不能超过输入x的维度数。当前仅支持-1,传其他值均不生效。
- epsilon(double,计算输入):公式中的输入eps,用于防止除0错误,数据类型为double。建议传较小的正数。
- divMode(bool,计算输入):公式中决定量化公式是否使用除法的参数,数据类型为bool。
- y1Out(aclTensor*,计算输出):表示量化输出Tensor,公式中的
[object Object],Device侧的aclTensor。shape支持1-8维度,shape需要与输入x1/x2一致,数据类型支持INT8,支持ND,支持。 - y2Out(aclTensor*,计算输出):表示量化输出Tensor,公式中的
[object Object],Device侧的aclTensor,可选输出。shape支持1-8维度,shape需要与输入x1/x2一致,数据类型支持INT8,支持ND,支持。当scales2Optional为空时,该输出的值无效。 - xOut(aclTensor*,计算输出):表示x1和x2的和,公式中的
[object Object],Device侧的aclTensor,可选输出。shape支持1-8维度,shape和数据类型需要与输入x1/x2一致,支持ND,支持。- [object Object]Atlas 推理系列产品[object Object]:数据类型支持FLOAT16。
- [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]、[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:数据类型支持FLOAT16、BFLOAT16。
- rmsNormOut(aclTensor*,计算输出):表示进行RmsNorm之后的结果,公式中的
[object Object],Device侧的aclTensor,可选输出。shape支持1-8维度,shape和数据类型需要与输入x1/x2一致,支持ND,支持。- [object Object]Atlas 推理系列产品[object Object]:数据类型支持FLOAT16。
- [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]、[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:数据类型支持FLOAT16、BFLOAT16。
- workspaceSize(uint64_t*,出参):返回需要在Device侧申请的workspace大小。
- executor(aclOpExecutor**,出参):返回op执行器,包含了算子计算流程。
- x1(aclTensor*,计算输入):表示标准化过程中的源数据张量,公式中的
返回值:
[object Object]
aclnnAddRmsNormQuantV2
参数说明:
- workspace(void*,入参):在Device侧申请的workspace内存地址。
- workspaceSize(uint64_t,入参):在Device侧申请的workspace大小,由第一段接口aclnnAddRmsNormQuantV2GetWorkspaceSize获取。
- executor(aclOpExecutor*,入参):op执行器,包含了算子计算流程。
- stream(aclrtStream,入参):指定执行任务的Stream。
返回值:
约束说明
[object Object]Atlas 推理系列产品[object Object]:x1、x2需要Norm的维度数据个数不能小于32。
[object Object]、[object Object]、[object Object]、[object Object]、[object Object]、[object Object]的数据个数不能小于32。可选输出
[object Object]和[object Object],必须且只能选择其一进行输出。当需要输出
[object Object]时,此时要求[object Object]与[object Object]的shape保持一致,且需要与[object Object]需要Norm的维度保持一致,可选输出只能输出[object Object]。当需要输出
[object Object]时,且参数[object Object]和[object Object]的shape为[1],且[object Object]的shape为1维且与x1的最后一维相等或者[object Object]的shape为2维且第一维为1、第二维为[object Object]的最后一维时,此时[object Object]和[object Object]不生效。当需要输出
[object Object]时,参数[object Object]和[object Object]的shape为[1],且[object Object]的shape为1维且与x1的最后一维相等或者[object Object]的shape为2维且第一维为1、第二维为[object Object]的最后一维,且[object Object]和[object Object]必须传空指针,此时[object Object]和[object Object]不生效。支持类型说明
是否支持空Tensor:支持空进空出。
边界值场景说明
- [object Object]Atlas 推理系列产品[object Object]:输入不支持包含inf和nan。
- [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]、[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:当输入是inf时,输出为inf。当输入是nan时,输出为nan。
维度的边界说明
参数x1、x2、gamma、scales1、scales2Optional、zeroPoints1Optional、zeroPoints2Optional、betaOptional、y1Out、y2Out、xOut的shape中每一维大小都不大于INT32的最大值2147483647。
数据格式说明 所有输入输出tensor的数据格式推荐使用ND格式,其他数据格式会由框架默认转换成ND格式进行处理。
各产品型号支持数据类型说明
[object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]、[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:
[object Object]undefined
[object Object]Atlas 推理系列产品[object Object]:
[object Object]undefined
调用示例
示例编译和执行请参考编译与运行样例。