一文搞定实验室服务器配置:硬件+Ubuntu+CUDA/cuDNN+Python/Anaconda深度学习环境配置

写在最前面

这个标题可能有点标题党了。几个月之后回顾这篇博客,觉得这个方案并不适合服务器:服务器应该使用虚拟化的方法搭建环境,这样更加安全。然而如果你是一个做深度学习的,想为自己的主机配置环境,那么这篇文章仍然适合你。

作者按照这篇文章装了实验室的台式机,后来又装了自己的笔记本。感觉这一套下来基本上没有什么坑,读者可以直接follow.

配置服务器

本文是为了解决如下问题而写的:

硬件:计算机,带NVIDIA独立显卡
目标:安装Ubuntu 18.04,并通过Anaconda创建Python深度学习虚拟环境

本文包括了从硬件组装、安装系统、安装显卡驱动到配置深度学习实验环境的内容,可以帮助读者从零开始搭建一台实验室用于深度学习的服务器。

注意:安装任何环境时,如果按照官方的installation guide能够安装成功,就请不要参考任何博客的内容!官方的指引文件一般是不会出错的!

硬件选择和组装

硬件选择

对于个人开发者,想要搞深度学习,建议租个云主机。当然如果你想组个机子,可以往下看。

对于科研工作者,比如某研究生拿到一笔老板的经费,想要配一个初步做深度学习的单机给做服务器,建议买整机,省心+保修+方便报销。具体操作是买一台游戏主机,然后跟卖家确定主板支持Ubuntu,拿回来直接装系统就可。

无论买整机还是组装机,笔者推荐这样的配置:

  • 显卡:一块靠谱能用的显卡,在2020年9月,这个标准是(个人)1060及以上(服务器)2080及以上。(够低了吧?)
  • 内存:(个人)8G及以上(服务器)32G及以上(8G也太小了吧?)
  • 硬盘:(个人)512固态+0T机械,(服务器)0T固态+4T机械,机械的大小根据需求决定。
  • 主板:确定能安装Ubuntu即可
  • CPU:尽量选择有核显的型号;(个人)4核8线程(服务器)。

不要按照上面给出的最低配置配机子,上面给的配置真的可谓乞丐配置了。

注:

  • 为什么推荐有核显的CPU:一开始装系统的时候可以直接默认用核显显示,然后装cuda的时候再一起安装显卡驱动和cuda,而不是像本文这样先驱动后cuda。如果一起一起安装显卡驱动和cuda,按照installation guide一步一步操作,基本上不会失败。
  • 以上给出的配置属于乞丐配置,可以按照工作需求往上加
  • 有条件的实验室直接买多卡服务器,存储搭RAID,请受我一拜并忽略这个配置推荐。

以上给出的配置参考1

硬件组装

这个应该很好学,可以找到很多相关博客。

安装Ubuntu系统

装系统的教程很多,网上去查,或者参考我本人的博客也可。

为了后续工作,安装完需要做这样几件事:
1.保证网络没有问题,尤其是如果作为服务器,需要安装ssh server,确定其他机子能连的上。文件传输推荐使用软件winscp.
2.保证目前软件包为全新: sudo apt update, sudo apt gpgrade
3.安装必要的软件包:sudo apt install build-essential gcc.

笔者这里拿到的机子已经安装好了系统,所以在这里不多讲了。

安装显卡驱动

检测nvidia显卡的存在

执行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+CUDA/cuDNN+Python/Anaconda深度学习环境配置_第1张图片

运行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。

安装Anaconda

为什么要使用虚拟环境?因为开发不同的项目可能需要不同的运行环境,所以不能总是重新配置环境。具体参考3

下载并安装anaconda

以下所有操作请在自己的用户下执行。

来到清华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

安装cuda是对于所有的用户都有效,但是注意以下的某些操作(比如增添环境变量)是在自己的用户下进行,如果是其他的用户,还要单独做一遍。
请首先遵从官方教程进行安装,如果有不懂再看下面的解释。

通过conda安装?

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/binnvcc指令。

一些额外信息

如果要多个cuda版本共存,可以参考7,以及8解决了一些稀奇古怪的问题。

如果要安装的cuda版本低,有的时候还需要gcc的版本满足要求,这方面的博客网上可以找到,大概就是安装低版本gcc,然后把gcc命令软链接到低版本gcc上去。

测试cuda的安装

/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

注册+冗长填表,选择适合自己的cudnn版本:比如我是cuda10.1,所以根据需要下载对应的文件。然后按照官方installation guide进行安装即可。

建议使用debian方式安装,因为这是唯一一个提供了官方验证安装的方式。笔者使用tar方式安装,使用10的方式自己检验安装,虽然能通过但是心里还是很虚。

我遇到的坑:注册账户的时候不知道为什么网站陷入永久error,试了很久也没有解决,只好换一台电脑重新注册账户并下载安装包。

安装pytorch

按照官网指示即可。

装好之后运行torch.cuda.is_available(),如果True,恭喜!可以参考11进行更多的测试。

安装python包

(仅作为个人参考)

  • pytorch numpy tensorflow-gpu jupyter
  • matplotlib xlrd xlwt openpyxl
  • docopt tqdm
  • scipy pandas
  • sklearn gensim nltk

安装方式:conda install *

And done! 和实验室小伙伴们一起开心地跑代码吧(误)

参考


  1. 真实机下 ubuntu 18.04 安装GPU +CUDA+cuDNN 以及其版本选择(亲测非常实用) ↩︎ ↩︎

  2. Ubuntu 18.04下用户的创建、修改权限及删除用户的方法 ↩︎

  3. 什么是虚拟环境、为什么使用虚拟环境、Anaconda创建、激活、退出、删除虚拟环境 ↩︎

  4. conda 创建新环境 ↩︎

  5. Anaconda创建、激活、退出、删除虚拟环境 ↩︎

  6. CUDA driver version is insufficient for CUDA runtime version ↩︎

  7. Ubuntu实现多版本CUDA切换——CUDA9.0与CUDA10.0切换 ↩︎

  8. Ubuntu16.04下安装cuda和cudnn的三种方法(亲测全部有效) ↩︎

  9. Ubuntu 16.04 上安装 CUDA 9.0 详细教程 ↩︎

  10. Ubuntu18.04安装CUDA10、CUDNN ↩︎ ↩︎

  11. pytorch中查看gpu信息 ↩︎

你可能感兴趣的:(Linux/Ubuntu)