有时候训练网络,bach_size调大一点就报OOM,但是查看GPU使用情况,发现并不高,无奈只能调小。 最近用onnx,又报CUDA out of memory。仔细研究了一下,有一些发现,记录一下。
- 如果只有一块GPU,主要是因为pytorch会在第0块gpu上初始化,并且会占用一定空间的显存。这种情况下,经常会出现指定的gpu明明是空闲的,但是因为第0块gpu被占满而无法运行,一直报out of memory错误。解决方案如下:指定环境变量,屏蔽第0块gpuCUDA_VISIBLE_DEVICES = 1 main.py (这句话表示只有第1块)
- 或者尝试修改pytorch版本,也能改善情况。