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

CANN中MmDeqSwigluQuantMmDeq算子模型的深层解析

文章目录

  • 一、MmDeqSwigluQuantMmDeq算子模型解析
    • 1. 1 Grouped Matmul1(分组矩阵乘法1)
    • 1.2 Per Token Dequant 1(逐token反量化1)
    • 1.3 Swiglu(激活函数模块)
    • 1.4 Quant(量化模块)
    • 1.5 Grouped Matmul2(分组矩阵乘法2)
    • 1.6 Per Token Dequant 2(逐token反量化2)
  • 二、在CANN中的作用

在这里插入图片描述

一、MmDeqSwigluQuantMmDeq算子模型解析

MmDeqSwigluQuantMmDeq 是为大语言模型(LLM)高效推理定制的量化感知复合算子,由 “矩阵乘(Mm)- 反量化(Deq)-Swiglu 激活 - 量化(Quant)- 矩阵乘(Mm)- 反量化(Deq)” 等操作串联组成,核心是在保证推理精度的前提下,通过低精度计算(int8)和硬件加速大幅降低内存与计算开销,适配资源受限场景的 LLM 部署。
下面我们一起来分层次对该算子模型进行逐一解析:

在这里插入图片描述

1. 1 Grouped Matmul1(分组矩阵乘法1)

  • 输入:x1(s8 类型,形状 (m, 7168))permuteWeight1(由 originWeight1 离线置换得到,形状 (G, 7168, 4096))groupList(s64 类型,形状 (G))
  • 操作:将输入按组划分后执行矩阵乘法,输出 temp1_int32(int32 类型,(m, 4096)),再转换为 float 类型的 temp1。
  • 作用:通过分组计算和低精度(int8)优化矩阵乘法的效率,减少内存带宽和计算开销。

在这里插入图片描述

1.2 Per Token Dequant 1(逐token反量化1)

  • 输入:temp1(float,(m, 4096))scale1(由 originScale1 离线置换得到,float 类型 (G, 4096))perTokenScale1(float,(m))
  • 操作:temp1 与 scale1 逐元素相乘得到 temp2,再与 perTokenScale1 相乘得到 temp3。
  • 作用:将量化后的矩阵乘法结果反量化为浮点型,并逐token(每个样本token)调整缩放,恢复数据精度。

在这里插入图片描述

1.3 Swiglu(激活函数模块)

  • 输入:temp3(float,(m, 4096))
  • 操作:
    • chunk 操作将 temp3 分为 temp4 和 gate(均为 float 类型,(m, 2048))。
    • gate 经过 sigmoid 激活得到 temp4_sigtemp4temp4_sig 相乘后,再与 gate 进一步运算得到 temp6(float,(m, 2048))
  • 作用:实现 Swiglu 激活函数(GLU 激活的变体),引入非线性变换,增强模型对复杂模式的表达能力,是 LLM 中 MLP 层的典型操作。

在这里插入图片描述

1.4 Quant(量化模块)

  • 输入:temp6(float,(m, 2048))
  • 操作:
    • 对 temp6 逐token取最大值得到 temp6_max(float,(m))。
    • 计算 127 / temp6_max 得到 quantScaleOutput(float,(m)),temp6 与该缩放因子相乘后转换为 s8(int8)类型的 quantOutput
  • 作用:将浮点中间结果量化为 int8,大幅减少内存占用和后续计算的硬件开销;通过逐token缩放保证量化精度。

在这里插入图片描述

1.5 Grouped Matmul2(分组矩阵乘法2)

  • 输入:quantOutput(s8,(m, 2048))weight2(由 originWeight2 离线转置得到,s8 类型 (G, 7168, 2048))
  • 操作:分组矩阵乘法,输出 temp7_int32(int32 类型,(m, 7168)),再转换为 float 类型的 temp7。
  • 作用:与 Grouped Matmul1 同理,通过低精度分组计算进一步优化效率。

在这里插入图片描述

1.6 Per Token Dequant 2(逐token反量化2)

  • 输入:temp7(float,(m, 7168))perChannelScale2(float,(G, 7168))
  • 操作:temp7perChannelScale2 逐元素相乘后,再与前文中间结果运算,最终转换为 float16 类型的 output。
  • 作用:将第二次分组矩阵乘法的结果反量化,输出浮点型(float16)最终结果,平衡性能与精度。

