在 CentOS 上调试 PyTorch 程序,常见方式和步骤如下(从简单到进阶):
适合定位代码逻辑错误。
import pdb
pdb.set_trace()
运行脚本后会在该位置停下来,可用:
n 下一步s 进入函数c 继续l 查看代码p 变量 打印变量pip install ipdb
import ipdb
ipdb.set_trace()
launch.json{
"name": "Python: PyTorch",
"type": "python",
"request": "launch",
"program": "train.py",
"console": "integratedTerminal"
}
import torch
print(torch.__version__)
print(torch.cuda.is_available())
print(torch.cuda.device_count())
x = model(input)
print(x.shape)
torch.autograd.detect_anomaly用于定位 NaN / 梯度爆炸
with torch.autograd.detect_anomaly():
output = model(input)
loss = criterion(output, target)
loss.backward()
CentOS 上常见 DataLoader(num_workers > 0) 报错难定位。
DataLoader(..., num_workers=0)
import multiprocessing
multiprocessing.set_start_method('spawn', force=True)
如果是 C++ / CUDA 崩溃:
ulimit -c unlimited
python train.py
gdb python
run train.py
bt
import logging
logging.basicConfig(level=logging.INFO)
logging.info(f"batch {i}, loss {loss.item()}")
✅ 新手:ipdb + num_workers=0
✅ 训练调试:logging + detect_anomaly
✅ 复杂项目:VS Code Remote + PyTorch
如果你愿意,可以告诉我:
我可以给你更具体的调试方案。