问题描述
我们在跑深度学习程序的时候,经常会遇到CUDA out of memory,一些简单的方案比如
- 缩小
Batch Size - 及时的把不用的变量移动到
CPU上 - 执行
empty_cache() - 避免
GPU变量累积,例如涉及到GPU变量的跨轮次的加操作和append操作
如果上述的方法依然没有解决问题,可以通过分析GPU上的变量来进行相关的调试:
def debug_memory():
import collections, gc, resource, torch
print('maxrss = {}'.format(
resource.getrusage(resource.RUSAGE_SELF).ru_maxrss))
tensors = collections.Counter((str

当遇到CUDA out of memory错误时,可以尝试减小BatchSize、将变量移到CPU、使用empty_cache()以及避免GPU变量积累。若仍无法解决,可以使用debug_memory()函数分析GPU上的变量,进一步通过debug_memory_sum()计算GPU内存占用。资源库resource限于Linux系统,对于高维度变量需适当调整代码。

7704

被折叠的 条评论
为什么被折叠?



