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

CANN/catlass 逐令牌反量化

Block Epilogue Per Token Dequant

【免费下载链接】catlass本项目是CANN的算子模板库,提供NPU上高性能矩阵乘及其相关融合类算子模板样例。项目地址: https://gitcode.com/cann/catlass

代码位置

功能说明

  • BlockEpilogue偏特化实现,使用perTokenScale和perChannelScale对block数据做perToken和perChannel的反量化。

  • 计算公式:$blockD_{ij} = blockC_{ij} * perChannelScale_j * perTokenScale_i$

  • 当前支持的blockC、perChannelScale、perTokenScale、blockD数据类型

blockCperChannelScaleperTokenScaleblockD
int32halfhalfhalf
int32bfloat16_tbfloat16_tbfloat16_t
int32floatfloathalf
int32floatfloatbfloat16_t

调度策略

// For AtlasA2, per token dequant template <uint32_t UB_STAGES_> struct EpilogueAtlasA2PerTokenDequant { using ArchTag = Arch::AtlasA2; static constexpr uint32_t UB_STAGES = UB_STAGES_; };

调用示例

Block组装

参考样例12_quant_matmul

constexpr uint32_t ubStages = 2; using EpilogueDispatchPolicy = Epilogue::EpilogueAtlasA2PerTokenDequant<ubStages>; using ScaleType = Gemm::GemmType<bfloat16_t, layout::VectorLayout>; using PerTokenScaleType = Gemm::GemmType<bfloat16_t, layout::VectorLayout>; using DType = Gemm::GemmType<bfloat16_t, layout::RowMajor>; using RowBroadcastMulType = Gemm::GemmType<float, layout::RowMajor>; using BroadcastOneBlkType = Gemm::GemmType<float, layout::RowMajor>; using OneBlkColumnBroadcastMulType = Gemm::GemmType<float, layout::RowMajor>; using EpilogueTileShape = MatrixShape<32, 256>; using TileRowBroadcastMul = Epilogue::Tile::TileRowBroadcastMul<ArchTag, RowBroadcastMulType, EpilogueTileShape>; using TileBroadcastOneBlk = Epilogue::Tile::TileBroadcastOneBlk<ArchTag, BroadcastOneBlkType, EpilogueTileShape::ROW>; using TileOneBlkColumnBroadcastMul = Epilogue::Tile::TileOneBlkColumnBroadcastMul<ArchTag, OneBlkColumnBroadcastMulType, EpilogueTileShape>; using TileCopy = Epilogue::Tile::TileCopy<ArchTag, CType, ScaleType, PerTokenScaleType, DType>; using TileScheduler = Epilogue::Tile::EpilogueHorizontalTileSwizzle;
using BlockEpilogue = Epilogue::Block::BlockEpilogue< EpilogueDispatchPolicy, // 选用的后处理调度策略 CType, // 反量化前block的类型 ScaleType, // perChannelScale的类型 PerTokenScaleType, // perTokenScale的类型 DType, // 反量化后block的类型 TileRowBroadcastMul, // tile组件,将(1,n)的scale广播到(m,n)后与block相乘 TileBroadcastOneBlk, // tile组件,将(m,1)的perTokenScale广播到(m,32B) TileOneBlkColumnBroadcastMul, // tile组件,将(m,32B)的perTokenScale广播到(m,n)后与block相乘 TileCopy, // tileCopy组件 TileScheduler // tile块切分调度 >;

Block实例化

参考quant_matmul_multistage_workspace,在kernel代码的void operator()<AscendC::AIV>函数中:

BlockEpilogue blockEpilogue(resource);

Block更新params

参考quant_matmul_multistage_workspace,在kernel代码的void operator()<AscendC::AIV>函数中:

EpilogueParams epilogueParams{ params.ptrScale, // perChannelScale的GM地址 layoutScale, // perChannelScale的layout params.ptrPerTokenScale, // perTokenScale的GM地址 layoutPerTokenScale, // perTokenScale的layout params.ptrD, // 输出矩阵的GM地址 layoutD // 输出矩阵的layout }; blockEpilogue.UpdateParams(epilogueParams);

Block执行

参考basic_matmul,在kernel代码的void operator()<AscendC::AIC>函数中:

blockEpilogue( blockShapeMNK, // block的shape blockCoordMNK, // block在输出矩阵中的坐标(block粒度) actualBlockShapeMNK, // 待处理block的实际shape gmBlockC, // 待处理block在GM上起始地址 layoutBlockC // 待处理block的layout );

约束说明

  • 当前仅支持blockC、blockD的layout均为RowMajor,perChannelScale、perTokenScale的layout均为VectorLayout

【免费下载链接】catlass本项目是CANN的算子模板库,提供NPU上高性能矩阵乘及其相关融合类算子模板样例。项目地址: https://gitcode.com/cann/catlass

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

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

相关文章:

  • 等变神经网络:用群论与表示论构建具备对称性先验的AI模型
  • 如何快速掌握Video DownloadHelper CoApp:新手入门完整指南
  • CANN/catccos AllGather反量化算子
  • CANN/ATVC ACLNN调用示例
  • 从SPI到8080:一文搞懂MIPI DBI(Type C)如何驱动你的LCD屏并优化帧率
  • CANN/AMCT KV-Cache量化模型创建
  • 乡村全科执业医师培训机构哪个好?这份2026最新调研报告告诉你 - 医考机构品牌测评专家
  • RT2.0 动态 Shape 执行器特性分析
  • 从“算力竞赛”到“业务落地”:AI营销一体机选型的几点思考
  • Java老兵转型AI开发实战指南:收藏这份从零到精通的学习路线,小白也能快速上手大模型
  • 2026年4月靠谱的通风蝶阀厂家推荐,电动组合风阀/岗位轴流风机/吊顶式空调机组/通风蝶阀,通风蝶阀门店找哪家 - 品牌推荐师
  • 避坑指南:在CentOS7上为TensorFlow2.6搭建Python3.8环境,我踩过的那些‘依赖’雷
  • Swift-All实战:用T4显卡微调7B大模型,一小时成本不到5块钱
  • 深度学习赋能医学影像:COVID-19检测与病灶分割技术全解析
  • 淘金币自动化脚本终极指南:如何每天5分钟完成淘宝全任务
  • 2025届毕业生推荐的五大降AI率工具横评
  • 高校研究小组如何借助Taotoken低成本使用多种大模型进行实验
  • CANN推理优化实践:Kimi-K2-Thinking
  • 连云港本地CPPM官方授权报名中心及联系方式 - 众智商学院课程中心
  • CANN/ge Profiling特性介绍
  • 从Transformer到对齐:大语言模型完整技术栈与实战解析
  • 搞定OpenWrt下Sane移动端扫描的‘最后一公里’:一个Go程序的编译与部署实战
  • CANN驱动设备兼容查询
  • 大模型部署的社会风险与三层治理框架:从技术可控到社会可信
  • AI安全实战:从内容溯源到红队演练构建可信AI系统
  • 5分钟让小爱音箱变身AI语音助手:MiGPT完整指南
  • 面试官最爱问的同步FIFO细节:空满信号用组合逻辑还是时序逻辑?实战避坑指南
  • 唐山本地CPPM官方授权报名中心及联系方式 - 众智商学院课程中心
  • 黄仁勋:中国不仅有“鬼数据中心”,还有庞大的能源、芯片、AI人才优势
  • CANN/metadef数值兼容性检查