在 Linux 环境下使用 PyTorch 时经常遇到“掉卡”(GPU 丢失 / CUDA device unavailable / 训练中断后找不到 GPU)的问题。下面从常见原因 → 排查方法 → 解决方案系统说明。
通常指:
nvidia-smi 还能看到卡,但 PyTorch 里 torch.cuda.is_available() 变 FalseCUDA error: device-side assert triggered / invalid device function现象
nvidia-smi 正常,但 PyTorch 无法用 GPU原因
解决
nvidia-smi # 看驱动支持的最高 CUDA
nvcc --version # 看当前 CUDA
python -c "import torch; print(torch.version.cuda)"
✅ 建议:
sudo nvidia-smi -pm 1
现象
nvidia-smi 显示别人占了你的卡原因
解决
nvidia-smi
fuser -v /dev/nvidia*
✅ 指定 GPU:
export CUDA_VISIBLE_DEVICES=0,1
现象
原因
解决
torch.cuda.empty_cache()
梯度累积torch.utils.checkpoint现象
解决
sudo nvidia-smi -pm 1
sudo nvidia-smi -r # 软重置 GPU
BIOS / 电源:
现象
原因
--gpus all解决
docker run --gpus all --ipc=host ...
✅ 使用 nvidia-container-toolkit
现象
原因
解决
export NCCL_TIMEOUT=1800
torchrun现象
device-side assert triggered解决
nvidia-smi
nvcc --version
python -c "import torch; print(torch.cuda.is_available())"
echo $CUDA_VISIBLE_DEVICES
你可以贴出:
nvidia-smi 截图我可以精确定位你这次掉卡的原因。