首页 新闻 会员 周边 捐助

RuntimeError: CUDA out of memory. Tried to allocate 64.00 MiB.

0
悬赏园豆:30 [已解决问题] 解决于 2024-10-19 22:03

RuntimeError: CUDA out of memory. Tried to allocate 64.00 MiB. GPU 0 has a total capacty of 1.83 GiB of which 26.44 MiB is free. Including non-PyTorch memory, this process has 1.81 GiB memory in use. Of the allocated memory 771.77 MiB is allocated by PyTorch, and 68.23 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF

All results are saved in results/cropped_faces_0.5

使用codeformer进行图片修复报错,nvidia-smi如下
ed Oct 11 13:48:09 2023
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.199.02 Driver Version: 470.199.02 CUDA Version: 11.4 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=++==============|
| 0 NVIDIA GeForce ... Off | 00000000:01:00.0 Off | N/A |
| N/A 50C P8 N/A / N/A | 0MiB / 1878MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+

问题补充:

python inference_codeformer.py -w 0.5 --has_aligned --input_path /home/root/CodeFormer/inpots/cropped_faces
我执行的是这个命令,里面就一个照片

三号小玩家的主页 三号小玩家 | 初学一级 | 园豆:116
提问于:2023-10-11 13:53

CUDA out of memory。显存不够啦

echo_lovely 1年前
< >
分享
最佳答案
-1

"RuntimeError: CUDA out of memory" 错误表明您的PyTorch代码在尝试在GPU上分配内存时,超出了GPU的可用内存限制。这可能是因为模型或数据的大小超过了GPU的限制,或者其他正在运行的进程占用了大部分GPU内存。

从您的nvidia-smi输出来看,您的GPU(NVIDIA GeForce)具有1.83 GiB的总内存容量,而只有26.44 MiB空闲。这意味着您的GPU几乎没有可用内存,因此无法为模型和数据分配额外的内存。

以下是一些可能的解决方法:

减小模型的大小:如果您正在使用大型的深度学习模型,考虑使用较小的模型或剪枝来降低内存占用。

减小批量大小:减小每个批次的数据量,以降低内存占用。您可以尝试将批量大小设置为更小的值,例如32或16,以减少内存使用。

释放GPU内存:确保在运行代码之前,没有其他正在运行的进程占用GPU内存。可以使用nvidia-smi来检查当前GPU内存占用情况,并使用nvidia-smi --query-compute-apps=pid,name,gpu_bus_id --format=csv来查看正在运行的进程。

使用更多内存的GPU:如果可能的话,尝试在拥有更多GPU内存的系统上运行您的代码。

使用CPU:如果您没有足够的GPU内存,可以尝试在CPU上运行模型。您可以使用torch.device('cpu')来将模型移到CPU上。

内存分配策略:有时,PyTorch的内存分配策略可能导致内存碎片。您可以尝试设置torch.cuda.empty_cache()来释放未分配的内存。此外,如果您的PyTorch版本支持,可以尝试使用max_split_size_mb选项来避免内存碎片。

根据您的需求和资源,您可以采取上述措施之一或多种组合来解决内存不足的问题。请注意,要根据您的具体情况调整模型大小和批量大小。

收获园豆:30
Technologyforgood | 大侠五级 |园豆:7541 | 2023-10-12 19:45
其他回答(1)
0

CUDA out of memory,GPU显存申请超出界限了,从后面的信息也能看到:“GPU 0 has a total capacty of 1.83 GiB of which 26.44 MiB is free”,你的显存一共1.83GB,但是目前只有26.44MB是空余的,不足够你申请64MB了。建议你用完前面的显存后尽快释放,以便后面的能成功申请。

AtanChen | 园豆:460 (菜鸟二级) | 2023-11-02 09:52
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册