问题描述:实际工程化过程中,遇到显存问题,比如A模型占用显存1G,B模型占用显存2G,C模型占用显存3G,共占用6G,模型之间不存在并行推理情况,但是在初始化时候,使用warmup,会占用一定的显存,实际调用模型A+B+C,显存6给G,随着AI功能越来越多部署,会导致显存不足问题。
解决思路:使用完模型推理以后,把GPU缓存释放,同时不需要重新加载模型,可以即时模型推理。
解决方案:使用libtorch自带的缓存清理函数,c10::cuda::CUDACachingAllocator::emptyCache()
亲测有效,需要放在forward之后,或者放在封装调用接口函数之后,或者放在函数return之前。