温馨提示×

linux pytorch怎么调试代码

小樊
37
2026-10-19 02:41:27
栏目: 智能运维

在 Linux 下调试 PyTorch 代码,常见做法有 print / logging、pdb、IDE 调试、PyCharm/VS Code 远程调试、torch 自带工具 等。下面按“从简单到专业”给你一个实用清单。


一、最基础:print / logging(最快)

适合定位“哪一步出问题”。

import torch
x = torch.randn(3, 4)
print(x.shape, x.device, x.dtype)

建议用 logging 代替 print:

import logging
logging.basicConfig(level=logging.INFO)
logging.info("x shape: %s", x.shape)

二、Python 原生调试:pdb(Linux 必备)

1. 在代码里打断点

import pdb
pdb.set_trace()

运行:

python train.py

常用命令:

  • n:下一行
  • s:进入函数
  • c:继续
  • l:查看代码
  • p x:打印变量
  • q:退出

2. 命令行直接调试

python -m pdb train.py

三、PyTorch 专用调试技巧

1. 检查张量问题

torch.isnan(x).any()
torch.isinf(x).any()
x.requires_grad

2. 捕获 NaN / Inf(非常有用)

torch.autograd.set_detect_anomaly(True)
with torch.autograd.detect_anomaly():
    loss.backward()

3. 查看梯度

for name, p in model.named_parameters():
    if p.grad is not None:
        print(name, p.grad.norm())

四、VS Code 调试(Linux 最推荐)

1. 本地调试

  • 安装 Python 插件
  • 左侧“运行和调试” → 创建 launch.json
  • 打断点 → F5

2. 远程 / 服务器调试(非常常见)

{
  "name": "Python: Remote",
  "type": "python",
  "request": "attach",
  "host": "localhost",
  "port": 5678
}

服务器端:

pip install debugpy
python -m debugpy --listen 5678 train.py

五、PyCharm 调试(适合大项目)

  • PyCharm Professional
  • 配置 Remote Interpreter(SSH)
  • 直接打断点调试

六、多进程 / DDP 调试技巧

DDP 很容易“卡死”。

NCCL_DEBUG=INFO python train.py

单卡先调通:

export CUDA_VISIBLE_DEVICES=0

DDP 中打印:

if dist.get_rank() == 0:
    print(...)

七、常见调试场景总结

问题 方法
维度不对 print(x.shape)
NaN detect_anomaly
梯度为 None requires_grad, backward()
卡死 NCCL_DEBUG=INFO
多进程 rank 0 打印

如果你愿意,可以告诉我:

  • 你是 本地 / 服务器 / 容器
  • 用 pdb / VS Code / PyCharm
  • 是 训练 / 推理 / DDP

我可以直接给你一套最适合你的调试配置。

0 踩