使用 pytorch 进行深度学习训练。 这也是我不得不选择 linux 的原因。本文是我多次安装时遇到的问题的汇总(包括笔记本和台式机,初始版本是基于我的笔记本电脑),故很多点可能并不会遇到,略过即可。
系统:ubuntu 22.04
型号:Lenovo Yoga 14sIHU 2021
集显:Irix Xe (lspci | grep -i vga
)
独显:GeForce MX450 (lspci | grep -i nvidia
)
在Show Applications
中搜索 Additional Drivers
。
选择最其中一个显卡驱动进行安装。其中如果对驱动了解不多,可以选择最上面那个,或者多选几次。对于我的环境而言,我记得第一次安装成功时是选最上面那个。但第二次安装时发现选择最上面之后重启时候,没办法进入系统了,一直卡住。
在网上查找了部分资料了,发现 Yoga14s(MX450)-Ubuntu20.04-显卡驱动安装
和 联想小新pro14/yoga 14s 2021安装ubuntu/kali/manjaro问题排雷 都提到了禁用nouveau。于是利用如下命令禁用nouveau,根据 Ubuntu20.04 系统禁用自带的Nouveau驱动。
sudo vim /etc/modprobe.d/blacklist-nouveau.conf #该文件可能需要新建
在上述文件中添加如下语句。
blacklist nouveau
options nouveau modeset=0
更新initramfs
sudo update-initramfs -u
重启系统后,通过以下命令查看是否禁用,没有显示内容,则表示nouveau被成功禁用。
lsmod | grep nouveau
最后根据 ubuntu18.04 禁止nouveau 并安装NVIDIA显卡驱动 修改 /etc/default/grub 文件为
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi_osi=linux"
。注意考虑到在文章 双系统安装 ubuntu 22.04 + win11(yoga 14s 2021) 中我对grub文件的修改。则综合就变成了"quiet splash acpi_osi=linux i915.enable_psr=0 i8042.dumbkbd"
最后试着换了下驱动,可以安装,同时安装之后能够正常进入系统。这里有一个小技巧就是,如果安装完之后有个restart按钮,那么便是正常(并没有经过严谨的检验)。另外,上述的工作只是充分条件,并不一定必要。
使用nvidia-smi
检验是否安装成功。如果直接在additional drivers那一步restart后就能够正常显示结果,则就说明安装成功了,不需要包括禁用nouveau在内的任何其他步骤。
同时 Ubuntu安装nvidia驱动_小潇港哥的博客-CSDN博客 这篇文章提供了命令行安装驱动的方法。就两句+重启。
sudo ubuntu-drivers devices # 查找
sudo apt install nvidia-driver-470 # 安装
在某次安装中(没错,就是这么多次。。。),不知道是不是 apt 损坏了,或者卸载时候尝试各种方法给搞崩了,使用 sudo apt install nvidia-driver-535
出现如下报错。
The following packages have unmet dependencies:
nvidia-dkms-545 : Depends: dkms but it is not installable
E: Unable to correct problems, you have held broken packages.
最后没办法只能通过安装包安装,幸运的是这次安装成功了。唉 .
Ubuntu18及22安装NVIDIA驱动、CUDA、CUDNN、Pytorch_ubuntu18安装显卡驱动-CSDN博客
【超详细】【ubunbu 22.04】 手把手教你安装nvidia驱动,有手就行,隔壁家的老太太都能安装_ubuntu安装nvidia显卡驱动_huiyoooo的博客-CSDN博客
其它一些命令根据 Linux安装NVIDIA显卡驱动的正确姿势
sudo prime-select nvidia # 切换nvidia显卡
sudo prime-select intel # 切换intel显卡
sudo prime-select query # 查看当前使用的显卡
此外,卸载nvidia驱动的方式(如果有更详细的方式敬请指正)。
sudo apt-get --purge remove "*nvidia*"
sudo apt-get autoremove
在一次卸载中,出现以下报错,运行了 apt --fix-broken install
也没有任何用处。
You might want to run ‘apt --fix-broken install’ to correct these.
The following packages have unmet dependencies:
nvidia-dkms-535 : Depends: nvidia-kernel-common-535 (= 535.129.03-0ubuntu1) but 535.129.03-0ubuntu0.22.04.1 is installed
E: Unmet dependencies. Try ‘apt --fix-broken install’ with no packages (or specify a solution).
在最后之前可以试试这篇文章 ubuntu卸载显卡驱动。
最后人品大爆发,总算找到命令成功把它卸载了。
sudo apt-get remove --purge '^nvidia-.*'
unity - How can I uninstall a nvidia driver completely ? - Ask Ubuntu
访问 cuda-downloads,这里参考 解决在nvidia官网下载巨慢的问题。根据它的指示,下载后安装。注意 wget 同样可以把.com
改成 .cn
。具体的过程可以参考 ubuntu20.04安装及pytorch_gpu、tensorflow2.X_gpu安装回顾。
wget https://developer.download.nvidia.com/compute/cuda/12.0.1/local_installers/cuda_12.0.1_525.85.12_linux.run
sudo sh cuda_12.0.1_525.85.12_linux.run
在下载时如果遇到 wget: unable to resolve host address ‘developer.download.nvidia.com,sudo vim /etc/resolv.conf
添加域名服务器。
nameserver 223.5.5.5 #阿里域名服务器
nameserver 223.6.6.6 #阿里域名服务器
wget: unable to resolve host address ‘developer.download.nvidia.com’
在安装过程中需要取消驱动的安装(之前已经安装)。
最终得到。注意记录下红色标记的这些数据。(卸载cuda的方式也在下图中)
sudo gedit ~/.bashrc
将它们更新到 ~/.bashrc
文件(注意cuda-12.0
替换成cuda
也可以,因为是有软链的。但如果有多人共用且多个版本,很有可能一不注意版本就被替换了,推荐直接指明cuda的版本,即用cuda-12.0
)。
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-12.0/lib64
export PATH=$PATH:/usr/local/cuda-12.0/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda-12.0/
source ~/.bashrc
更新一下,再用 nvcc -V
检验一下。
主要参考 Ubuntu22.04安装CUDA和cuDNN详细过程记录 和 NVIDIA Deep Learning cuDNN Documentation。就是把下载的源码拷贝到刚才cuda的位置。
下载源码之后,解压后得到。
然后确定目标路径 /usr/local/cuda-12.0/include
和 /usr/local/cuda-12.0/lib64
。
如果此时就在解压的文件夹内,就可以把参考文献中的命令修改为:
sudo cp ./include/cudnn*.h /usr/local/cuda-12.0/include
sudo cp -P ./lib/libcudnn* /usr/local/cuda-12.0/lib64
sudo chmod a+r /usr/local/cuda-12.0/include/cudnn*.h /usr/local/cuda-12.0/lib64/libcudnn*
非常推荐上述的参考文献,非常详细。
检验
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
首先安装 miniconda ,参考 在Ubuntu上安装和使用miniconda。
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
sh Miniconda3-latest-Linux-x86_64.sh
根据提示完成即可。然后设置环境变量。在~/.bashrc
文件中 添加 export PATH="/home/moon/Tools/miniconda3/bin/:$PATH"
(这里路径可以自己指定),然后更新 source ~/.bashrc
完成。
另外,我发现 miniconda 中自己在 ~/.bashrc
文件写入了一段路径。
只需要 source ~/.bashrc
就能够调出conda。这样就相当于安装成功了。
可能是安装过程中的这个选项选择yes的缘故。但并没有细致探究过。
在百度搜索pytorch进入官网,注意前面安装的是 cuda-12.0,而pytorch最新的是11.7,但我试了下,可以运行。或者可以回到cuda那一步下载pytorch对应的版本。
import torch
torch.__version__
torch.cuda.is_available()