我发现这个问题,在Colab Pro+上运行一个神经网络(具有高内存选项)。
RuntimeError:库达内存不足。尝试分配8.00 GiB (GPU 0;15.90 GiB总容量;12.04 GiB已经分配;2.72 GiB空闲;12.27 GiB被PyTorch总共保留)如果保留内存是>>分配的内存,尝试设置max_split_size_mb以避免碎片化。请参阅内存管理和PYTORCH_CUDA_ALLOC_CONF文档
我已经将批处理减少到2,我使用h5py上传数据。
在这一点上,我想我唯一可以尝试的就是设置max_split_size_mb。我找不到任何关于如何实现max_split_size_mb的信息。我不清楚火炬文档(https://pytorch.org/docs/stable/notes/cuda.html)。
有人能支持我吗?谢谢。
发布于 2022-09-22 03:30:31
可以将max_split_size_mb
配置值设置为环境变量。
确切的语法记录在https://pytorch.org/docs/stable/notes/cuda.html#memory-management中,但简而言之:
缓存分配器的行为可以通过环境变量
PYTORCH_CUDA_ALLOC_CONF
来控制。格式是PYTORCH_CUDA_ALLOC_CONF=<option>:<value>,<option2>:<value2>...
现有备选方案:
max_split_size_mb
防止分配程序分割大于此大小的块(以MB为单位)。这有助于防止碎片化,并可能允许一些边缘工作负载完成而不会耗尽内存。根据分配模式的不同,性能成本可以从“零”到“亚统计”不等。默认值是无限的,即所有块都可以拆分。memory_stats()和memory_summary()方法对于调优非常有用。对于由于“内存不足”和显示大量不活动的拆分块而中止的工作负载,应使用此选项作为最后手段。..。
因此,您应该能够以类似于以下方式设置环境变量:
Windows:set 'PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:512'
Linux:export 'PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:512'
这将取决于您正在使用的操作系统--在您的例子中,对于Google,您可能会发现Setting environment variables in Google Colab很有用。
https://stackoverflow.com/questions/73747731
复制相似问题