MindSpore在昇腾310上推理结果不稳定且出现GetNext算子错误,最近在昇腾310平台上部署一个基于MindSpore训练的目标检测模型时,遇到了两个比较棘手的问题
收藏回复举报
MindSpore在昇腾310上推理结果不稳定且出现GetNext算子错误,最近在昇腾310平台上部署一个基于MindSpore训练的目标检测模型时,遇到了两个比较棘手的问题
t('forum.solved') 已解决
发表于2026-03-25 23:50:13
0 查看

MindSpore在昇腾310上推理结果不稳定且出现GetNext算子错误

问题描述:

最近在昇腾310平台上部署一个基于MindSpore训练的目标检测模型时,遇到了两个比较棘手的问题:

  1. 推理结果不一致:同一模型、同一输入数据多次推理,输出置信度波动较大,差值最高能达到15%左右,这严重影响了模型的可靠性。

  2. 性能波动异常:部分批次的推理耗时从正常的平均50ms突然增加到200ms以上,且这种波动没有明显规律可循。

  3. 特定错误日志:在某些情况下会出现 [ERROR] RUNTIME: aicpu kernel execute failed, fault kernel_name=GetNext的报错。

环境信息:

  • 硬件:昇腾310加速卡(Atlas 300)

  • 操作系统:Ubuntu 18.04.6 LTS

  • MindSpore版本:1.8.1(Python 3.7)

  • CANN版本:5.1.RC2

  • 驱动版本:22.0.2

  • 模型:YOLOv5s转换后的MindIR格式,输入尺寸为1×3×640×640

详细现象:

模型训练阶段一切正常,loss收敛良好。但在推理阶段,即使使用完全相同的输入数据,连续运行多次推理,模型的输出置信度会有明显差异。同时,推理时间也会出现不规律的突增,从监控数据看,NPU利用率在性能下降时并没有明显变化。

已尝试的解决方案:

  1. 检查了数据预处理流程,确保输入数据格式和归一化方式与训练时完全一致

  2. 尝试固定输入尺寸为640×640,但问题依然存在

  3. 调整了batch size(从8降到4再到2),性能波动有所减少但未根本解决

  4. 检查了内存连续性,在数据送入模型前添加了contiguous()操作

  5. 配置了动态分辨率支持,设置了多个预设尺寸档位

  6. 通过npu-smi info监控显存使用,未发现明显异常

核心疑问:

  1. 昇腾310的GRAPH接口对动态尺寸输入的支持是否完善?是否需要强制固定所有输入尺寸?

  2. GetNext算子错误通常与数据预处理流水线相关,但在简化预处理流程后问题仍然出现,是否有其他可能原因?

我要发帖子