在 CentOS 上调试 PyTorch 程序,常见方式取决于你遇到的问题类型(模型错误、性能问题、崩溃、GPU 问题等)。下面按常用场景系统讲一下。
最基础、最有效。
python -m pdb train.py
常用命令:
n:下一步s:进入函数c:继续执行l:查看代码p 变量:打印变量或在代码中插入:
import pdb
pdb.set_trace()
print(x.shape, x.dtype)
print(model)
对 Tensor:
print(tensor.shape, tensor.device, tensor.requires_grad)
很多问题来自 shape 或 CPU/GPU 不一致。
for name, param in model.named_parameters():
print(name, param.shape, param.device)
torch.autograd.detect_anomaly用于 梯度为 NaN / 报错不清晰 的情况。
with torch.autograd.detect_anomaly():
output = model(input)
loss = criterion(output, target)
loss.backward()
会直接指出是哪一行导致梯度异常。
torch.isnan(x).any()
torch.isinf(x).any()
训练时:
if torch.isnan(loss):
raise ValueError("Loss is NaN")
import torch
print(torch.cuda.is_available())
print(torch.version.cuda)
print(torch.cuda.device_count())
nvidia-smi
训练时实时看:
watch -n 1 nvidia-smi
nvidia-smi # 看驱动支持的最高 CUDA
nvcc --version
pip show torch
推荐用官方命令安装:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
torch.utils.bottleneckpython -m torch.utils.bottleneck train.py
会分析:
loader = DataLoader(..., num_workers=4, pin_memory=True)
CentOS 上常见问题:
num_workers 太大导致死锁/dev/shm)查看:
df -h /dev/shm
临时解决:
mount -o remount,size=8G /dev/shm
device = "cpu"
你可以告诉我:
我可以给你针对性调试方案。