ubuntu 20.04 深度学习环境配置过程以及遇到的一系列问题
文章目录
写这个博客主要还是为了记录一下里面的过程和需要用到的命令,以及对一些发生的问题进行记录,方便后面如果再次使用的时候可以有参考。
Nvidia 显卡驱动的安装
这个部分我还是参考之前的笔记进行的安装:记录Ubuntu20.04的NVIDIA显卡驱动安装和CUDA安装
没啥好说的。
CUDA 和 cuDnn 版本的安装
首先是对照CUDA和显卡驱动的对应表,这个网上都有。其次上面安装 Nvidia 驱动的文章中也有相关 CUDA 的安装链接,这里就不多说了。然后是 cudnn 的安装,这个是参考这份文章:最正确的姿势安装cudnn。
因为网上很多的博客里面在关于 cudnn 的安装上,说的是将官网下载的包解压之后会获得名为 cuda 的文件夹,然后再进行文件夹里面文件的复制和替换,但是我最开始安装这个的时候,并没有找到解压后得到的 cuda 文件夹,当时以为是最开始安装的 CUDA 版本有问题,折腾半天,没想到原来其实就是将解压好的 cudnn 文件里面的东西复制到 /usr/local/cuda/ 这个路径对应的文件夹下面。最后再添加环境变量。详细的参考上面的那个博客。
需要注意,下载的包如果后缀是 .tar.gz
,则命令行使用 tar -zvxf
。如果后缀是 .tar.xz
,则命令行改为 tar -xf
。其他部分与上面的博文一样。
编辑和更新环境变量的命令:
// 编辑文件
gedit ~/.bashrc
// 编辑完成保存并退出后,更新文件
source ~/.bashrc
不过这个博客里面需要注意一个问题,查看安装的 CUDA 版本,比较新的 CUDA 已经没有version.txt 文件了,相关的版本信息在这个文件 version.json 里面,因此使用的命令是
cat /usr/local/cuda/version.json
同样,查看 cudnn 版本的文件也不是 cudnn.h 而是 cudnn_version.h ,因此使用的命令为:
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
anaconda 的安装
这个软件是管理环境的,直接安装最新版本就可以。安装教程好找。
里面常用的命令可以参考这个博客:Anaconda conda常用命令:从入门到精通
pytorch 版本确定和安装
在安装 pytorch 的时候首先要确定一点:一个系统可以同时安装多个 CUDA 版本,一个虚拟环境只能安装一个 pytorch 版本,不同的torch 需要不同的cuda版本。
因此在安装不同版本的 pytorch 的时候需要通过 anaconda 创建不同的环境,然后在各自的环境中按照项目或者课题的要求安装对应版本的 pytorch。后面还会谈论到安装 torchvision,不同版本的 pytorch、torchvision、python、CUDA 之间的对应关系可以参考这个博客:PyToch和Torchvision对应版本。
如果以前已经安装过 pytorch 和 torchvision 版本的,但是想查询其对应的版本号的,有两个方法:
方法一:
// 首先激活所在的虚拟环境。例如创建的虚拟环境是 pytorch111,那么通过 conda 命令激活
conda activate pytorch111
// 输入命令,查询里面所有库的版本号
conda list
方法二:
// 首先激活所在的虚拟环境。例如创建的虚拟环境是 pytorch111,那么通过 conda 命令激活
conda activate pytorch111
// 然后输入 python 进入所在的 python 环境
python
// 导入 pytorch 包,查看版本。注意 pytorch 的包名此处就是 torch。其次此处的下划线单侧是两个,而不是一个。
import torch
torch.__version__
// 导入 torchvision 包,查看版本。
import torchvision
torchvision.__version__
退出 python 环境的命令:
exit()
如果之前没有安装过这两个包的,那么需要参考一下步骤进行安装。
1.首先为 pytorch 单独创建 conda 环境
单独创建 conda 环境用于匹配对应的PyTorch版本。创建的命令如下。
conda create -n pytorch1130 python=3.8
安装的是 pytorch1.13.0 版,因此创建的 conda 环境命名 pytorch1130,并指定了Python版本为3.8。(当然这个指定的 python 版本如果电脑里面没有安装,那么在构建这个虚拟环境的时候,系统会默认将这个版本的 python 安装在虚拟环境里面。)
2.激活创建的 conda 环境
conda activate pytorch1130
激活后即可进入对应环境
3.输入安装指令安装PyTorch
按照上面对应的 pytorch 和 torchvision 的版本,在官网中查找对应 conda 系列下面的 pytorch。然后在刚刚激活好 python 环境的终端输入安装指令。
// 例如我的 CUDA 版本是 11.6,因此要安装的 pytorch 选择的是 1.13.0 ,同时对应的 torchvision 的版本是 0.14.0
conda install pytorch==1.13.0 torchvision==0.14.0 torchaudio==0.13.0 pytorch-cuda=11.6 -c pytorch -c nvidia
- conda install:conda 包管理器的安装命令。
- pytorch==1.13.0:安装 PyTorch 的版本为 1.13.0。双等好表示精确匹配该版本。
- torchvision==0.14.0: 安装 Torchvision 的版本为 0.14.0。
- torchaudio==0.13.0: 安装 Torchaudio 的版本为 0.13.0。
- pytorch-cuda=11.6: 安装名为 pytorch-cuda 的包,并指定其中需要的 CUDA Toolkit 版本为 11.6。
- -c pytorch -c nvidia: 这是指定包的来源(channel)。-c pytorch 表示从 PyTorch 的官方 channel 中获取包, -c nvidia 表示从 NVIDIA 的 channel 获取包。
但是这个命令在安装的时候有可能会出问题,报错:
An HTTP error occurred when trying to retrieve this URL.
HTTP errors are often intermittent, and a simple retry will get you on your way.
出现这个问题,大概率是因为 anaconde 的服务器在国外,国内下载速度很慢,下载内容较大时常出现问题。此时可以参考清华镜像网的方式来解决:Anaconda 镜像使用帮助
当然也可以通过再次运行安装指令的方式来解决(虽然没啥用,该慢还是慢)。
conda clean -i
用于清理 conda 包管理器的缓存和临时文件。“-i” 参数表示只清理索引缓存。索引缓存是 conda 用来存储软件包和版本信息的本地缓存。当环境中的软件包列表发生变化或更新时,索引缓存可能会过时,因此使用 “conda clean -i” 可以清除旧的索引缓存,以便后续重新下载最新的索引信息。
**注意,**清理索引缓存不会删除已安装的软件包,它只会清理与索引相关的文件。如果需要清理其他类型的缓存,可以使用不同的参数,如 “-p” 清理包缓存等。
如果网络在下载的时候不稳定,产生这个报错:
CondaError: Downloaded bytes did not match Content-Length
那么可以使用这个命令。 设置conda下载的 timeout:
conda config --set remote_read_timeout_secs 600.0
注意::一定要找一个 WIFI 环境好的地方,网速快且稳定。
安装过程中还会出现的问题:
Downloading and Extracting Packages
Preparing transaction: done
Verifying transaction: failed
CondaVerificationError: The package for cuda-nvcc located at /home/be/anaconda3/pkgs/cuda-nvcc-11.6.124-hbba6d2d_0
appears to be corrupted. The path 'bin/__nvcc_device_query'
specified in the package manifest cannot be found.
这个问题我参考这个文档:解决conda安装时出现的CondaVerificationError问题,找到了/home/be/anaconda3/pkgs/cuda-nvcc-11.6.124-hbba6d2d_0
文件,然后将其删除。之后就没有问题了。
安装完成之后会报:
Downloading and Extracting Packages:
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
可以进入创建好的虚拟环境,输入 conda list
,查看安装的一系列库的版本。
神奇的下载网站,这里记录一下:http://download.pytorch.org/whl/torch/
需要离线安装文件,用这个网站可以比较快的下载安装包。