接口功能:为输入张量进行动态量化。在MOE场景下,每个专家的smoothScalesOptional是不同的,根据输入的groupIndexOptional进行区分。支持对称/非对称量化。支持pertoken/pertensor/perchannel量化模式。相较aclnnDynamicQuantV2,新增了pertensor/perchannel量化模式,通过quantMode参数指定。
计算公式:
- 对称量化:
- 若不输入smoothScalesOptional,则
- 若输入smoothScalesOptional,则
- 非对称量化:
- 若不输入smoothScalesOptional,则
- 若输入smoothScalesOptional,则 其中/代表求最大/最小值的模式,如果quantMode为“pertoken”,则,表示对每个token计算最大/最小值;如果quantMode为“pertensor”,则,表示求整个tensor的最大/最小值;如果quantMode为“perchannel”,则,表示对每个channel求最大/最小值。是输出类型的最大值,是输出类型的最小值。
- 对称量化:
每个算子分为,必须先调用“aclnnDynamicQuantV3GetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnDynamicQuantV3”接口执行计算。
[object Object]
[object Object]
- 确定性计算:
- aclnnDynamicQuantV3默认确定性实现。
yOut的数据类型为INT4时,需满足x和yOut的最后一维能被2整除。 yOut的数据类型为INT32时,需满足x的最后一维能被8整除。 当有groupIndexOptional时,专家数不超过x剔除最后一维的各个维度乘积。groupIndexOptional的值需要是一组不小于零且非递减的数组,且最后一个值和x剔除最后一维的各个维度乘积相等。若不满足该条件,结果无实际意义。
[object Object]