首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >RuntimeError:库达内存不足。如何设置max_split_size_mb?

RuntimeError:库达内存不足。如何设置max_split_size_mb?
EN

Stack Overflow用户
提问于 2022-09-16 16:18:51
回答 1查看 12.7K关注 0票数 5

我发现这个问题,在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)。

有人能支持我吗?谢谢。

EN

回答 1

Stack Overflow用户

发布于 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很有用。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73747731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档