前情提要:实验室的新服务器用的是nvidia 3090显卡,最近服务器出了点问题,师兄说是网卡驱动和显卡驱动有问题,但是我登录之后发现nvidia-smi命令无法输出,就认为是显卡驱动没有装好,遂开始自力更生配置环境。
首先,笔者输入了nvidia-smi
命令,发现有如下报错:
NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver.
Make sure that the latest NVIDIA driver is installed and running.
于是联系前情提要,笔者想当然地认为是nvidia驱动没有安装好。
记录一下配置nvidia驱动的教程,以备不时之需。安装nvidia驱动教程
首先需要查看显卡型号,lspci | grep -i vga
,但是该命令返回的是一个十六进制数字,根据:PCI devices确认了是3090显卡。(参考教程:Linux(Ubuntu)系统查看显卡型号)
但是在搜集资料的时候,笔者发现了如下参考资料。
参考链接:NVIDIA驱动失效简单解决方案
- 查看已安装驱动的版本信息
ls /usr/src | grep nvidia
- 依次输入以下命令(数字即上一步的版本信息)
sudo apt-get install dkms
sudo dkms install -m nvidia -v 515.86.01
这样就能成功让nvidia-smi
正常显示显卡信息。
但是,参考链接中的nvcc -V
命令输出却仍然报错。
因此笔者认为需要单独安装CUDA,因此需要使用显卡跑程序。
CUDA下载链接:CUDA下载链接
CUDA安装教程:CUDA安装教程
因为安装的驱动决定了能够安装的CUDA的最高版本,因此第一次,笔者下载了驱动能够支持的最高的11.7版本的CUDA。
驱动版本与CUDA版本对应关系:驱动版本与CUDA版本对应关系
然后再根据pytorch安装官网给出的命令,根据CUDA==11.7来进行安装,但是这样安装完成之后,无法使用cuda,即输入torch.cuda.is_available()
后,会输出false
。
于是笔者开始怀疑是自己安装的本机CUDA版本过高导致的,搜集资料之后发现10.2和11.3版本的CUDA使用的较为广泛,因此卸载了11.7版本的CUDA,安装了10.2版本的CUDA。卸载CUDA的命令也在这里 一并给出。
卸载CUDA教程:卸载CUDA
sudo /usr/local/cuda-11.7/bin/cuda-uninstaller
但是在安装完服务器10.2版本的CUDA之后,开始报显卡版本与CUDA版本不兼容的错误。
于是笔者搜集资料发现,3090系列的显卡需要安装11.x系列的CUDA。解决RTX 3090 with CUDA capability sm_86 is not compatible with the current PyTorch installation.
就在此时,笔者发现了其实旧的服务器对于nvcc -V
命令输出也会报相同的错误,但是并不影响使用。然后笔者发现了如下的链接:安装CUDA与pytorch版本匹配的问题
划重点:服务器本身的CUDA版本与我们在anaconda虚拟环境中安装的cudatoolkit包是没有太大关系的,一般安装pytorch时需要考虑的cuda版本指的应该是虚拟环境中安装的cudatoolkit包的版本
也就是说,其实服务器里并不需要单独安装CUDA,只需要在anaconda虚拟环境里安装一个与显卡计算相容的CUDA选项即可。(在该教程中,博主认为分开单独安装会报错GeForce RTX 3090 with CUDA capability sm_86 is not compatible with the current PyTorch installation.)因此对于笔者来说,正确的做法就是选择一个合适的pytorch的版本,然后选择cuda是11.x系列的即可。笔者犯的第一个错在于,安装了cpu版本的pytorch,第二个错在于,想当然地认为anaconda环境里的cuda版本需要与服务器的cuda版本相同,于是安装了与显卡不兼容的10.2版本…
最后记录一下成功的pytorch安装命令:
conda install pytorch == 1.7.0 torchvision == 0.8.0 torchaudio == 0.7.0 cudatoolkit = 11.0 -c pytorch
展望:什么时候chatgpt能够帮忙配置环境?