已关闭
[Requirement|需求建议]: 新增engram_fetch && engram_fetch_wait算子 #3385
wuchenhao123创建于  6月28日关闭于  6月29日
wuchenhao123
wuchenhao123成员
6月28日 创建

Thanks for sending an requirement! Please fill in the following template to help quickly solve your problem.

Backgroud(背景信息)

在大模型推理中,部分 token 可以不用npu计算得到,可以通过提前的buffer缓存去取出该部分token。常规流程中这些数据需要在 NPU
上重新计算一遍,占用推理时间。

本次提交的 engram_fetch / engram_fetch_wait 算子解决的问题是:绕过 NPU 计算,将这部分数据提前放入 Engram Buffer(CPU 侧映射到 Device
地址空间的内存池),推理时直接通过 indices 从 Engram 中 fetch 对应数据到输出张量,省去这些 token 的推理计算。

两个算子配合工作:engram_fetch 按索引从 Engram Buffer 异步拉取数据到 Device GM(本地 DMA + 跨 rank RDMA),engram_fetch_wait 等待所有异步操作完成。

Benefit / Necessity (价值/作用)

降低推理时延:对于可预的 token 数据,不再走 NPU 全流程推理,而是直接从 CPU 映射的 Engram Buffer 中 fetch,用内存访问代替重复计算,减少端到端推理耗时。

Design(设计方案)

engram_fetch:

  • DMA 搬入全部 indices
  • 遍历 token,判断 globalIdx 是否在本 core 负责范围
  • 本地 rank: 分 tile GM→UB→GM DMA 拷贝
  • 远程 rank: Hcomm.ReadNbi 异步 RDMA 读取
  • 统一 Commit 提交本 channel 的 RDMA 请求

engram_fetch_wait:
-对其他 rank 调用 hcomm.Drain() 等待 RDMA 完成

likedislike
wuchenhao123wuchenhao123成员
6月28日 添加了label:requirement
wuchenhao123
wuchenhao123成员
6月28日 评论:

/assign

likedislike
CANN-robot
CANN-robot成员
6月28日 评论:

Notice

This issue is already assigned to wuchenhao123. Please do not assign repeatedly.

likedislike
wuchenhao123wuchenhao123成员
6月28日 关联了pull request:新增engram_fetch 核函数 && engram_fetch_wait算子
CANN-robotCANN-robot成员
6月29日 关闭了 issue
CANN-robotCANN-robot成员
6月29日 添加了label:resolved