各位昇腾社区的大佬好,
最近我们在生产环境尝试基于 MindIE 2.3.0 部署 Qwen2.5-72B-Instruct 的 W8A8 量化版本,硬件环境是 Atlas 800 A2 (8x 910B 32G)。在静态 Batch 测试下运行稳定,但在开启服务化动态 Batching(Dynamic Batching)并模拟高并发请求(QPS > 40)约 2 小时后,服务会偶发性崩溃,报错指向 HBM 显存不足,但监控显示此时显存占用率并未达到 100%(约 85% 左右),怀疑是显存碎片化问题。
一、环境信息
- OS: EulerOS 2.0 SP9 (Kernel 4.19)
- CANN: 8.0.RC2
- MindIE: 2.3.0 (2026/01/17 发布版)
- Model: Qwen2.5-72B-Instruct (Weight-Only Int8 Quantized via MindIE Toolkit)
- Device: 8x Ascend 910B (HBM 32GB per card)
- Deployment Mode: DP=8, TP=1 (每卡加载完整模型副本,通过 DP 分发)
二、核心配置文件 (config.json) 关键片段
三、报错日志摘要
崩溃时的 mindie_service.log 关键报错如下:
随后进程退出,状态码 139 (SIGSEGV)。
四、已尝试的排查与优化手段(均无效)
- 调整预分配比例:将
preAllocRatio 从默认的 0.9 调至 0.95 甚至 0.98,虽然延长了崩溃出现的时间,但无法根除,且冷启动时间显著增加。 - 开启内存碎片整理:配置中已显式开启
enableMemoryFragmentReuse: true,但日志显示 Fragmentation Ratio 依然飙升至 0.68,似乎该策略在长序列(>10k)动态变化时生效不明显。 - 关闭 MB Swapper:尝试关闭
MIES_USE_MB_SWAPPER 环境变量,强制使用物理 HBM,结果崩溃更快,确认瓶颈确实在物理显存碎片而非 Swap 交换速度。 - 调整 Batching 策略:将
preferredBatchSize 改为固定值或缩小 maxWaitTimeMs,减少 Batch 合并的频率,但这直接导致吞吐量(Throughput)下降了 40%,不符合 SLA 要求。 - 算子编译选项:重新编译自定义算子,尝试开启
MATMUL_ND_NZ_ENABLE=0(参考了社区关于 Qwen2_VL 的某些讨论),对本场景无明显改善。
五、求助点
目前的现象非常像是 KV Cache 在动态扩容过程中产生了大量无法复用的微小碎片。
- 在 MindIE 2.3.0 版本中,针对长序列动态 Batching 场景,是否有更激进的 PagedAttention 相关配置参数可以调整?(目前文档中关于
blockSize 或 gpuMemoryUtilization 的描述较少)。
各位昇腾社区的大佬好,
最近我们在生产环境尝试基于 MindIE 2.3.0 部署 Qwen2.5-72B-Instruct 的 W8A8 量化版本,硬件环境是 Atlas 800 A2 (8x 910B 32G)。在静态 Batch 测试下运行稳定,但在开启服务化动态 Batching(Dynamic Batching)并模拟高并发请求(QPS > 40)约 2 小时后,服务会偶发性崩溃,报错指向 HBM 显存不足,但监控显示此时显存占用率并未达到 100%(约 85% 左右),怀疑是显存碎片化问题。
一、环境信息
二、核心配置文件 (
config.json) 关键片段1{ 2 "modelConfig": { 3 "modelWeightPath": "/data/models/qwen2.5-72b-w8a8", 4 "worldSize": 8, 5 "backend": "mindie_llm" 6 }, 7 "serviceConfig": { 8 "maxBatchSize": 128, 9 "maxSeqLen": 32768, 10 "dynamicBatching": { 11 "enable": true, 12 "maxWaitTimeMs": 10, 13 "preferredBatchSize": [1, 4, 8, 16, 32] 14 }, 15 "memoryOptimization": { 16 "enableMemoryFragmentReuse": true, 17 "preAllocRatio": 0.95, 18 "swapStrategy": "MB_SWAPPER" 19 } 20 } 21}三、报错日志摘要
崩溃时的
mindie_service.log关键报错如下:随后进程退出,状态码 139 (SIGSEGV)。
四、已尝试的排查与优化手段(均无效)
preAllocRatio从默认的 0.9 调至 0.95 甚至 0.98,虽然延长了崩溃出现的时间,但无法根除,且冷启动时间显著增加。enableMemoryFragmentReuse: true,但日志显示 Fragmentation Ratio 依然飙升至 0.68,似乎该策略在长序列(>10k)动态变化时生效不明显。MIES_USE_MB_SWAPPER环境变量,强制使用物理 HBM,结果崩溃更快,确认瓶颈确实在物理显存碎片而非 Swap 交换速度。preferredBatchSize改为固定值或缩小maxWaitTimeMs,减少 Batch 合并的频率,但这直接导致吞吐量(Throughput)下降了 40%,不符合 SLA 要求。MATMUL_ND_NZ_ENABLE=0(参考了社区关于 Qwen2_VL 的某些讨论),对本场景无明显改善。五、求助点
目前的现象非常像是 KV Cache 在动态扩容过程中产生了大量无法复用的微小碎片。
blockSize或gpuMemoryUtilization的描述较少)。