You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行PyTorch代码触发DataLoader worker进程意外退出报错如何解决?

问题排查与解决方案

1 优先验证多进程配置问题

这是该报错最常见的诱因,你使用的是macOS环境,PyTorch DataLoader的多进程加载容易触发进程启动异常:

  • 先将DataLoader的num_workers参数改为0,禁用多进程加载,使用主进程加载数据,修改后代码为:
train_dl = DataLoader(train_ds, batch_size, shuffle=True, num_workers=0, pin_memory=True)

运行后如果报错消失,证明是多进程配置问题。如果需要保留多进程提升加载速度,需要在代码最开头加入Python多进程入口保护,将所有执行逻辑放在if __name__ == '__main__'判断下:

import torch
# 其他所有导入语句都放在最开头
if __name__ == '__main__':
    # 原本的所有代码都缩进放到该判断内部
    batch_size = 128
    # ... 剩下的全部业务代码

2 验证自定义数据集逻辑是否正确

如果修改num_workers=0后仍然报错,说明是你自定义的facesDataset类存在逻辑错误:

  • 单独测试数据集读取逻辑,不要通过DataLoader加载,直接执行如下代码验证:
# 初始化数据集后直接遍历前10个样本排查问题
for i in range(10):
    try:
        img, label = train_ds[i]
        print(f"样本{i}读取正常,图片shape:{img.shape}")
    except Exception as e:
        print(f"样本{i}读取失败,错误:{e}")

常见的数据集错误包括:csv文件内的图片路径填写错误、对应路径下图片不存在、图片文件损坏无法读取、__getitem__方法返回的格式不符合要求。

3 其他可能的兼容问题

  • macOS环境对pin_memory支持不完善,可以尝试将DataLoader的pin_memory参数改为False
  • 内存不足也会导致子进程被系统强制杀死,可以将batch_size从128调低到16再测试,确认是否是内存不足导致的问题

内容的提问来源于stack exchange,提问作者aidan.goetzinger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 07:09:04