昇腾 CANN 7.2 + Ascend C 实现 PagedAttention 遇到显存碎片、block 管理低效、推理时延抖动求助
收藏回复举报
昇腾 CANN 7.2 + Ascend C 实现 PagedAttention 遇到显存碎片、block 管理低效、推理时延抖动求助
t('forum.solved') 已解决
新人帖
发表于2026-03-24 22:11:48
0 查看

我们基于昇腾 910B、CANN 7.2,使用Ascend C自研实现大模型推理的 PagedAttention 架构,目标是解决长文本 KV Cache 爆炸、高并发 OOM、显存碎片问题。但实际落地中遇到一系列硬件强相关、调度级、内存级瓶颈,尝试多种优化仍无法稳定达标,特来求助。

环境与目标

  • 芯片:昇腾 910B 32GB HBM
  • 框架:纯 Ascend C + CANN Runtime
  • 模型:LLaMA 7B/13B
  • 场景:8k 上下文,batch=32 高并发推理
  • 目标:时延抖动 <5%,显存利用率> 85%,无 OOM

核心问题(3 个强相关瓶颈)

  1. Paged KV Cache 的 block 分配与释放导致 HBM 严重碎片采用固定大小 block(16 tokens/block),多并发动态分配 / 释放后,连续可用 block 快速下降,显存占用仅 65% 就出现无法分配新 block,被迫碎片整理,推理时延瞬间飙升 300%+。

  2. Ascend C 核函数内无法高效感知 block 物理地址,访存不连续Paged KV 是离散 block 链表,但AI Core 访存连续预取失效,L2/L0 缓存命中率骤降,实际推理性能比连续 KV 低 35%~40%。

  3. 多 Stream 并发推理时 block 全局互斥锁冲突严重全局 block 管理器使用简单 mutex,多 Stream 高并发下锁竞争占比达 18%,AI Core 空转等待,吞吐量上不去。

求助问题

  1. 昇腾 910B+HBM 下,Paged KV Cache 的 block 内存布局如何设计才能避免 / 减少显存碎片?是否有 CANN 原生内存池接口可替代自定义 malloc?
  2. Ascend C 如何实现离散 block 的连续化访存优化,让 AI Core 仍能触发预取,提升 L2 命中率?
  3. 多 Stream 高并发场景下,block 管理无锁 / 轻量级锁方案在昇腾上如何落地?

我要发帖子