CANN NPU RMS Norm动态量化
custom-npu_rms_norm_dynamic_quant【免费下载链接】cann-recipes-infer本项目针对LLM与多模态模型推理业务中的典型模型、加速算法提供基于CANN平台的优化样例项目地址: https://gitcode.com/cann/cann-recipes-infer产品支持情况产品是否支持Atlas A3 推理系列产品√功能说明RmsNormDynamicQuantRmsNorm算子是大模型常用的归一化操作。DynamicQuant算子则是为输入张量进行对称动态量化的算子。RmsNormDynamicQuant算子将RmsNorm归一化输出给到DynamicQuant算子融合起来减少搬入搬出操作RmsNormDynamicQuant的具体计算公式如下$$ y \operatorname{RmsNorm}(x)\frac{x}{\operatorname{Rms}(\mathbf{x})}\cdot gammabeta, \quad \text { where } \operatorname{Rms}(\mathbf{x})\sqrt{\frac{1}{n} \sum_{i1}^n x_i^2epsilon} $$$$ input \begin{cases} y\cdot smoothScaleOptional \ \ smoothScaleOptional \ y !\ smoothScaleOptional \end{cases} $$$$ scaleOutrow_max(abs(input))/127 $$$$ yOutround(input1/scaleOut) $$公式中的row_max代表每行求最大值。函数原型custom.npu_rms_norm_dynamic_quant(Tensor x, Tensor gamma, *, Tensor? smooth_scaleNone, Tensor? betaNone, float epsilon1e-6) - (Tensor, Tensor)参数说明xTensor公式中的输入x必选参数不支持非连续数据格式支持ND数据类型支持float16、bfloat16。gammaTensor公式中的gamma必选参数不支持非连续数据格式支持ND数据类型支持float16、bfloat16要求是1D的Tensor数据类型同x保持一致shape同x最后一维一致。*代表其之前的参数是位置相关的必须按照顺序输入属于必选参数其之后的参数是键值对赋值与位置无关属于可选参数不传入会使用默认值。smooth_scaleTensor公式中的smoothScaleOptional可选参数不支持非连续数据格式支持ND数据类型支持float16、bfloat16要求是1D的Tensor。shape和数据类型同gamma保持一致。betaTensor公式中的beta表示标准化过程中的偏置项可选参数不支持非连续数据格式支持ND数据类型支持float16、bfloat16要求是1D的Tensor。shape和数据类型同gamma保持一致。。epsilonfloat公式中的epsilon表示用于防止除0错误可选参数默认值1e-6。返回值说明yTensor公式中的输出yOut表示量化后的输出tensor数据类型支持int8。数据格式支持NDshape需要与输入x保持一致。scaleTensor公式中的输出scaleOut表示量化scale参数数据类型支持float32。数据格式支持ND,shape需要与输入x除了最后一维后的shape一致或者与x除了最后一维的乘积一致。约束说明该接口支持推理场景下使用。该接口支持aclgraph入图。该接口与PyTorch配合使用时需要保证CANN相关包与PyTorch相关包的版本匹配。调用示例详见test_npu_rms_norm_dynamic_quant.py【免费下载链接】cann-recipes-infer本项目针对LLM与多模态模型推理业务中的典型模型、加速算法提供基于CANN平台的优化样例项目地址: https://gitcode.com/cann/cann-recipes-infer创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考