news 2026/7/4 7:02:09

CANN/ops-nn分组量化SwiGLU激活算子

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/ops-nn分组量化SwiGLU激活算子

SwigluGroupQuant

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

功能说明

  • 算子功能:融合实现SwiGLU激活和分组低比特量化,支持FP8和FP4输出。输入x的最后一维被均分为AB,先计算silu(A) * B,再执行量化。

  • 计算公式:

    $$ y_{tmp}=silu(A) \times B $$

    当传入clamp_limit时:

    $$ A=min(A, clamp_limit) $$

    $$ B=min(max(B, -clamp_limit), clamp_limit) $$

    当传入weight时,量化前执行:

    $$ y_{tmp}=y_{tmp} \times weight $$

    进行量化:

    $$ scale=row_max(abs(y_{tmp}))/dstTypeScale $$

    $$ y = Cast(Mul(y_{tmp}, 1/scale)) $$

    quant_mode为0时输出FP8类型的y和FLOAT32类型的y_scale;quant_mode为1时输出FP8/FP4类型的y和FLOAT8_E8M0类型的y_scale;quant_mode为2、3时输出HIFP8类型的y和FLOAT32类型的y_scale。

参数说明

参数名输入/输出/属性描述数据类型数据格式
x输入输入张量,shape为[...,D],最后一维D按左右两半做SwiGLU。FLOAT、FLOAT16、BFLOAT16ND
weight可选输入量化前按token乘到SwiGLU输出上的权重。FLOAT32ND
group_index可选输入count模式的group token数。INT64ND
scale可选输入静态量化输入的scale张量。仅quant_mode=2时使用,quant_mode=3时不使用。FLOAT32ND
dst_type属性目标量化类型:27=HIFLOAT8,35=FLOAT8_E5M2,36=FLOAT8_E4M3FN,40=FLOAT4_E2M1,41=FLOAT4_E1M2。INT64-
quant_mode属性量化模式。0表示Block FP8,1表示MX,2表示HIFP8静态量化,3表示HIFP8动态量化。INT64-
block_size属性量化块大小。0表示使用默认值;Block FP8支持128,MX支持32;quant_mode=2或3时不生效。INT64-
round_scale属性是否将scale取整为2的幂。MX模式必须为true;quant_mode=2或3时不生效。BOOL-
clamp_limit属性SwiGLU计算前的clamp阈值。默认不启用clamp。FLOAT-
dst_type_max属性目标量化类型的最大有限值。quant_mode=2或3时用于计算scale = amax / dst_type_max,默认值为15.0。FLOAT-
output_origin属性是否输出量化前的SwiGLU结果。MX FP4模式下该输出仅作占位。BOOL-
y输出量化输出。FP8 shape为[...,D/2];FP4每字节打包2个4-bit值,shape为[...,D/4];HIFP8 shape为[...,D/2]。HIFLOAT8、FLOAT8_E4M3FN、FLOAT8_E5M2、FLOAT4_E2M1、FLOAT4_E1M2ND
y_scale输出量化scale。Block FP8输出FLOAT32,shape为[...,ceil((D/2)/128)];MX输出FLOAT8_E8M0,shape为[...,ceil(ceil((D/2)/32)/2),2];HIFP8输出FLOAT32,无group_index时shape为[1],有group_index时shape为[G]。FLOAT32、FLOAT8_E8M0ND
y_origin输出量化前的SwiGLU结果,shape为[...,D/2]。与x相同ND

约束说明

  • 输入x的rank必须大于0,最后一维D必须大于等于256且能被256整除。
  • dst_type支持HIFLOAT8FLOAT8_E4M3FNFLOAT8_E5M2FLOAT4_E2M1FLOAT4_E1M2
  • quant_mode=0时仅支持FP8输出,block_size支持0或128。
  • quant_mode=1时支持FP8/FP4输出,block_size支持0或32,round_scale必须为true。
  • quant_mode=2时支持HIFP8静态量化输出,dst_typeblock_sizeround_scale不生效。
  • quant_mode=3时支持HIFP8动态量化输出,dst_typeblock_sizeround_scale不生效。
  • dst_typeFLOAT4_E2M1FLOAT4_E1M2时,必须使用quant_mode=1
  • dst_typeHIFLOAT8时,必须使用quant_mode=23
  • y_scale的数据类型必须与quant_mode匹配:Block FP8为FLOAT32,MX为FLOAT8_E8M0,HIFP8为FLOAT32。
  • quant_mode=23时,group_index可用于MoE场景的分组量化,y_scale的shape为[G](G为group数量)。
  • clamp_limit不启用时使用默认占位值-1.0;启用时必须大于0。

调用说明

调用方式调用样例说明
aclnn调用test_aclnn_swiglu_group_quant通过aclnnSwigluGroupQuant接口调用SwigluGroupQuant算子。
图模式调用-通过算子IR构图方式调用SwigluGroupQuant算子。

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/4 7:02:05

Statsig Status Page最佳实践:企业级状态监控配置

Statsig Status Page最佳实践:企业级状态监控配置 【免费下载链接】statuspage A simple, zero-dependency, pure js/html status page based on GitHub Pages and Actions. 项目地址: https://gitcode.com/gh_mirrors/sta/statuspage Statsig Status Page是…

作者头像 李华
网站建设 2026/7/4 7:01:50

终极指南:如何使用Gradle Docker插件实现与Kubernetes的无缝集成

终极指南:如何使用Gradle Docker插件实现与Kubernetes的无缝集成 【免费下载链接】gradle-docker a Gradle plugin for orchestrating docker builds and pushes. 项目地址: https://gitcode.com/gh_mirrors/gr/gradle-docker Gradle Docker插件是一个强大的…

作者头像 李华
网站建设 2026/7/4 7:01:43

SENet-Tensorflow实战教程:在CIFAR-10数据集上训练ResNeXt模型

SENet-Tensorflow实战教程:在CIFAR-10数据集上训练ResNeXt模型 【免费下载链接】SENet-Tensorflow Simple Tensorflow implementation of "Squeeze and Excitation Networks" using Cifar10 (ResNeXt, Inception-v4, Inception-resnet-v2) 项目地址: ht…

作者头像 李华
网站建设 2026/7/4 7:00:25

CANN/asc-devkit GlobalTensor GetValue API

GetValue 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode.com/c…

作者头像 李华
网站建设 2026/7/4 7:00:01

IGBT结温估算技术:原理、优化与实践

1. 项目背景与核心挑战在电力电子领域,IGBT(绝缘栅双极型晶体管)作为电机控制器的核心功率器件,其结温估算的准确性直接关系到系统可靠性和使用寿命。国际头部厂商通常将相关技术列为机密,这使得行业内的技术交流和实践…

作者头像 李华