当前位置: 首页 > news >正文

CANN/ops-nn加层归一化量化V2算子

AddLayerNormQuantV2

【免费下载链接】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 训练系列产品×

功能说明

  • 接口功能 :LayerNorm算子是大模型常用的归一化操作。AddLayerNormQuantV2算子将LayerNorm前的Add算子和LayerNorm归一化输出给1个或2个下游的量化算子融合起来,减少搬入搬出操作。LayerNorm下游的量化算子可以是Quantize、AscendQuantV2或DynamicQuant算子,具体的量化算子类型由attr入参divMode和quantMode决定。当下游有2个量化算子时,2个量化算子的算子类型、输入输出dtype组合和可选输入的组合需要完全一致,当前仅支持下游有1个AscendQuantV2量化算子。

  • 计算公式:

    $$ x = x1 + x2 + biasOptional $$

    $$ y = {{x-E(x)}\over\sqrt {Var(x)+epsilon}} * gamma + beta $$

    • 当quantMode输入为"static"时,输出outScales1Out和outScales2Out无实际意义。取决于divMode的输入,融合的量化算子可能是Quantize或AscendQuantV2:

      • 当divMode输入为true时,融合的量化算子为Quantize,计算公式如下所示:

        $$ y1Out = round(y / scales1Optional + zeroPoints1Optional) $$

        $$ y2Out = round(y / scales2Optional + zeroPoints2Optional), \quad \text{当且仅当scales2Optional存在} $$

      • 当divMode输入为false时,融合的量化算子为AscendQuantV2,计算公式如下所示:

        $$ y1Out = round(y * scales1Optional + zeroPoints1Optional) $$

        $$ y2Out = round(y * scales2Optional + zeroPoints2Optional), \quad \text{当且仅当scales2Optional存在} $$

    • 当quantMode输入为"dynamic"时,输入zeroPoints1Optional和zeroPoints2Optional无实际意义。融合的量化算子是DynamicQuant,此时divMode无效:

      • 若scales1Optional和scales2Optional均无输入,则y2Out和scale2Out输出无实际意义,可忽略。计算公式如下所示:

        $$ outScales1Out = row_max(abs(y))/127 $$

        $$ y1Out = round(y / outScales1Out) $$

      • 若仅输入scales1Optional,则y2Out和scale2Out输出无实际意义,可忽略。计算公式如下所示:

        $$ tmp1 = y * scales1Optional $$

        $$ outScales1Out = row_max(abs(tmp1))/127 $$

        $$ y1Out = round(tmp1 / outScales1Out) $$

      • 若scales1Optional和scales2Optional均存在,则y2Out和scale2Out输出有效。计算公式如下所示:

        $$ tmp1 = y * scales1Optional, \quad tmp2 = y * scales2Optional $$

        $$ outScales1Out = row_max(abs(tmp1))/127, \quad outScales2Out = row_max(abs(tmp2))/127 $$

        $$ y1Out = round(tmp1 / outScales1Out),\quad y2Out = round(tmp2 / outScales2Out) $$

        其中row_max代表对每行求最大值。

参数说明

参数名输入/输出/属性描述数据类型数据格式
x1输入表示AddLayerNorm中加法计算的输入,对应公式中的`x1`。FLOAT32、FLOAT16、BFLOAT16ND
x2输入表示AddLayerNorm中加法计算的输入,对应公式中的`x2`。FLOAT32、FLOAT16、BFLOAT16ND
gamma输入表示层归一化中的gamma参数,对应公式中的`gamma`。FLOAT32、FLOAT16、BFLOAT16ND
beta输入表示层归一化中的beta参数,对应公式中的`beta`。FLOAT32、FLOAT16、BFLOAT16ND
bias可选输入表示AddLayerNormQuantV2中加法计算的输入,对应公式中的`bias`。FLOAT32、FLOAT16、BFLOAT16ND
scales1可选输入表示第一个被融合的量化计算子中的scale/smooth输入,对应公式中的`scales1`。FLOAT32、FLOAT16、BFLOAT16ND
scales2可选输入表示第二个被融合的量化计算子中的scale/smooth输入,对应公式中的`scales2`。FLOAT32、FLOAT16、BFLOAT16ND
zero_points1可选输入表示第一个被融合的量化计算子中的zeroPoints输入,对应公式中的`zeroPoints1`。FLOAT32、FLOAT16、BFLOAT16ND
zero_points2可选输入表示第二个被融合的量化计算子中的zeroPoints输入,对应公式中的`zeroPoints2`。FLOAT32、FLOAT16、BFLOAT16ND
quant_mode可选属性
  • 用于确定融合算子融合的是静态还是动态量化算子,对应公式中的`quantMode`。取值可以是 "static"或 "dynamic"。
  • 默认值为"dynamic"。
