device = 'cuda' if torch.cuda.is_available() else 'cpu' model = Model().to(device) 报错CUDA out of memory. Tried to allocate 4.93 GiB (GPU 0; 6.00 GiB total capacity; 1.48 GiB already allocated; 3.16 GiB free; 1.49 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF 如何解决,生成相关代码
时间: 2024-02-04 17:04:19 浏览: 154
torch.cuda.is_available()返回False解决方案
5星 · 资源好评率100%
你可以尝试调整 PyTorch 的内存管理参数 max_split_size_mb 来避免内存碎片化,具体的代码实现如下:
```python
import torch
# 设置 PyTorch 内存管理参数
torch.backends.cuda.max_split_size = 256000000
torch.backends.cuda.cache_allocated = True
# 检查是否有可用的 GPU
if torch.cuda.is_available():
device = torch.device('cuda')
else:
device = torch.device('cpu')
# 把模型移动到 GPU 上
model = Model().to(device)
```
这里我将 max_split_size_mb 设置为 256000000,你可以根据需要进行调整。同时,我设置了 cache_allocated 参数为 True,这个参数可以在 GPU 内存不足时释放已经分配的内存,从而避免 out of memory 的错误。
希望这个代码片段能够帮助你解决问题。
阅读全文