事情本身不复杂,线索都在日志里。运行时报 CUDA driver version is insufficient for CUDA runtime version,nvidia-smi 显示驱动 525,而环境里装的是 cu121 的包。
第一反应是「驱动升级后没有重启,内核模块还是旧的」,验证下来不成立。
原因不止一个,得分开看。驱动对应的 CUDA 版本低于运行时版本。另一种情况是镜像内自带的运行时比宿主机驱动新。
少数情况下是多版本 CUDA 共存,软链接指向了更高的版本。
第一件事是读驱动支持的最高运行时版本
nvidia-smi
降级到与驱动匹配的轮子
pip install torch==2.1.2 --index-url https://download.pytorch.org/whl/cu118
或升级驱动后重启机器
nvidia-smi --query-gpu=driver_version --format=csv
剩下的就是确认运行时与驱动匹配
python -c "import torch;print(torch.version.cuda)"
同样的操作我在测试机上先走了一遍,线上只做验证过的部分。
恢复的判定其实很直接。报错消失,torch.cuda.is_available() 返回 True,模型可以正常运行在显卡上。
容器里的 CUDA 运行时不能超过宿主机驱动能力,升级镜像前先看宿主机驱动版本,否则换镜像也照样报错。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。