我在训练模型的时候遇到了如下问题:
RuntimeError: CUDA out of memory. Tried to allocate 304.00 MiB (GPU 0; 8.00 GiB total capacity; 142.76 MiB already allocated; 6.32 GiB free; 158.00 MiB 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
正如我们所见,尝试分配 304 MiB 内存时发生错误,而 6.32 GiB 是空闲的!问题是什么?如我所见,建议的选项是设置 max_split_size_mb 以避免碎片化。它会有所帮助吗?如何正确地做到这一点?
这是我的 PyTorch 版本:
手电筒==1.10.2+cu113
torchvision==0.11.3+cu113
手电筒===0.10.2+cu113
我浪费了几个小时,直到我发现减少
batch size
和调整输入图像的宽度(image size
)是必要的步骤。
您的问题可能是由于 GPU 内存碎片造成的。您可能想清空缓存分配器使用的缓存内存。
import torch
torch.cuda.empty_cache()
我正在尝试这个命令:
python3 val.py --weights ./weights/yolov5l-xs-1.pt --img 1996 --data ./data/VisDrone.yaml
我有一个 24G Titan 视频卡。
然后我缩小图像尺寸并为我工作。至:
python3 val.py --weights ./weights/yolov5l-xs-1.pt --img 1280 --data ./data/VisDrone.yaml
结果:
Class Images Labels P R [email protected] [email protected]:.95: 100%|████████████████████████████████| 18/18 [00:50<00:00, 2.79s/it]
all 548 38759 0.653 0.537 0.584 0.375
pedestrian 548 8844 0.74 0.631 0.708 0.375
people 548 5125 0.677 0.506 0.574 0.258
bicycle 548 1287 0.541 0.377 0.41 0.213
car 548 14064 0.828 0.868 0.904 0.681
van 548 1975 0.636 0.566 0.601 0.453
truck 548 750 0.595 0.516 0.538 0.388
tricycle 548 1045 0.601 0.416 0.457 0.288
awning-tricycle 548 532 0.387 0.242 0.245 0.173
bus 548 251 0.782 0.653 0.725 0.565
motor 548 4886 0.744 0.598 0.674 0.355
这对我有用:
pip install accelerate