CANN/ops-nn 去量化SwiGLU量化算子
DequantSwigluQuant【免费下载链接】ops-nn本项目是CANN提供的神经网络类计算算子库实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-nn产品支持情况产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品/Atlas A3 推理系列产品√Atlas A2 训练系列产品/Atlas A2 推理系列产品√Atlas 200I/500 A2 推理产品×Atlas 推理系列产品×Atlas 训练系列产品×Kirin X90 处理器系列产品√Kirin 9030 处理器系列产品√功能说明算子功能在Swish门控线性单元激活函数前后添加dequant和quant操作实现x的DequantSwigluQuant计算。swiglu_mode为0时的计算公式$$ dequantOut_i Dequant(x_i) $$$$ swigluOut_i Swiglu(dequantOut_i)Swish(A_i)*B_i $$$$ out_i Quant(swigluOut_i) $$其中Ai表示dequantOuti的前半部分Bi表示dequantOuti的后半部分。swiglu_mode为1时的计算公式$$ dequantOut_i Dequant(x_i) $$$$ x_glu x_glu.clamp(minNone, maxclamp_limit) $$$$ x_linear x_linear.clamp(min-clamp_limit, maxclamp_limit) $$$$ out_glu x_glu * sigmoid(glu_alpha * x_glu) $$$$ swigluOut_i out_glu * (x_linear glu_bias) $$$$ out_i Quant(swigluOut_i) $$其中x_glu表示dequantOuti的偶数索引部分x_linear表示dequantOuti的奇数索引部分。参数说明参数名输入/输出/属性描述数据类型数据格式x输入输入待处理的数据公式中的x。FLOAT16、BFLOAT16、INT32NDweight_scale输入-FLOATNDactivation_scale输入激活函数的反量化scale。FLOATNDbias输入Matmul的bias公式中的bias。FLOAT、FLOAT16、BFLOAT16、INT32NDquant_scale输入量化的scale公式中的quant_scale。FLOAT、FLOAT16NDquant_offset输入量化的offset。FLOATNDgroup_index输入MoE分组需要的group_index。INT64NDactivate_left属性表示是否对输入的左半部分做swiglu激活。BOOL-quant_mode属性表示使用动态量化。STRING-dst_type属性表示指定输出y的数据类型。INT64-round_mode属性表示对输出y结果的舍入模式。STRING-activate_dim属性表示进行swish计算时选择的指定切分轴。INT64-swiglu_mode属性表示swiglu的计算模式。INT64-clamp_limit属性表示变体swiglu使用的门限值。FLOAT-glu_alpha属性表示变体swiglu使用的参数。FLOAT-glu_bias属性表示变体swiglu使用的偏差参数。FLOAT-y输出-INT8、FLOAT8_E5M2、FLOAT8_E4M3FN、FLOAT4_E2M1、FLOAT4_E1M2NDscale输出-FLOATNDKirin X90/Kirin 9030 处理器系列产品:输入x数据类型不支持BFLOAT16。输入bias数据类型不支持BFLOAT16。输入quant_scale数据类型不支持FLOAT16。输出y数据类型不支持FLOAT8_E5M2、FLOAT8_E4M3FN、FLOAT4_E2M1、FLOAT4_E1M2。约束说明Ascend 950PR/Ascend 950DT 输入x对应activate_dim的维度需要是2的倍数且x的维数必须大于1维。当输入x的数据类型为INT32时weight_scale不能为空当输入x的数据类型不为INT32时weight_scale不允许输入传入空指针。当输入x的数据类型不为INT32时activation_scale不允许输入参数置为空指针。当输入x的数据类型不为INT32时bias不允许输入参数置为空指针。当输出y的数据类型为FLOAT4_E2M1、FLOAT4_E1M2时y的最后一维需要是2的倍数。输出y的尾轴不超过5120.Atlas A2 训练系列产品/Atlas A2 推理系列产品 、 Atlas A3 训练系列产品/Atlas A3 推理系列产品 swiglu_mode、clamp_limit、glu_alpha和glu_bias四个参数用于GPT-OSS变体SwiGLU的使用。x的最后一维需要是2的倍数且x的维数必须大于1维。当quant_mode为static时quant_scale和quant_offset为1维值为1quant_mode为dynamic时quant_scale和quant_offset算子支持的输入张量的内存大小有上限校验公式weight_scale张量内存大小bias张量内存大小quant_scale张量内存大小quant_offset张量内存大小 activation_scale张量内存大小 scale张量内存大小/40 x张量最后一维H内存大小 * 10 192KB。调用说明调用方式调用样例说明aclnn调用test_aclnn_dequant_swiglu_quant通过aclnnDequantSwigluQuant接口方式调用DequantSwigluQuant算子。aclnn调用test_aclnn_dequant_swiglu_quant_v2通过aclnnDequantSwigluQuantV2接口方式调用DequantSwigluQuant算子。图模式调用-通过算子IR构图方式调用DequantSwigluQuant算子。【免费下载链接】ops-nn本项目是CANN提供的神经网络类计算算子库实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-nn创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2602330.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!