torch.cuda.memory_allocated()
和torch.cuda.memory_reserved()
是用来监控GPU内存使用情况的函数。
torch.cuda.memory_allocated()
返回的是当前已经被Tensor分配的GPU内存量,单位是字节。这个值是已经被分配出去,但不一定全部在使用中的内存量。
torch.cuda.memory_reserved()
返回的是当前已经被PyTorch保留的GPU内存量,单位也是字节。这个值是已经被PyTorch预留,但可能还没有分配出去的内存量。
在你的输出Before training one epoch: CUDA Memory Allocated: 252406784 Memory Reserved: 1073741824
中,CUDA Memory Allocated: 252406784
表示在开始训练一个epoch之前,已经有约252MB的GPU内存被Tensor分配了。Memory Reserved: 1073741824
表示有约1GB的GPU内存被PyTorch预留了。
这两个值可以帮助你理解你的模型和数据如何使用GPU内存,以及是否有内存泄漏的问题。例如,如果在训练过程中,torch.cuda.memory_allocated()
的值持续增长,那么可能存在内存泄漏的问题。