这个标题可能有点标题党了。几个月之后回顾这篇博客,觉得这个方案并不适合服务器:服务器应该使用虚拟化的方法搭建环境,这样更加安全。然而如果你是一个做深度学习的,想为自己的主机配置环境,那么这篇文章仍然适合你。
作者按照这篇文章装了实验室的台式机,后来又装了自己的笔记本。感觉这一套下来基本上没有什么坑,读者可以直接follow.
本文是为了解决如下问题而写的:
硬件:计算机,带NVIDIA独立显卡
目标:安装Ubuntu 18.04,并通过Anaconda创建Python深度学习虚拟环境
本文包括了从硬件组装、安装系统、安装显卡驱动到配置深度学习实验环境的内容,可以帮助读者从零开始搭建一台实验室用于深度学习的服务器。
注意:安装任何环境时,如果按照官方的installation guide能够安装成功,就请不要参考任何博客的内容!官方的指引文件一般是不会出错的!
对于个人开发者,想要搞深度学习,建议租个云主机。当然如果你想组个机子,可以往下看。
对于科研工作者,比如某研究生拿到一笔老板的经费,想要配一个初步做深度学习的单机给做服务器,建议买整机,省心+保修+方便报销。具体操作是买一台游戏主机,然后跟卖家确定主板支持Ubuntu,拿回来直接装系统就可。
无论买整机还是组装机,笔者推荐这样的配置:
不要按照上面给出的最低配置配机子,上面给的配置真的可谓乞丐配置了。
注:
以上给出的配置参考1。
这个应该很好学,可以找到很多相关博客。
装系统的教程很多,网上去查,或者参考我本人的博客也可。
为了后续工作,安装完需要做这样几件事:
1.保证网络没有问题,尤其是如果作为服务器,需要安装ssh server,确定其他机子能连的上。文件传输推荐使用软件winscp.
2.保证目前软件包为全新: sudo apt update
, sudo apt gpgrade
3.安装必要的软件包:sudo apt install build-essential gcc
.
笔者这里拿到的机子已经安装好了系统,所以在这里不多讲了。
执行lspci | grep -i nvidia
,观察输出信息中有没有你的nvidia设备。
01:00.0 VGA compatible controller: NVIDIA Corporation Device 1e82 (rev a1)
01:00.1 Audio device: NVIDIA Corporation Device 10f8 (rev a1)
01:00.2 USB controller: NVIDIA Corporation Device 1ad8 (rev a1)
01:00.3 Serial bus controller [0c80]: NVIDIA Corporation Device 1ad9 (rev a1)
注意到NVIDIA Corporation Device 1e82
就是我的GPU。然后去CUDA的官网查看自己的GPU版本是否在CUDA的支持列表中。
首先需要保证,在设置-详细信息-关于
中,你可以在图形
一栏看到自己的显卡型号。
运行ubuntu-drivers devices
查看设备和推荐安装的显卡驱动类型。1
== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==
modalias : pci:v000010DEd00001E82sv00007377sd00000000bc03sc00i00
vendor : NVIDIA Corporation
driver : nvidia-driver-430 - distro non-free
driver : nvidia-driver-435 - distro non-free recommended
driver : xserver-xorg-video-nouveau - distro free builtin
运行sudo ubuntu-drivers autoinstall
自动安装所有驱动。在这一步,需要保证已经apt upgrade
,所有软件包均为最新。
参考2,新建用户并按需要赋予sudo权限(我的建议是不赋予),这里就不多赘述了。
在下面的介绍中,我的用户名为Chong。
为什么要使用虚拟环境?因为开发不同的项目可能需要不同的运行环境,所以不能总是重新配置环境。具体参考3
以下所有操作请在自己的用户下执行。
来到清华Anaconda镜像站,在这里找到所需版本的安装包,下载并运行脚本进行安装。安装过程中一路yes就可以,除了最后是否安装vscode那里选no.
安装完成之后,执行conda config --set show_channel_urls yes
,生成/home/Chong/.condarc
文件,之后编辑文件内容为镜像站页面的那一堆文字:
channels:
- defaults
show_channel_urls: true
channel_alias: https://mirrors.tuna.tsinghua.edu.cn/anaconda
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
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
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
然后运行conda clean -i
清除索引缓存,保证用的是镜像站提供的索引。之后就可以创建虚拟环境了。
安装完conda之后会有一个默认的base环境,如果不新建环境而直接conda activate
,就会进入base环境。
使用如下命令创建名为myenv
的虚拟环境
conda create -n myenv python=3.7
使用如下命令进入和退出该环境:
conda activate myenv
conda deactivate
进入该环境之后可以通过conda
命令来安装各种包。
参考4
用conda info -e
确定现在有哪些环境。
# conda environments:
#
base /home/Chong/anaconda3
myenv * /home/Chong/anaconda3/envs/myenv
其他相关操作参考5
安装cuda是对于所有的用户都有效,但是注意以下的某些操作(比如增添环境变量)是在自己的用户下进行,如果是其他的用户,还要单独做一遍。
请首先遵从官方教程进行安装,如果有不懂再看下面的解释。
Q:可不可以通过在conda中安装tensorflow-gpu来直接安装cuda和cudnn?
A:似乎确实可以,我没有尝试。主要原因是我自己的目的是安装pytorch,害怕通过这种方式安装会导致torch检测不到cuda,所以没有试。如果你的最终目的是安装tf-gpu,不妨尝试一下。
上官网安装CUDA Toolkit x.x,按照官网的指示输入自己的系统信息,获得可执行指令,然后执行指令。以下根据我自己的情况举一个例子。
我的需求是在不重新安装驱动的情况下安装9.x或者10.x的cuda.因为我目前的驱动版本是435,所以参考这个网址,我无法安装10.2及以上的cuda版本,所以选择安装10.1版本。6于是,在这里获得了我想安装的版本,按照网站指使的步骤安装。
我选择通过.run脚本进行安装,于是下载了.run脚本并在管理员权限下运行脚本(sudo sh *.run
),选择安装除了显卡驱动之外的全部东西,运行脚本,完成安装。
然后在/home/Chong/.bashrc
添加如下内容:
# ZC: cuda init
export PATH=$PATH:/usr/local/cuda-10.1/bin:/usr/local/cuda-10.1/NsightCompute-2019.1
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-10.1/lib64
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda-10.1
即对于上述几个环境变量添加链接到cuda-10.1
的硬链接。
我遇到的坑:我一开始没有使用上面的“冒号追加”的语法,而使用下面这样“字符串连接”的语法:
export PATH=/usr/local/cuda-10.1/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
使用这样的语法,PATH显示正常,但是找不到位于/usr/local/cuda-10.1/bin
的nvcc
指令。
如果要多个cuda版本共存,可以参考7,以及8解决了一些稀奇古怪的问题。
如果要安装的cuda版本低,有的时候还需要gcc的版本满足要求,这方面的博客网上可以找到,大概就是安装低版本gcc,然后把gcc命令软链接到低版本gcc上去。
在/usr/local/cuda-10.1/samples
里面sudo make
(需要很久)
然后进入/usr/local/cuda-10.1/samples/bin/x86_64/linux/release
,执行./deviceQuery
和./bandwidthTest
,看结果是否能pass.9
或者,按照官方文档的7.2.3.3,应该进入~/NVIDIA_CUDA-10.1_Samples
,直接make
,然后进入对应位置执行./deviceQuery
进行测试。
如果不想耽误时间全部make一遍,可以挑一个例子验证:进入/usr/local/cuda/samples/1_Utilities/deviceQuery
,执行sudo make
,然后执行./deviceQuery
观察是否可以pass.10
如果pass不了可以试着重启一下再重跑。
注册+冗长填表,选择适合自己的cudnn版本:比如我是cuda10.1,所以根据需要下载对应的文件。然后按照官方installation guide进行安装即可。
建议使用debian方式安装,因为这是唯一一个提供了官方验证安装的方式。笔者使用tar方式安装,使用10的方式自己检验安装,虽然能通过但是心里还是很虚。
我遇到的坑:注册账户的时候不知道为什么网站陷入永久error,试了很久也没有解决,只好换一台电脑重新注册账户并下载安装包。
按照官网指示即可。
装好之后运行torch.cuda.is_available()
,如果True
,恭喜!可以参考11进行更多的测试。
(仅作为个人参考)
安装方式:conda install *
And done! 和实验室小伙伴们一起开心地跑代码吧(误)
真实机下 ubuntu 18.04 安装GPU +CUDA+cuDNN 以及其版本选择(亲测非常实用) ↩︎ ↩︎
Ubuntu 18.04下用户的创建、修改权限及删除用户的方法 ↩︎
什么是虚拟环境、为什么使用虚拟环境、Anaconda创建、激活、退出、删除虚拟环境 ↩︎
conda 创建新环境 ↩︎
Anaconda创建、激活、退出、删除虚拟环境 ↩︎
CUDA driver version is insufficient for CUDA runtime version ↩︎
Ubuntu实现多版本CUDA切换——CUDA9.0与CUDA10.0切换 ↩︎
Ubuntu16.04下安装cuda和cudnn的三种方法(亲测全部有效) ↩︎
Ubuntu 16.04 上安装 CUDA 9.0 详细教程 ↩︎
Ubuntu18.04安装CUDA10、CUDNN ↩︎ ↩︎
pytorch中查看gpu信息 ↩︎