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

CANN/catlass动态优化量化矩阵乘法示例

DynamicOptimizedQuantMatmulPerTokenBasic Example Readme

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

1 背景

基于泛化性要求,本样例在样例102之外,新增了处理量化Matmul的泛化工程实现,本样例目前支持PerToken-PerChannel量化Matmul基础模板。

量化被广泛应用于现代高性能计算的深度学习模型中,特别是在推理过程中。通过量化,模型可以在硬件上更高效地运行,减少计算资源的消耗和加速推理过程,同时降低模型的存储需求。

目前支持的量化计算模式包括:PerToken量化和PerChannel量化。在以下的介绍中,m、n、k变量分别表示Tensor计算的不同轴大小。左矩阵、右矩阵分别指进行矩阵乘法计算的两个输入Tensor。

  • PerToken量化:通常用于量化左矩阵,对每个Token(即左矩阵的一行)使用独立的量化参数进行计算。假设左矩阵shape为(m, k),k为reduce轴,则生成的PerToken量化参数的shape为(m,)。

  • PerChannel量化:通常用于量化右矩阵,对每个Channel(即右矩阵的一列)使用独立的量化参数进行计算。假设右矩阵shape为(k, n),k为reduce轴,则生成的PerChannel量化参数的shape为(n,)。

一般左矩阵代表激活activation(A)、右矩阵代表权重weight(W),本样例目前支持左右矩阵输入数据类型为int8、对左矩阵进行PerToken量化+对右矩阵进行PerChannel量化的场景,可简记为W8A8 PerToken-PerChannel 全量化Matmul场景。

2 文档索引和约束说明

2.1 工程说明

泛化量化Matmul工程结构说明可参考:工程结构说明。本工程遵循与样例102类似的模板生成、Tiling计算、模板选择等流程,并根据量化Matmul计算特点进行了适配修改。

工程编译前会调用python脚本生成代码,具体包括调用各模板的外围代码,以及launch_map.h(包含tilingKey和具体Kernel的映射关系)。

本工程默认编译为动态库,编译完成执行样例前,请export动态库路径:

export LD_LIBRARY_PATH=/path/to/catlass/output/shared_lib/lib/:$LD_LIBRARY_PATH

2.2 工程结构

├── CMakeLists.txt ├── README.md ├── dynamic_optimized_quant_matmul_per_token_basic.cpp ├── impl │ ├── kernel │ │ ├── per_token_matmul_kernel.h │ ├── scripts │ │ ├── templates │ │ │ ├── per_token_matmul_template.py │ │ ├── utils │ │ │ └── config.py │ │ └── wrapper_code_gen.py │ └── wrapper # 自动生成 │ ├── per_token_matmul_kernel_int8_t_layout00.cpp # 自动生成 │ ├── per_token_matmul_kernel_int8_t_layout01.cpp # 自动生成 │ ├── per_token_matmul_kernel_int8_t_layout10.cpp # 自动生成 │ ├── per_token_matmul_kernel_int8_t_layout11.cpp # 自动生成 └── include ├── do_tiling_b8.h ├── dynamic_optimized_matmul_w8a8.h ├── launch_map.h # 自动生成 ├── platform_info.h ├── select_kernel_b8.h ├── tiling_params.h └── utils.h

2.3 模板文档

模板名称说明
PerTokenBasicMatmulPerToken 基础模板(文档待补充...)

2.4 约束说明

  • A、B矩阵的数据类型支持int8。
  • C矩阵的数据类型支持fp16。
  • A、B、C矩阵的数据格式支持ND(RowMajor和ColumnMajor)。

3 编译指定用例

bash scripts/build.sh 103_dynamic_optimized_quant_matmul_per_token_basic export LD_LIBRARY_PATH=/path/to/catlass/output/shared_lib/lib/:$LD_LIBRARY_PATH cd output/bin # 可执行文件名 |矩阵m轴|n轴|k轴|LayoutA|LayoutB|Device ID # 0 is RowMajor, 1 is ColumnMajor ./103_dynamic_optimized_quant_matmul_per_token_basic 256 512 1024 0 1 0

执行结果如下,说明精度比对成功。

Compare success.

如果需要进行批量性能测试,请注释掉精度比较代码,由于精度比较使用CPU计算golden,耗时较长。


当前样例输出数据类型为fp16,如需修改为bf16,请进行以下代码修改后重新编译执行:

  • examples/103_dynamic_optimized_quant_matmul_per_token_basic/include/do_tiling_b8.h中,将所有DoTilingB8LayoutXX函数中使用的fp16_t替换为bfloat16
  • examples/103_dynamic_optimized_quant_matmul_per_token_basic/dynamic_optimized_quant_matmul_per_token_basic.cpp中,搜索fp16_t替换为bfloat16
  • examples/103_dynamic_optimized_quant_matmul_per_token_basic/impl/scripts/per_token_matmul_template.py中,将element_chalf替换为bfloat16_t

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

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

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

相关文章:

  • 2026年第二季度景石批发优选指南:聚焦渔沟镇石业核心竞争力 - 2026年企业推荐榜
  • 预测锦标赛:量化AGI风险与时间线的市场机制
  • 2026年至今,安徽除甲醛专业服务商深度解析:小净熊环保实力如何? - 2026年企业推荐榜
  • ATVOSS默认核配置详解
  • 2026年AIGemini 3.1 Pro赋能无障碍交互新突破
  • Linux 基础知识有哪些?
  • 算法定价、数据驱动与市场博弈:从个性化定价到算法合谋的风险与应对
  • 开源项目赞助管理平台Sponsio:自托管部署与核心架构解析
  • 2026年当前,杭州浴室柜配件一站式解决方案服务商推荐 - 2026年企业推荐榜
  • Python 爬虫高级实战:网盘资源信息批量爬虫开发
  • CANNOps-Transformer FlashAttention梯度V4
  • 2026年当下,如何精准联系安徽专业除甲醛服务商?一份基于实证的决策参考 - 2026年企业推荐榜
  • 基于Kuramoto模型与CNN的脑电信号同步特征提取与分类方法
  • Pyroclast框架:地球动力学模拟的高性能Python解决方案
  • AI算法在多市场环境下的合谋机制与市场分配策略研究
  • AI驱动分子逆合成:Transformer与扩散模型技术解析与实践
  • Gemini CLI实战指南:从安装配置到自动化工作流
  • ATB RingMLA C++示例
  • Functionary开源模型实战:构建自主可控的AI函数调用智能体
  • 2026年赤峰市养老护理机构权威发布榜/养老护理员 - 品牌策略师
  • MCP测试服务器实战:为AI Agent开发构建安全可控的测试环境
  • 利用AI与MCP协议高效开发与调试Adaptive Cards
  • 为AI助手打造本地音频MCP服务器:实现隐私安全的智能录音与分析
  • CANN/triton-ge-backend性能调优方法论
  • CANN/pyasc向量标量最大值API
  • AI与逻辑回归模型在抗生素耐药性风险预测与临床决策中的应用
  • 10x-Agent-Loop:突破AI编程助手配额限制的智能缓存与调度方案
  • 2026年现阶段,哈尔滨抖音代运营服务商如何选?深度解析哈尔滨翰诺网络科技有限公司 - 2026年企业推荐榜
  • RAG系统交互式调试:从黑盒到白盒的工程实践指南
  • 大模型API聚合服务:一站式解决多模型接入难题