news 2026/5/9 12:38:43

CANN索引器压缩后处理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN索引器压缩后处理

custom-npu_indexer_compress_epilog

【免费下载链接】cann-recipes-infer本项目针对LLM与多模态模型推理业务中的典型模型、加速算法,提供基于CANN平台的优化样例项目地址: https://gitcode.com/cann/cann-recipes-infer

产品支持情况

产品是否支持
Ascend 950PR/Ascend 950DT

功能说明

对输入 x 进行量化,根据 slot_mapping 中的下标映射值,将量化后输出的 value 和 scale 分别更新到 indexer_compress_cache 和 indexer_compress_scale 中的对应位置(slot_mapping 的值为 -1 时,表示无效,不执行更新)。该接口的量化算法实现为每128个数进行一次量化。

计算公式

$$ index = torch.where(slot_mapping != -1) $$

$$ slot_mapping = slot_mapping[index] $$

$$ x = x[index] $$

$$ value, scale = DynamicQuant(x) $$

$$ indexer_compress_cache[slot_mapping] = value $$

$$ indexer_compress_scale[slot_mapping] = scale $$

函数原型

custom.indexer_compress_epilog(Tensor(a!) indexer_compress_cache, Tensor(b!) indexer_compress_scale, Tensor x, Tensor slot_mapping, *, int quant_mode=1, bool round_scale=True) -> ()

参数说明

说明:

  • b(batch size)表示输入样本批量大小、s(sequence length)表示输入样本序列长度、d(head dimension)表示注意力头的维度数、T表示bs合轴后的大小。
  • indexer_compress_cacheTensor):必选参数,输入tensor,存放量化的value,x量化后的值更新到此Tensor。不支持非连续,数据格式支持ND,数据类型支持float8_e4m3fnfloat8_e5m2,shape为[ T, d ]。

  • indexer_compress_scaleTensor):必选参数,输入tensor,存放量化的scale,x量化后的scale更新到此Tensor。不支持非连续,数据格式支持ND,数据类型支持floatfloat8_e8m0,shape为[ T, scale_factor ]。

  • xTensor):必选参数,输入tensor,x为待量化的数据。不支持非连续,数据格式支持ND,数据类型支持float16bfloat16,shape为[ T, d ]。

  • slot_mappingTensor):必选参数,输入tensor,存放x中每条数据到indexer_compress_cache 和 indexer_compress_scale 的下标映射,x量化后的 value 和 scale 根据下标进行更新。不支持非连续,数据格式支持ND,数据类型支持int32,shape为[ T ],取值范围为[ -1, T )。

  • *:代表其之前的参数是位置相关的,必须按照顺序输入,属于必选参数;其之后的参数是键值对赋值,与位置无关,属于可选参数(不传入会使用默认值)。

  • quant_modeint,可选):取值范围0或1,取值为1时量化输出indexer_compress_scale为float32类型;取值为0时量化输出indexer_compress_scale为float8_e8m0类型。两种量化均为每128个数进行一次量化。

  • round_scalebool, 可选):是否开启round计算,仅Mx量化时生效,默认为True。

返回值说明

无返回值,indexer_compress_cache 和 indexer_compress_scale 做原地操作更新。

约束说明

  • shape 字段取值范围约束 | 字段名 | 取值规则与说明 | |--------------|-------------------------------------------| | d | 取值固定为: 4096 | | scale_factor | 取值为d / 128向上取整,固定为32 | | quant_mode | 取值为0或1, 1为普通量化,0为Mx量化 |
  • slot_mapping表示下标映射,取值范围为[ -1, T )
  • 该接口支持推理场景下使用。
  • 在indexer_compress_scale为float时,该接口支持aclgraph入图。
  • 该接口与PyTorch配合使用时,需要保证CANN相关包与PyTorch相关包的版本匹配。

调用示例

  • 详见 test_npu_indexer_compress_epilog.py

【免费下载链接】cann-recipes-infer本项目针对LLM与多模态模型推理业务中的典型模型、加速算法,提供基于CANN平台的优化样例项目地址: https://gitcode.com/cann/cann-recipes-infer

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

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

CANN torchtitan-npu测试指南

Test Guide 【免费下载链接】torchtitan-npu Ascend Extension for torchtitan 项目地址: https://gitcode.com/cann/torchtitan-npu Core Commands Unit Tests # Run all unit tests and generate reports sh build.sh -u --generate-report# Run only local torchti…

作者头像 李华
网站建设 2026/5/9 12:33:30

求推荐芜湖靠谱的装修公司?来看我的真实体验

刚装完新房的我太懂找装修的焦虑了,当初我翻遍芜湖本地论坛、问了一圈朋友,就是为了求推荐芜湖靠谱的装修公司,踩了两次免费报价的坑后,最终敲定了雅园装饰,整个装修过程的体验远超我的预期,今天就把整个过…

作者头像 李华
网站建设 2026/5/9 12:30:55

OpenCore Legacy Patcher:三步让老Mac焕发新生,轻松体验最新macOS

OpenCore Legacy Patcher:三步让老Mac焕发新生,轻松体验最新macOS 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 你是否还在为老旧的…

作者头像 李华
网站建设 2026/5/9 12:30:27

CANN/catlass Gemm/Block类模板概述

Gemm/Block 类模板概述 【免费下载链接】catlass 本项目是CANN的算子模板库,提供NPU上高性能矩阵乘及其相关融合类算子模板样例。 项目地址: https://gitcode.com/cann/catlass API 清单 blockMmad清单 组件描述block_mmad基础模板,包含BlockMm…

作者头像 李华
网站建设 2026/5/9 12:28:54

数据不再是成本,而是资产:企业为何必须拥抱数据治理?

在许多企业的月度经营分析会上,常会出现以下尴尬局面:销售副总裁汇报客户增长率为15%,财务总监测算的销售收入增幅仅为8%,而市场部展示的获客名单又与两者截然不同。各部门不仅为业绩好坏争执不休,更因“哪个数据才是真…

作者头像 李华
网站建设 2026/5/9 12:28:38

CANN/metadef C_Format接口

C_Format 【免费下载链接】metadef Ascend Metadata Definition 项目地址: https://gitcode.com/cann/metadef typedef enum {C_FORMAT_NCHW 0, // NCHWC_FORMAT_NHWC, // NHWCC_FORMAT_ND, // Nd TensorC_FORMAT_NC1HWC0, // NC1HWC0C_FORMAT_FRAC…

作者头像 李华