先说结论:
1.环境混乱
2.历史编译未清除
solution;正确配环境并清除之前编译缓存
起因:我2.26代码还能跑,2.27突然就不行了,盲猜是cuda自动更新了
这是AI分析的我的环境
debug了一晚上,再叫两个师兄一起处理也没用
发现了我的环境装的有问题,尝试新建环境。我先前下的是cuda12.1版本的pytorch,服务器cuda是11.7,按道理讲最高支持的是11.7我之前的也跑不了。但是我在网上看到相差不太大的版本也是支持的。
conda create -n 解释器名字 python=3.8
conda activate 解释器
一定要去pytorch官网找之前版本
conda install pytorch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 pytorch-cuda=11.7 -c pytorch -c nvidia
下载requirements中的依赖
接着,验证pytorch cuda支持
import torch
print(torch.__version__) # 应显示 2.4.1+cu118
print(torch.version.cuda) # 应显示 11.8
print(torch.cuda.is_available()) # 必须返回 True
检查cuda驱动兼容性(必须检查,我之前那版就是cuda驱动不支持了,nvcc-V报错)
nvidia-smi # 查看驱动支持的CUDA最高版本
nvcc --version # 查看已安装CUDA工具包版本
或者
nvcc -V
我环境需要编译,感觉问题是之前编译结果没有清除
于是,环境纯净度检查
# 确保没有混合安装
conda list | grep -E 'torch|cuda'
# 正确输出应只显示来自pytorch/nvidia渠道的包
编译deformable attention失败
# 确保gcc版本>=7.5
gcc --version
# 清除缓存后重试
rm -rf build/
bash make.sh
再编译之后,运行测试文件跑通,训练跑通