我在开发一个动态加载模型的服务程序时遇到了内存泄漏的困扰。程序的核心逻辑是根据业务需求动态加载不同的模型进行推理,推理完成后卸载模型,再加载下一个模型。我发现程序运行一段时间后,设备内存占用会持续攀升,最终导致内存分配失败。我已经在每次模型卸载后调用了aclmdlUnload和对应的aclrtFree接口释放输入输出内存,也用aclrtResetDevice尝试过重置设备,但内存增长的问题依然存在。更奇怪的是,用npu-smi查看显存占用,发现增长的幅度并不固定,有时候卸载后显存能基本恢复,有时候却有明显的残留。想请教一下大家,在CANN应用开发中,这种多次加载卸载模型导致的内存增长问题应该从哪些角度去排查和解决?
我在开发一个动态加载模型的服务程序时遇到了内存泄漏的困扰。程序的核心逻辑是根据业务需求动态加载不同的模型进行推理,推理完成后卸载模型,再加载下一个模型。我发现程序运行一段时间后,设备内存占用会持续攀升,最终导致内存分配失败。我已经在每次模型卸载后调用了aclmdlUnload和对应的aclrtFree接口释放输入输出内存,也用aclrtResetDevice尝试过重置设备,但内存增长的问题依然存在。更奇怪的是,用npu-smi查看显存占用,发现增长的幅度并不固定,有时候卸载后显存能基本恢复,有时候却有明显的残留。想请教一下大家,在CANN应用开发中,这种多次加载卸载模型导致的内存增长问题应该从哪些角度去排查和解决?