事情本身不复杂,线索都在日志里。训练时报 cuDNN version incompatibility,环境里同时用 conda 装过 cudatoolkit、又用 pip 装过 nvidia-cudnn-cu12,两者版本不一致。

第一反应是「LD_LIBRARY_PATH 里优先加载了旧版本」,验证下来不成立。

这类报错背后常见的原因有几处,逐个排除就行。conda 与 pip 两套包管理混装,库路径冲突。也可能是系统级 CUDA 与虚拟环境里的库版本不同。

少数情况下是升级框架后没有同步升级 cuDNN。

动手时先列出所有来源的 cuDNN 包

pip list | Select-String cudnn; conda list | Select-String cudnn

随后清掉 pip 侧的重复包,只保留一套

pip uninstall -y nvidia-cudnn-cu12

然后按框架要求重装匹配版本

pip install nvidia-cudnn-cu12==9.1.0.70

剩下的就是验证能否正常跑一次卷积

python -c "import torch;print(torch.backends.cudnn.version())"

白天有业务在跑,能验证的部分都压到了晚上做。

恢复的判定其实很直接。cudnn.version 输出与框架要求一致,训练不再报版本不兼容,卷积层速度恢复正常。

容易忽略的是,两套包管理器各自记着依赖,卸载一个另一个还会装回来,混装环境最好重建,而不是一次次手工对齐版本。这类问题最好一次改到位,反复小改反而容易把原因搅混。

作者 9823189