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

CANN KV缓存选择算子

custom.npu_gather_selection_kv_cache

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

产品支持情况

产品是否支持
Atlas A3 推理系列产品

功能说明

GatherSelectionKvCache算子通过topk的稀疏索引从原始的full_kv_cache中进行gather操作,拼接成一块新的selection_kv_cache,支持DeepSeek模型在超大token场景下kv_cache的offload特性。其中,full_kv_cache支持host侧或device侧内存。

函数原型

custom.npu_gather_selection_kv_cache(Tensor(a!) selection_k_rope, Tensor(b!) selection_kv_cache, Tensor(c!) selection_kv_block_table, Tensor(d!) selection_kv_block_status, Tensor selection_topk_indices, Tensor full_k_rope, Tensor full_kv_cache, Tensor full_kv_block_table, Tensor full_kv_actual_seq, Tensor full_q_actual_seq, *, int selection_topk_block_size=64) -> Tensor

参数说明

说明:

  • BLOCK_SIZE表示每个block中的token数,S_BLOCK_NUM表示selection_kv_cache的block num,S_MAX_BLOCK_NUM表示selection_kv_cache的最大block num,F_BLOCK_NUM表示full_kv_cache的block num,F_MAX_BLOCK_NUM表示full_kv_cache的最大block num。
  • B(Batch Size)表示输入样本批量大小、S(Sequence Nums)表示输入样本序列个数、H(Head Num)表示多头数、TOPK表示选取的token个数。
  • selection_k_ropeTensor):表示被选取的k_rope,必选参数,不支持非连续,数据格式支持ND,计算结果原地更新,数据类型支持bfloat16float16int8,shape为:[S_BLOCK_NUM, BLOCK_SIZE, K_ROPE]。数据类型为int8时,仅支持输入空tensor。

  • selection_kv_cacheTensor):表示被选取的kv_cache,必选参数,不支持非连续,数据格式支持ND,计算结果原地更新,数据类型支持bfloat16float16int8,shape为:[S_BLOCK_NUM, BLOCK_SIZE, KV_CACHE]。

  • selection_kv_block_tableTensor):表示被选取的kv_cache对应的block table映射表,必选参数,不支持非连续,数据格式支持ND,计算结果原地更新,数据类型支持int32,shape为:[B*S*H, S_MAX_BLOCK_NUM]。

  • selection_kv_block_statusTensor):表示被选取的kv_cache对应的block table的status,记录selection_kv_cache和selection_k_rope中缓存的有效topk对应的id,必选参数,不支持非连续,数据格式支持ND,计算结果原地更新,数据类型支持int32。当shape类型为BSND时,shape为:[B, S, H, TOPK + 1];当shape类型为TND时,shape为:[B*S, H, TOPK + 1]。

  • selection_topk_indicesTensor):表示每个token选出的topk索引,必选参数,不支持非连续,数据格式支持ND,数据类型支持int32。当shape类型为BSND时,shape为:[B, S, H, TOPK];当shape类型为TND时,shape为:[B*S, H, TOPK]。

  • full_k_ropeTensor):表示全量的k_rope,必选参数,不支持非连续,数据格式支持ND,数据类型支持bfloat16float16int8,shape为:[F_BLOCK_NUM, BLOCK_SIZE, K_ROPE]。数据类型为int8时,仅支持输入空tensor。

  • full_kv_cacheTensor):表示全量的kv_cache,必选参数,不支持非连续,数据格式支持ND,数据类型支持bfloat16float16int8,shape为:[F_BLOCK_NUM, BLOCK_SIZE, K_CACHE]。

  • full_kv_block_tableTensor):表示全量的kv_cache对应的block table映射表,必选参数,不支持非连续,数据格式支持ND,数据类型支持int32,shape为:[B, F_MAX_BLOCK_NUM]。

  • full_kv_actual_seqTensor):表示全量的kv_cache中,不同Batch Size对应的有效token数,必选参数,不支持非连续,数据格式支持ND,数据类型支持int32,shape为:[B]。

  • full_q_actual_seqTensor):表示不同Batch Size对应的query的有效token数,必选参数,不支持非连续,数据格式支持ND,数据类型支持int32,shape为:[B]。

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

  • selection_topk_block_sizeint):可选参数,表示被选取的topk对应的BLOCK_SIZE大小,默认值为64。

