Conda安装pytorch和cuda出现问题的解决记录

pytorch已经安装却显示cuda不可用

问题表现:

pytorch已经安装,代码能够正常运行,但是不能识别到GPU,Cuda显示不可用。

系统:centos

显卡:TeslaV100

问题记录:

目的:为了运行一个仓库neuralhydrology的代码,按照其教程配置环境。

问题原因:

环境由仓库提供的yml文件决定,我认为这是出现问题的部分原因。

复制代码
conda env create -f environment.yml

目前根据配置文件创建环境首先遇到的就是下载慢,pip还超时了,不过很轻松就用换源解决了。最后说。这一步换源操作也是问题原因的一部分。

如何发现:

其实是执行代码的时候,居然走到了cpuonly的分支。

如何解决:

执行以下命令判断你是否和我遇到了同一种情况:

下面这一条如果显示有pytorchcuda说明你是有cuda包的,可以继续往下看,或者显示cudatoolkit也是。否则你就要考虑是不是没装cuda包啊。可以按照后面的方案操作。

复制代码
 conda list | grep cuda

下面这一条用来判断你的pytorch是不是正确,如果显示pytorch后面的build列有cpu。。。那就是和我一样啦。

复制代码
conda list | grep torch

conda list输出包名版本build和channel ,如果build那一列不对,就是安装错版本啦。

我这里就是因为换源默认从配置文件里读取pytorch安装的是cpu版本,所以即使已经安装了cuda也不能识别和使用GPU。

那么如果你和我一样,下一步就这样操作:

这一步判断 你的GPU的驱动最高支持什么版本的CUDA,一般只要你的cuda不超过这个数字就行了。

复制代码
nvidia-smi | grep "CUDA Version"  # 输出应≥11.8

如果你的代码有要求,并且要求的版本不高于你gpu驱动能运行的版本 ,就按照那个版本就好啦,否则你可能需要更新驱动或者更换pytorch和cuda的版本。

然后就要卸载旧的pytorch和cuda包:

复制代码
conda uninstall pytorch torchvision torchaudio libtorch pytorch-cuda

如果提示没有哪些包可卸载,就卸载已有的就行了。

我的话是卸载这两个:

复制代码
conda uninstall pytorch pytorch-cuda

卸载完就要重新安装啦:

复制代码
conda install pytorch  pytorch-cuda=11.8 -c pytorch -c nvidia

-c可以指定从哪个通道下载。11.8是我的cuda版本,你可以选择自己的版本。

最后得到新的pytorch版本:

妙啊,到这就能够运行了。

其他解决?

如果你和我不一样,请尝试排查以下内容:

1,是否安装pytorch和cuda?

2,cuda版本是否超过GPU允许的版本?

3,你是否在不同包管理器下载的cuda和pytorch?

4,pytorch和cuda版本是否匹配?

如果你犯了一些错误或者没找到错误,下面的建议可以参考:

请抛弃当前的环境配置文件,自己手动安装各可能有问题的组件,根据需要一个个添加或者找已经正常运行的朋友借一个环境配置文件(见最后)。

请尝试使用pip安装pytorch和cuda,或者指定通道的情况下用conda安装。

请新建一个环境并尝试用conda或者pip安装cuda和pytorch而不是各自安装部分依赖。

最后请确保你进入了正确的conda环境并设置为你的脚本的执行环境。

一些记录:

cudatoolkit在我的依赖中并不存在,但是你的环境中可能使用这个作为运行环境。乃至于下面这种也是正常的。

一个不谨慎的检查脚本:

复制代码
echo "=== NVIDIA驱动检查 ==="
nvidia-smi || echo "! 驱动未安装"

echo "\n=== CUDA环境检查 ==="
which nvcc &>/dev/null && nvcc --version || echo "! CUDA未安装"

echo "\n=== PyTorch检查 ==="
python -c "import torch; print('\nPyTorch版本:', torch.__version__, '\nCUDA可用:', torch.cuda.is_available())"

把他写入一个sh文件然后bash它就好了。

当然了第二部提示你cuda没安装可能是你和我一样是pytorch-cuda的原因。实在想要一个就安装cuda-nvcc就好了。

conda下载慢或者pip超时的情况

很简单就是进行换源。

conda添加清华源:

复制代码
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch

同时pip也要换源

我这里全局换源的原因是不想手动一个个操作,还是想直接用配置文件生成环境。

复制代码
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

如果有条件,可一个个使用临时换源:conda其实类似的也可以。

复制代码
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple package_name

如何避免再来一次?

保存你的环境依赖吧!

进入你的虚拟环境:

复制代码
conda env export > myenvir.yml

你的环境被保存了,下次只要:

复制代码
conda env create -f myenvir.yml

就搞定了。

相关推荐
算家计算6 分钟前
一行命令,玩转所有主流音视频格式!一站式音视频处理工具——FFmpeg本地部署教程
人工智能
AAA修煤气灶刘哥10 分钟前
Java+AI 驱动的体检报告智能解析:从 PDF 提取到数据落地全指南
java·人工智能·后端
AI 嗯啦18 分钟前
SQL详细语法教程(四)约束和多表查询
数据库·人工智能·sql
阿里云大数据AI技术21 分钟前
【跨国数仓迁移最佳实践6】MaxCompute SQL语法及函数功能增强,10万条SQL转写顺利迁移
python·sql
三块钱079432 分钟前
如何让AI视频模型(如Veo)开口说中文?一个顶级提示词的深度拆解
人工智能
杜子不疼.38 分钟前
《Python学习之文件操作:从入门到精通》
数据库·python·学习
轻松Ai享生活39 分钟前
从0-1学习CUDA | week 1
人工智能
蒋星熠41 分钟前
C++零拷贝网络编程实战:从理论到生产环境的性能优化之路
网络·c++·人工智能·深度学习·性能优化·系统架构
微小的xx44 分钟前
java + html 图片点击文字验证码
java·python·html
wayman_he_何大民1 小时前
初始机器学习算法 - 关联分析
前端·人工智能