ubuntu+cuda+pytorch环境搭建
操作系统 ubuntu18.04,显卡 Tesla P40
零零散散装过好几次深度学习pytorch环境,每次都要搜一堆资料,借此机会自己整理一份安装教程。
安装建议
首先需要确定安装的pytorch版本,根据pytorch版本来确定安装的cuda toolkit版本,根据cuda toolkit版本确定cudnn版本,根据cuda toolkit版本确定显卡驱动版本。参考博客
PyTorch与CUDA关系
根据官网建议选择安装即可。
CUDA与NVIDIA显卡驱动关系
安装的cuda版本与显卡驱动的版本是有对应关系的,具体可以参考nvidia官网,根据后续需要确定安装的显卡驱动版本,如:
CUDA与cuDNN关系
在cuDNN官网对比安装的cuda版本,下载正确的cuDNN版本即可。cuDNN主要是进行运算加速,不装其实也可以工作。
显卡驱动安装
一般情况下可以通过在官网下载驱动安装,在ubuntu中也可以用命令进行安装。
命令安装
ubuntu下使用命令安装比较方便,参考博客,我这里使用命令安装。
首先我们需要添加源
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
然后检查可以安装的驱动版本
ubuntu-drivers devices
如我可以选择的驱动:
选择合适的版本安装即可,如:
sudo apt install nvidia-driver-515
最后,重启Ubuntu系统,输入nvidia-smi
查看驱动信息。
官网下载驱动安装
这里由于没有进行实际操作,可以参考其他博客安装。
首先查看显卡型号
lspci | grep -i nvidia
可以看到这里我有两块Tesla P40显卡。
根据显卡型号在nvidia官网驱动程序下载中寻找驱动,如:
下载后运行安装包安装即可(这里可能还需要一些其他设置)。
CUDA安装
进入cuda toolkit官网选择合适的版本进行安装。
根据系统配置选择合适的版本:
根据给定的命令进行下载并安装:
运行安装程序以后,会有条款,接受即可,注意安装CUDA的时候不要安装驱动(因为在上一步我们已经安装过了)。
然后修改环境变量:
vim ~/.bashrc
文件最后添加如下配置,需要根据实际的cuda版本及安装位置修改配置:
export PATH=/usr/local/cuda-11.1/bin:/usr/local/cuda-11.1/nsight-compute-2020.2.1:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.1/lib64:$LD_LIBRARY_PATH
修改完成以后更新环境变量
source ~/.bashrc
验证CUDA安装成功
进入/usr/local/cuda-11.1/samples/1_Utilities/
目录,执行:
cd deviceQuery
sudo make
./deviceQuery
出现如下输出,则CUDA安装成功:
CUDA版本问题疑惑
关于CUDA Driver Version / Runtime Version不一致的问题,参考。
CUDA Driver Version。安装完显卡驱动以后,用nvidia-smi
命令就可以看到类似如下的输出:
得到的结果意思是,显卡驱动版本为515.48.07,可以支持<=11.7版本的cuda
CUDA Runtime Version是你自己在系统上安装的cuda版本,是你跑深度学习模型或其它程序调用的cuda版本,执行nvcc -V
可以查看(前提是你正确安装了cuda并将cuda加入了环境变量),例如我的:
则之后安装pytorch时需要实际参考的cuda版本为CUDA Runtime Version。
cuDNN安装
进入cuDNN官网,选择适合的版本。需要选择cuDNN Library for Linux,如我选择如下版本:
这里直接点这个链接的话,cuDNN需要注册填写一些资料,才可以下载,并且可能会下载失败。
建议直接右击使用迅雷就可以下载,不需要注册啥的。
2022/12/06更新,目前貌似这个方法不行了,但是注册登陆以后的下载速度还可以,若还是觉得慢,可以试一下阿里云nvidia-cuda开源镜像,比如找到ubuntu20.04
目录下有对应的cuda
与cudnn
的deb
安装包。
下载完成后解压:
tar xvf cudnn-11.1-linux-x64-v8.0.5.39.tgz
将解压完的cudnn的头文件与动态库放到已经安装好的cuda对应的文件夹中,如:
# 当前解压完的目录为cuda
sudo cp cuda/include/cudnn* /usr/local/cuda-11.1/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-11.1/lib64
sudo chmod a+r /usr/local/cuda-11.1/include/cudnn*
sudo chmod a+r /usr/local/cuda-11.1/lib64/libcudnn*
查看cuDNN版本
# 有些教程是查看cudnn.h文件,但是我这边失败,cudnn_version.h可以查看到
cat /usr/local/cuda-11.1/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
不清楚应该输出什么算成功,我这边是这样的:
Anaconda安装
python环境我们选择使用Anaconda进行安装,因为可以创建多个虚拟环境比较方便,在官网下载对应版本并安装即可,这里不做详细介绍。
确保激活一个可用的python环境后进行pytorch的安装,如:
conda create -n test python=3.9 # 创建一个虚拟环境
conda activate test # 激活虚拟环境
PyTorch安装
在官网选择合适的版本以后,执行安装命令即可,如:
conda install pytorch==1.10.0 torchvision==0.11.0 torchaudio==0.10.0 -c pytorch
关于命令中的-c pytorch
,这里应该是指定找pytorch
的下载源来下载pytorch。如果给conda换过源,去掉这条命令,可能很快就安装好pytorch,但实际上是不可用的(这里我觉得装的太慢,去掉了这个参数,结果装的是cpu版本的pytorch,只有53m,还得卸了重新装)。
验证是否正确安装,在终端中输入python进入python交互式环境:
import torch
print(torch.__version__)
print(torch.cuda.is_available())
正确输出版本号,并显示True
则安装成功: