为了充分利用CPU/GPU,我运行了数个进程,在不同的数据集上进行DNN推理(前向传递)。由于这些进程在前向传递期间会分配CUDA内存,因此我遇到了CUDA内存溢出的错误。为了缓解这个问题,我添加了“torch.cuda.empty_cache()”函数调用来改善情况。然而,仍有偶尔出现内存不足的错误,可能是由于错误的内存分配/释放时间所致。
我通过在前向传递调用周围添加“multiprocessing.BoundedSemaphore”解决了这个问题,但这样会在进程之间初始化和共享信号量时引入难度。
在运行多个GPU推理进程时,有更好的方法可以避免这种错误吗?
我通过在前向传递调用周围添加“multiprocessing.BoundedSemaphore”解决了这个问题,但这样会在进程之间初始化和共享信号量时引入难度。
在运行多个GPU推理进程时,有更好的方法可以避免这种错误吗?