我们基于昇腾 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 个强相关瓶颈)
-
Paged KV Cache 的 block 分配与释放导致 HBM 严重碎片采用固定大小 block(16 tokens/block),多并发动态分配 / 释放后,连续可用 block 快速下降,显存占用仅 65% 就出现无法分配新 block,被迫碎片整理,推理时延瞬间飙升 300%+。
-
Ascend C 核函数内无法高效感知 block 物理地址,访存不连续Paged KV 是离散 block 链表,但AI Core 访存连续预取失效,L2/L0 缓存命中率骤降,实际推理性能比连续 KV 低 35%~40%。
-
多 Stream 并发推理时 block 全局互斥锁冲突严重全局 block 管理器使用简单 mutex,多 Stream 高并发下锁竞争占比达 18%,AI Core 空转等待,吞吐量上不去。
求助问题
- 昇腾 910B+HBM 下,Paged KV Cache 的 block 内存布局如何设计才能避免 / 减少显存碎片?是否有 CANN 原生内存池接口可替代自定义 malloc?
- Ascend C 如何实现离散 block 的连续化访存优化,让 AI Core 仍能触发预取,提升 L2 命中率?
- 多 Stream 高并发场景下,block 管理无锁 / 轻量级锁方案在昇腾上如何落地?
我们基于昇腾 910B、CANN 7.2,使用Ascend C自研实现大模型推理的 PagedAttention 架构,目标是解决长文本 KV Cache 爆炸、高并发 OOM、显存碎片问题。但实际落地中遇到一系列硬件强相关、调度级、内存级瓶颈,尝试多种优化仍无法稳定达标,特来求助。
环境与目标
核心问题(3 个强相关瓶颈)
Paged KV Cache 的 block 分配与释放导致 HBM 严重碎片采用固定大小 block(16 tokens/block),多并发动态分配 / 释放后,连续可用 block 快速下降,显存占用仅 65% 就出现无法分配新 block,被迫碎片整理,推理时延瞬间飙升 300%+。
Ascend C 核函数内无法高效感知 block 物理地址,访存不连续Paged KV 是离散 block 链表,但AI Core 访存连续预取失效,L2/L0 缓存命中率骤降,实际推理性能比连续 KV 低 35%~40%。
多 Stream 并发推理时 block 全局互斥锁冲突严重全局 block 管理器使用简单 mutex,多 Stream 高并发下锁竞争占比达 18%,AI Core 空转等待,吞吐量上不去。
求助问题