安装pytorch的教程网上有许多,我记录并分享下自己两台笔记本上安装NVIDIA驱动、CUDA、CUDNN、Pytorch的过程和心得。
首先说明,安装pytorch-gpu需要完成nvidia驱动安装、CUDA安装、CUDNN安装、torch库安装,其中CUDA和CUDNN版本要对应,不同版本的torch对CUDA版本有要求,nvidia驱动决定了你可以安装多高版本的CUDA,因此这些东西的版本不能随便乱装,
我的安装版本是:
联想GTX1050笔记本:
Ubuntu18 + 驱动470 + CUDA 10.0 + CUDNN for 10.0 + torch 1.0.0 + python 3.6
Ubuntu18 + 驱动470 + CUDA 10.2 + CUDNN for 10.2 + torch 1.8.0 + python 3.7
机革GTX4050笔记本:
Ubuntu22 + 驱动525 + CUDA 11.8 + CUDNN for 11.8 + torch 2.0.0 + python 3.8
Ubuntu22 + 驱动525 + CUDA 11.8 + CUDNN for 11.8 + torch 1.12.0 + python 3.8
约束一:先从torch版本入手,先确定你要安装的torch版本 , pytorch每个版本有自己支持的CUDA版本,此约束不一定强制满足,高版本CUDA也可以正常安装,比如我CUDA11.8的也可以使用下面CUDA11.6安装的命令正常安装torch1.12.1
约束二:看一下自己的nvidia驱动最高支持安装CUDA的版本:(需要先安装NVIDIA驱动,后面会讲如何安装驱动)
约束三:CUDA对GPU的算力也需要匹配,否则torch会报以下错误:
# 这里sm_89的意思就是4050的算力是89,该CUDA版本不支持此算力
NVIDIA GeForce RTX 4050 Laptop GPU with CUDA capability sm_89 is not compatible with the current PyTorch installation
先查看自己电脑GPU的算力
然后看一下CUDA和算力之间的匹配关系(其实直接百度你的GPU型号+CUDA,看看别人都安啥版本的CUDA就行了)
最后根据这三个约束找到你要的CUDA版本,后面再根据CUDA版本安装CUDNN以及torch。补充一下,当你发现三个约束冲突,则优先满足约束二和三,比如GPU是4050,查询约束二和三,发现CUDA版本最低也要11.8,而我想安装torch1.8,pip安装里面并没有CUDA11.8的,那么直接先满足约束二和三,安装CUDA11.8即可,然后后面安装torch1.8时,用CUDA版本和11.8最接近的安装命令即可。
我的1050显卡安的是nvidia-driver-470,4050显卡安的是nvidia-driver-525
如果是Ubuntu低于18版本,还要先升级gcc版本,参考
方法一:简单但下载速度特别慢
#1.先把之前的nvidia驱动卸载干净:
sudo apt-get remove --purge nvidia*
#2.添加并更新源
sudo add-apt-repository ppa:graphics-drivers
sudo apt-get update
#3.查看适配的驱动版本
sudo ubuntu-drivers devices
#4.下载你想下载的nvidia驱动版本:
sudo apt install nvidia-driver-470
#5.重启电脑(这一步很重要,不重启没有效果):
reboot
#6.重启后,输入命令查看nvidia驱动是否安装好了
nvidia-smi
说明一下,上面第四步,也可以通过软件和更新
中的附加驱动
安装,但这样看不到下载速度
方法一比较简单,但下载速度是真的慢,几十M的东西得下半多小时
方法二:可能会遇到较多问题,但顺利的话安装很快
该方法就是直接到NVIDA官网下载驱动,然后安装,不过过程中容易出现各种各样的问题,我推荐大家可以先尝试一下,万一自己电脑是天选之子,一步到位呢
安装参考
注意,安装驱动的run文件时,不要加入命令行-no-opengl-files
否则会发现安装后的图形不会显示显卡,安装并未完全成功,
即安装run驱动文件时:
# 不要添加-no-opengl-files命令
sudo ./NVIDIA-Linux.run -no-x-check
问题:Unable to load the “nvidia-drm” kernel module
解决:我两个解决方法都执行了才安装成功
CUDA各个版本下载
CUDA 10.0安装的方法,参考
CUDA 10.2安装的方法,参考,10.2及以上版本安装方法类似
CUDA卸载,参考
注意,这里只需要按教程安装sh脚本文件即可,后面的环境配置之后再说
CUDNN各个版本下载
注意,CUDNN要对应CUDA的版本:
CUDNN8.0以下版本的安装方法,参考
CUDNN8.0及以上版本的安装方法,参考
安装好CUDA和CUDNN后,就可以配置环境了:
sudo gedit ~/.bashrc
# 添加以下内容
# 支持多个CUDA版本切换,要改版本就修改/usr/local/cuda的软连接就行了
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
export PATH=$PATH:/usr/local/cuda/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda
相关命令
查看cuda版本 : nvcc -V
查看位置 : which nvcc
查看NVIDIA动态使用情况: watch -n 1 nvidia-smi
cuda 版本 : cat /usr/local/cuda/version.txt
cudnn 版本 : cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
NVIDIA 驱动版本 : cat /proc/driver/nvidia/version
pytorch离线各版本下载
pytorch在线各版本下载
# 发现下载torch用豆瓣的源比清华源更快
pip install --index-url https://pypi.douban.com/simple 要安装的包
如果pip安装torch出现找不到的问题,可能是Python版本低,可以创建个Python版本更高的conda容器安装;或者是pip源有问题,可以换一个源。
我在4050笔记本上安装,因为是40系显卡CUDA版本必须1.18.0及以上,但是pytorch支持的CUDA1.18.0版本的目前只有pytorch2.0.0版本太新了,好像高版本CUDA也可以安装低版本CUDA支持的pytorch版本,但是CUDA版本差距太大的话,会因为CUDA算力不支持而在torch中报错,我尝试安装了支持CUDA1.16.0的pytorch1.12.0,测试下来好像没问题:
机革GTX4050笔记本:Ubuntu22 + 驱动525 + CUDA 11.8 + CUDNN for 11.8 + torch 1.12.0 + python 3.8
import torch
# 光靠is_available还不足以确定是否安装成功
torch.cuda.is_available()
a=torch.Tensor([1,2])
a=a.cuda()
参考