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

PyTorch训练代码在PyCharm调试模式挂起,运行正常如何调试?

解决PyCharm调试PyTorch DataLoader时挂起的问题

针对你遇到的运行模式正常但调试模式挂起、print内容无法输出的问题,可按以下步骤排查解决:

  • 调整DataLoader多进程参数
    调试模式下PyCharm对多进程的支持存在局限,尤其是Windows环境下,num_workers>0很容易导致子进程阻塞主线程。把DataLoader的num_workers改为0即可:

    train_loader = torch.utils.data.DataLoader(
        train_set,
        sampler=sampler_train,
        batch_size=32,
        num_workers=0  # 调试阶段临时设置为0
    )
    

    调试完成后再改回原数值即可。

  • 修改断点位置与调试器设置

    1. 把断点从model.train()移到print("something")行,或者外层循环的开头,确认是否能正常触发调试。
    2. 关闭PyCharm自动附加子进程的功能:进入Settings > Build, Execution, Deployment > Debugger > Python,取消勾选**"Attach to subprocess automatically"**,避免调试器错误附加到DataLoader的子进程导致挂起。
  • 排查Sampler与数据加载逻辑

    1. 临时替换WeightedRandomSampler为普通的RandomSampler,验证是否是采样器逻辑导致的问题:
      sampler_train = torch.utils.data.RandomSampler(train_set, replacement=True)
      
      如果替换后调试正常,检查sample_weights_train是否存在NaN、无穷大值,或者维度与数据集长度不匹配的情况。
    2. 在训练循环前手动遍历一次DataLoader,确认数据加载阶段是否正常:
      # 训练循环前添加测试代码
      for data in train_loader:
          print("数据加载正常")
          break
      
      如果这一步调试时也挂起,说明问题出在DataLoader初始化或数据集读取逻辑上。

内容的提问来源于stack exchange,提问作者Gulzar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 09:15:43