返回值说明

  • selection_kv_actual_seqTensor):输出selection_kv_actual_seq,数据类型支持int32。数据格式支持ND,shape为[B*S*H]。

约束说明

  • 该接口支持推理场景下使用。
  • 该接口支持aclgraph入图。
  • 该接口与PyTorch配合使用时,需要保证CANN相关包与PyTorch相关包的版本匹配。
  • BLOCK_SIZE需要保证能被selection_topk_block_size整除。
  • TOPK ≤ 2048。
  • H当前只支持1。
  • S_BLOCK_NUM ≥ B * S * H * S_MAX_BLOCK_NUM。
  • selection_kv_block_status、selection_topk_indices的shape为'TND'格式时,T需要保证能被B整除。
  • topk大于32时,selection_topk_block_size仅支持为1。

调用示例

  • 详见test_npu_gather_selection_kv_cache.py

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

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

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

相关文章:

  • 可见性、有序性、原子性
  • 计算机网络参考模型——OIS和TCP/IP(图解与核心知识点)华为数通认证必备知识点笔记
  • Android类加载
  • 2026交调系统厂家靠谱推荐,广州聚杰芯科,全链条自主可控 - 品牌速递
  • CANN Qwen3-next推理优化
  • 观察Taotoken用量看板如何帮助个人开发者优化Token消耗
  • 成都钢板经销商|专注西南板材一站式批发|获取盛世钢联免费钢板报价 - 四川盛世钢联营销中心
  • VibeVoice实现90分钟、多角色播客生成,拓展语音合成新边界 - ace-
  • C++内存模型
  • 清洁度分析仪究竟哪家靠谱?2026 AI液冷清洁度分析仪选型避坑指南 - 工业干货社
  • CANN模型推理并行策略分析
  • 前后端分离作业管理系统系统|SpringBoot+Vue+MyBatis+MySQL完整源码+部署教程
  • 基于Swin-UNETR的AI冠状动脉钙化自动评分系统开发与临床验证
  • 2026交调系统哪家好?广州聚杰芯科交调系统,质量好、信得过 - 品牌速递
  • 成都螺纹钢代理商|专注西南建筑钢材一站式批发|获取盛世钢联免费钢筋报价 - 四川盛世钢联营销中心
  • 设计模式的原则和策略
  • 厂家直供更划算!2026广州聚杰芯科交通流量调查系统,品质靠谱售后有保障 - 品牌速递
  • 生成式AI开发中的法律风险:从数据爬取到模型部署的合规指南
  • 第 9 章:泛型、Trait 与宏
  • KNN模型准确率低?数据标准化与中心化是关键
  • AtCoder Beginner Contest 457 ABCDE 题目解析
  • 坑道钻机核心技术解析与2025年优质厂家选购全攻略 - 品牌策略师
  • 基于Claude AI与MCP的智能体架构:自动化竞争情报分析实战
  • CANN/community安全设计指南
  • 老药丸闲置别乱处理,北京记录者商行专业上门回收,合规安心变现 - 品牌排行榜单
  • DriverStore Explorer完全指南:免费清理Windows驱动存储区,让电脑运行更流畅
  • CANN/cannbot-skills Ops EasyASC DSL 仓库地图
  • 成都螺纹钢经销商|专注西南建筑钢材一站式批发|获取盛世钢联免费钢筋报价 - 四川盛世钢联营销中心
  • NLP技术量化组织民主氛围:从文本数据到决策过程分析
  • 从‘28’到‘00’:手把手调试蓝桥杯按键扫描程序,避开长按短按的那些坑