RuntimeError: [enforce fail at ..\c10\core\CPUAllocator.cpp:76] data. DefaultCPUAllocato模型训练中的内存溢出问题

num_workers = 4

解决方案:为您的 CPU “减负”

导致 CPU 内存耗尽的最主要原因有两个:批量大小(Batch Size) 和 数据加载的工作线程数(num_workers)

方案一:大幅减小 num_workers - 最直接的解决方案

这是解决这个问题的首选方案

  1. 在 PyCharm 中,打开您的 train.py 文件。

  2. 找到配置区的最下方,大约在第 229 行左右,您会看到这个参数:

    Generated python
    num_workers = 4
    ```3.  **这是什么意思?** 它表示您雇了 **4 个工人(子进程)**在后台同时为您准备数据。每个工人都需要消耗自己的一份内存。当 Batch Size 较大时,4 个工人同时开工,内存消耗就是 4 倍,很容易就爆掉了。

    Use code with caution.Python
  3. 请将这个值大幅减小!

    • 首先,请直接把它改成 num_workers = 0。

    • 解释:设置为 0 意味着“不要雇工人了,我自己(主进程)来准备数据”。这会关闭多进程数据加载,虽然准备数据的速度可能会变慢,但它能从根本上解决多进程带来的额外内存消耗问题

方案二:再次确认并减小批量大小 (Batch Size)

虽然您已经解决了 GPU 显存问题,但 Batch Size 同样也影响着 CPU 内存的消耗。一次处理的图片越多,在 CPU 端需要整理的数据量也越大。

  • 请再次检查您的 Freeze_batch_size 和 Unfreeze_batch_size。

  • 根据报错前的进度条 Batch size from DataLoader should be: 8,我们可以看到当前有效的批量大小是 8。

  • 在 num_workers=0 的基础上,如果问题还存在,可以尝试将 Freeze_batch_size 和 Unfreeze_batch_size 都设置成一个更小的值,比如 4 或 2。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值