String-
epsilon可选属性
  • 添加到分母中的值,以确保数值稳定,用于防止除0错误,对应公式中的`epsilon`。
  • 默认值为1e-5。
FLOAT-
additional_output可选属性
  • 表示是否开启x=x1+x2+bias的输出。
  • 默认值为false。
BOOL-
div_mode可选属性
  • 表示静态量化处理scale的方法是乘法或除法,对应公式中的`divMode`。
  • 默认值为true。
BOOL-
y1输出表示量化输出Tensor,对应公式中的`y1`。INT8ND
y2输出表示量化输出Tensor,对应公式中的`y2`。INT8ND
x输出表示x1和x2的和,对应公式中的`x`。FLOAT32、FLOAT16、BFLOAT16ND
layernormRes输出表示layernorm的结果输出,对应公式中的`x`。FLOAT32、FLOAT16、BFLOAT16ND
out_scales1输出表示通过scales1计算的动态量化缩放结果,对应公式中的`outScales1`。FLOAT32ND
out_scales2输出表示通过scales2计算的动态量化缩放结果,对应公式中的`outScales2`。FLOAT32ND
  • Atlas 推理系列产品 :不支持BFLOAT16。

约束说明

调用说明

调用方式样例代码说明
aclnn接口test_aclnn_add_layer_norm_quant_v2通过aclnnAddLayerNormQuantV2接口方式调用AddLayerNormQuantV2算子。

【免费下载链接】ops-nn本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-nn

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.jsqmd.com/news/1000231/

相关文章:

  • 泉盛UV-K5/K6终极固件升级指南:解锁10大专业功能
  • STM32 TIM1双通道互补PWM工程包:支持死区可调、相位/占空比独立配置,兼容向上计数与中央对齐模式
  • 2026重庆母婴级除甲醛安全指南:孕妈宝宝房治理方案 - 环保除醛知识库
  • 邢台上门黄金回收靠谱吗 2026六月金价与避坑指南 - 余生黄金回收
  • Pandas多维聚合生产实践:金融级稳定性与业务语义实现
  • 实战指南:深入nocodb API开发与SDK集成方案
  • 别再死记MobileNet结构了!用PyTorch手写一个V1,从代码里理解深度可分离卷积
  • 终极风扇控制指南:5分钟掌握Windows风扇精准调节技巧
  • 2026 建水十家正规装修公司测评及实用防坑攻略 - 装修新知
  • 终极AMD处理器调试指南:5个技巧全面掌握硬件性能调优
  • 嵌入式开发避坑指南:iMX8ULP勘误文档深度解析与实战规避
  • 如何快速找出Windows热键冲突的罪魁祸首:Hotkey Detective侦探指南
  • 别再拍脑袋了!用Python模拟M/M/1排队系统,直观理解服务强度ρ对等待时间的影响
  • PyTorch模型部署避坑指南:torch.load的map_location参数到底该怎么用?
  • 2026年6月真空过滤机知名厂家综合竞争力报告——五家真空过滤机生产厂家多维实力全景分析 - 品牌评测研究中心
  • 2026游戏鼠标:ATK GEAR绝鲨MAX方案对比雷蛇罗技 - GrowthUME
  • 2026南京黄金回收实测:5家实体店测评,6大硬核优势放心透明 - 奢侈品回收评测
  • 深入解析DSC双哈佛架构:从DSP与MCU融合到嵌入式实时系统设计
  • 2026长沙奢侈品黄金回收品牌排名风控维度测评 耀辉全流程安全体系登顶榜单 - 奢侈品回收
  • 如何使用Kiibohd Controller打造个性化机械键盘:KLL语言快速上手
  • 贵州AI搜索推广怎么选?2026年服务商对比与选型指南 - 精选优质企业推荐官
  • fMRI研究可重复性危机下,如何用DPARSF和CORR数据集提升你的结果可信度?
  • Zotero PDF Translate:学术翻译的全能助手使用指南
  • 粤港澳商务跨境包车哪家口碑好?真实用户反馈盘点 - 资讯纵览
  • Amlogic S9xxx Armbian实战指南:让旧机顶盒变身专业Linux服务器的终极方案
  • 还在为安卓投屏没声音烦恼吗?scrcpy v3.2让你的电脑成为手机的音画中心
  • 2026年6月知名门窗品牌综合实力深度解析:技术、规模、口碑谁主沉浮? - 品牌评测研究中心
  • D3keyHelper暗黑3游戏助手:终极自动化操作完全配置指南
  • 3步高效配置:PotPlayer百度字幕翻译插件专业指南
  • 抖音直播数据采集终极指南:用DouyinLiveWebFetcher解锁实时用户行为分析