一、前言
之前写过一篇 NVIDIA显卡配置,主要参考官方文档,用包管理器的方式来安装显卡驱动和CUDA。
但是这种方法不够灵活,配置自己的机器没问题,如果要在多人共用的服务器上,有下列的需求或情况时,不好处理:
- 多版本 CUDA 并存,不影响其他用户
- 无 sudo 权限,安装 CUDA
- 使用机器已安装的显卡驱动
这一篇主要记录下针对以上的情况,如何快速稳定地配置深度学习环境。
二、安装驱动
一般服务器供应商会帮你安装好驱动。如果驱动可用,可以跳过这一节;如果别人安装的驱动不满足要求,用这节的方法可以快速稳定地安装显卡驱动。
自己重装驱动前,一定一定要记得先卸载原驱动!否则后面可能会遇到各种各样的问题!
1、查询显卡和驱动信息
查看显卡信息:
1
2
3
4
5
lshw -numeric -C display
# or
lspci -vnn | grep VGA
# output
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP106 [GeForce GTX 1060 6GB] [10de:1c03] (rev a1) (prog-if 00 [VGA controller])
输出显卡型号为 [GeForce GTX 1060 6GB]
。
查看显卡驱动版本:
1
2
3
4
5
6
7
# 查看已有显卡驱动版本
lspci -k | grep -EA3 'VGA|3D|Display'
# 查看 NAVIDIA 驱动版本
nvidia-settings --version
# or
cat /proc/driver/nvidia/version
2、卸载驱动
驱动兼容性列表:
推荐先卸载所有 NVIDIA 驱动。
卸载驱动命令:
1
2
3
4
5
6
# 卸载驱动 runfile 方式安装的驱动
sudo /usr/bin/nvidia-uninstall
# 卸载 Deb 方式安装的驱动
sudo apt-get --purge remove nvidia*
sudo apt-get autoremove
确保驱动卸载干净后,可以安装我们的驱动了。(可用 nvidia-smi
测试驱动是否可调用)
3、安装驱动
这篇文章 总结的很好,安装驱动有三种方法:
- 使用标准 Ubuntu 仓库进行自动化安装
- 使用 PPA 仓库进行自动化安装
- 使用官方的 NVIDIA 驱动进行手动安装(需要禁用 Nouveau)
其实还有第四种,就是 CUDA Toolkit 自带驱动,不过版本是固定的。
这里推荐用第一种方法来安装,这种方法最简单。
(1)检测你的 NVIDIA 显卡型号和推荐的驱动程序的模型。
在命令行中输入如下命令:
1
2
3
4
5
6
7
8
9
10
11
12
13
ubuntu-drivers devices
# 输出类似下列内容
== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==
modalias : pci:v000010DEd00001180sv00001458sd0000353Cbc03sc00i00
vendor : NVIDIA Corporation
model : GK104 [GeForce GTX 680]
driver : nvidia-304 - distro non-free
driver : nvidia-340 - distro non-free
driver : nvidia-384 - distro non-free recommended
driver : xserver-xorg-video-nouveau - distro free builtin
== cpu-microcode.py ==
driver : intel-microcode - distro free
从输出结果可以看到,目前系统已连接 Nvidia GeFrand GTX 680 显卡,建议安装驱动程序是 nvidia-384 版本的驱动。
注意:在一些 server 版的 Ubuntu 中,没有
ubuntu-drivers
命令,可以按下列流程安装:
1 2 3 4 5 sudo apt-get install ubuntu-drivers-common # 可访问外网,则直接添加 ppa # sudo add-apt-repository ppa:graphics-drivers/ppa # 网络不好,则用国内反代添加 ppa sudo add-apt-repository https://launchpad.proxy.ustclug.org/graphics-drivers/ppa/ubuntu
(2)使用仓库自动化安装
输入安装命令:
1
2
3
4
# 安装推荐的驱动程序
sudo ubuntu-drivers autoinstall
# 或者自己选择安装版本
sudo apt install nvidia-340
安装结束,重启系统,就完成了。
更新:
如果想安装比较新的驱动,可以先加入 PPA:
1 2 sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt update然后再安装上面的步骤,就可以安装最新的驱动了。
三、安装 CUDA
在以前的文章 NVIDIA显卡配置 中说过,安装 CUDA 有两种方法:
- 用对应系统的包管理器(对 Ubuntu 系统来讲就是 Deb 包)
- 用 runfile 文件
官方文档 推荐用包管理器安装,但是为了解决前言中列出的问题,本文推荐用 runfile 文件安装。
1、查询 CUDA 信息
查询 CUDA 版本:
1
2
nvcc -V
dpkg -l | grep cuda
查询 CUDA 安装位置:
1
which nvcc
CUDA 兼容性列表:
注意:用本文的安装方式可以多 CUDA 共存,不需要卸载已有 CUDA
卸载 CUDA 命令:
1
2
3
4
5
6
# 卸载 runfile 方式安装的 CUDA
sudo /usr/local/cuda-X.Y/bin/uninstall_cuda_X.Y.pl
# 卸载 Deb 方式安装的 CUDA
sudo apt-get --purge remove cuda
sudo apt-get autoremove
2、安装 CUDA
(1)下载 CUDA
CUDA 官网 下载 CUDA,注意选择 runfile[local]
文件。
(2)执行安装命令
1
sh cuda_xxx_linux.run
说明:
- 选择不安装驱动、安装 CUDA、不安装sample
- CUDA 安装目录自定义,但是如果安装到系统路径,需要 sudo 执行
3、设置环境变量
将以下内容添加到 ~/.bashrc
或者 ~/.zshenv
中:
1
2
3
4
# /usr/local/cuda-10.0 换成对应 CUDA 安装路径
export PATH=/usr/local/cuda-10.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
source
一下修改的文件,然后执行 nvcc -V
,看 CUDA 是否配置成功。
4、多 CUDA 并存
多版本 CUDA 的安装方法和上面一样,用 runfile 安装到另一个路径下即可。
切换 CUDA 版本时,修改环境变量的 CUDA 路径,或者用软链接的方式修改软链接,就可以切换了。
四、安装 cuDNN
1、查询 cuDNN 信息
查询 cuDNN 版本:
1
2
3
4
5
6
# tar方式安装的 cuDNN
# /usr/local/cuda 换成 cuda 安装路径
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
# Deb方式安装的 cuDNN
dpkg -l | grep cudnn
2、安装 cuDNN
cuDNN 一样也有两种安装方式:
- 通过 tar 压缩包安装
- 通过 Deb 包管理器安装
本文推荐用 tar 压缩包安装。
1
2
3
4
5
tar -xzvf cudnn-9.0-linux-x64-v7.tgz
# /usr/local/cuda 换成 cuda 安装路径
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h/usr/local/cuda/lib64/libcudnn*
五、安装 Miniconda
1、下载安装 Miniconda
1
2
# 按照提示安装
bash Miniconda3-latest-Linux-x86_64.sh
2、新建 conda 环境
1
conda create --name pytorch python=3.6
3、设置代理
(1)设置 conda 代理:清华 conda 镜像
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
vim ~/.condarc
# 添加以下内容
channels:
- defaults
show_channel_urls: true
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
(2)设置 pip 代理:清华 pypi 镜像
1
2
3
4
5
6
7
# 用镜像升级 pip
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pip -U
# 配置镜像
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
# 临时使用
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
(3)可选:Ubuntu 清华镜像
1 2 3 4 5 6 7 8 9 10 11 12 13 14 # 备份 /etc/apt/sources.list,替换为下面内容 # 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释 deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse # 预发布软件源,不建议启用 # deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
4、常用 conda 命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 获取版本号
conda -V
# 创建环境
conda create --name your_env_name
# 创建指定 python 版本的环境
conda create --name your_env_name python=3.6
# 创建包含某些包的环境
conda create --name your_env_name python=3.5 numpy scipy
# 列出当前所有环境
conda env list
conda info -e
# 进入某个环境
conda activate your_env_name
# 查看已安装的包
conda list
# 退出当前环境
deactivate
# 复制某个环境
conda create --name new_env_name --clone old_env_name
# 删除某个环境
conda remove --name your_env_name --all
5、conda、pip 环境复制
1
2
3
4
# conda 导出已有环境
conda env export > environment.yaml
# 导入环境
conda env create -f environment.yaml
1
2
3
4
# pip 导出已有环境
pip freeze > requirements.txt
# pip 导入环境
pip install -r requirements.txt
在环境移植的过程中,如果想要在不联网的情况下直接复制别的机器或者自己的环境,可以将 env 下面对应的环境直接进行拷贝,(只适用于 anacoda 大版本相近 anaconda2 与 3 应该是不行的因为对应路径就已经有了变化),直接将整个环境复制然后全部拷贝到新环境的路径文件夹中。
注意:
直接拷贝到本机时候 link 文件是不会被拷贝下来的 会使得环境失效 然后解决方案是 通过 tar 进行压缩之后将环境压缩包拷贝到新的机器文件夹下面 解压即可 如果想改变环境名字 直接更改环境对应的文件夹名字即可。
更新:conda 环境迁移见新博文「Conda环境迁移」。
六、安装 PyTorch
1、安装最新 PyTorch:
1
conda install pytorch torchvision cudatoolkit=10.1 -c pytorch
2、指定 PyTorch 版本:
1
conda install pytorch=1.0 torchvision cudatoolkit=10.1 -c pytorch
3、指定 CUDA 版本:
1
conda install pytorch torchvision cudatoolkit=9.0 -c pytorch
参考
- Ubuntu 18.04 NVIDIA驱动安装总结
- How to install the NVIDIA drivers on Ubuntu 18.04 Bionic Beaver Linux
- Install the Latest Nvidia Linux Driver
- ppa/pip/anaconda/npm在中国大陆很慢怎么办?
- anaconda使用教程+直接环境拷贝移植所遇到的问题解决