二、在CANN中的作用

  1. 昇腾硬件原生加速算子中的 “矩阵乘(Mm)” 可直接映射到昇腾 AI Core 的矩阵计算单元(Matrix Unit),利用其高并行矩阵运算能力(如 INT8 矩阵乘的高 TOPS 性能);Swiglu 激活、量化 / 反量化的逐元素操作则由向量计算单元(Vector Unit) 加速,通过向量化指令减少循环开销,充分释放硬件算力。
  2. 量化感知的精度 - 性能平衡CANN 的量化工具链(ATC+TBE) 为该算子提供端到端量化支持:
  • 离线阶段(模型转换时),ATC 会提前完成权重置换(Offline Permute/Transpose)等静态操作,避免推理时的动态开销;
  • 推理阶段,算子的 INT8 计算原生适配昇腾硬件的低精度单元,同时通过 “逐 token 缩放(perTokenScale)”“逐通道缩放(perChannelScale)” 实现精度补偿,在低精度计算的高性能与浮点输出的精度需求间取得平衡。
  1. TBE 算子融合与定制优化通过 CANN 的TBETensor Boost Engine)算子开发工具,可将 “矩阵乘 - 反量化 - Swiglu - 量化 - 矩阵乘 - 反量化” 的多步骤流程融合为单个 TBE 算子,减少数据搬运次数(降低访存瓶颈),并支持计算图裁剪、算子内联等深度优化,让流程以 “近硬件原生” 的方式执行。
  2. 异构调度的可扩展性CANN 的异构任务调度机制可将算子的不同阶段(矩阵乘、Swiglu、量化)分配到昇腾 AI Core 的不同计算单元,实现计算流水线重叠;同时支持多芯(多 AI Core)、多卡(多 Ascend 设备)的分布式并行调度,为大批次、大模型的 LLM 推理提供可扩展的性能支持。

MmDeqSwigluQuantMmDeq 算子在 CANN 中,是将大语言模型推理的 “量化 - 计算 - 激活” 全流程与昇腾硬件深度绑定,通过硬件级并行、算子融合、量化感知优化,实现 “高性能(低延迟、高吞吐)+ 高精度” 的 LLM 推理能力,是昇腾平台在大模型轻量化部署场景下的核心技术载体之一。

http://www.dtcms.com/a/598006.html

相关文章:

  • 03.Python语言中的变量
  • 攻防世界-Misc-can_has_stdio?
  • 新余网站开发公司巩义网站建设方案表
  • 东莞网络网站建设为什么运行wordpress
  • 【赵渝强老师】MySQL集群解决方案
  • CKA07--Argo CD
  • 事务隔离级别
  • html5网站开发软件重庆网络公司招聘
  • 厦门网站建设方案服务wordpress设置页面加载
  • 单元测试指南
  • C++实现LBM模拟Couette流
  • 实时显示鼠标的坐标值,注意事件的(event)
  • Parasoft C/C++test单元测试如何发现内存泄漏问题
  • 网站制作团队百度优选官网
  • 义乌网站推广怎么创建公司网站
  • MyBatis 动态 SQL 语法
  • 医院慢病电话随访:AI 问血压→异常转医生,0 人工
  • 网站建设采购项目合同书python入门基础教程
  • ajxa实例操作
  • 金融监管制度问答助手项目学习笔记(三)----RAFT微调
  • 【Qt】RK3576配置Qt5、GStreamer
  • 做消费金融网站价格做网站要用到什么软件
  • 无锡餐饮网站建设网页升级未成年人自行离开
  • CANOE概念与应用
  • 800V超充与V2G时代,AN3V ASIC霍尔传感器如何守护电流安全?
  • 佛山新网站建设哪家好html5特效网站
  • 箱线图生成器
  • 上海网站建设模板站霸网络网页设计与网站开发经济可行性
  • kuboard报错etcd无法访问 etcd 容量 大于 2G 导致报错了 etcdserver: mvcc: database space exceeded
  • 网站导航规划自适应文章网站模板