深度学习服务器折腾记
由于工作需要,单位给买了一台思腾合力的深度学习服务器,4块RTX2080Ti显卡,本文主要记录折腾过程,以防以后挂了还能重头来一遍(_)
安装操作系统
首选安装16.04 x86_64 desktop操作系统,安装方法不表,有些厂商出厂会给安装好。操作系统安装完毕后需要安装常用的开发必备组件,如build-essential, cmake, cmake-qt-gui, python等组件。
安装Nvidia驱动
对于服务器的GPU配置为4块RTX2080Ti 显卡,首先需要到Nvidia官网下载最新驱动,下载后得到NVIDIA-Linux-x86_64-440.82.run
;下载完毕后,需要安装,安装过程中需要禁用X服务,然后再终端界面下安装,具体如下:
- 禁用nouveau驱动,执行
sudo gedit /etc/modprobe.d/blacklist.conf
,编辑文件,添加以下内容:
blacklist nouveau
blacklist lbm-nouveau
保存文件,重启系统。
- 验证nouveau是否已禁用,执行
lsmod | grep nouveau
,没有消息就说明禁用成功。 - 关闭当前的X服务,执行
sudo service lightdm stop
,可以看到桌面被关闭; - 按
Ctrl+Alt+F1
进入纯字符模式,输入用户名和密码登录系统; cd 存放NVIDIA-Linux-x86_64-440.82.run文件的路径
,若文件没有可执行权限,则提升权限,chmod a+x NVIDIA-Linux-x86_64-440.82.run
,然后执行sudo sh NVIDIA-Linux-x86_64-440.82.run -no-x-check -no-nouveau-check -no-opengl-files
,其中,最后一项-no-opengl-files
一定要添加,否则后续会出现无限循环登录的问题;- 根据出现的安装向导进行一步一步的安装,大部分选项都按照默认即可;
- 安装完毕,执行
sudo service lightdm start
,可以看到熟悉的图形界面又回来了,然后输入密码登录系统; - 测试显卡驱动,执行
nvidia-smi
,看到有消息打印出来,说明驱动安装完毕;
安装CUDA以及CUDNN
如果深度学习开发是纯粹使用python进行开发,则推荐使用conda进行环境配置,这样的话根本不需要手工安装CUDA和CUDNN。如果需要进行C/C++语言的深度学习应用开发,则需要配置该环境。配置过程如下:
- 从Nvidia官网下载cuda和cudnn的安装包,其中cudnn的安装需要注册账号并登录才能下载。对于cuda的安装包,推荐下载.run格式的,对cudnn的安装包,推荐下载.tgz格式的压缩包,而非.deb安装包,此处下载得到文件分别为:
cuda_10.1.168_418.67_linux.run和cudnn-10.1-linux-x64-v7.6.5.32.tgz
; - 先安装cuda,执行
sudo ./cuda_10.1.168_418.67_linux.run
打开安装向导,期间会提示选择安装组件,由于已经安装了更高版本的驱动,此处不选择安装驱动,其他的全部勾选,确认安装即可; - cuda安装完毕会在
/usr/local
生成cuda-10.1的文件夹以及cuda的链接文件夹,文件夹中包含了所有的依赖项,同时在用户目录/home/user
目录中会有CUDA的sample工程目录;根据安装最后的提示,将cuda添加到系统路径PATH; - 安装cudnn,此组件的安装极为简单,只需解压,解压后得到
include
和lib64
两个文件夹,其中包含了cudnn的头文件与库,将其使用管理员权限全部复制到cuda的安装目录中对应的文件夹中即可;
安装nccl组件
nccl组件是老黄为了在多GPU环境下的并行计算开发的组件,可用来调度多个GPU加速计算,怎么用不清楚,反正服务器装上才算满血,安装方法如下:
- 去官网下载安装组件,登录账号,选择合适的版本进行下载,得到
nccl-repo-ubuntu1604-2.6.4-ga-cuda10.1_amd64.deb
; - 安装过程参照官网的文档
https://docs.nvidia.com/deeplearning/nccl/install-guide/index.html
; - 按照本地安装的方式,首先安装.deb包,执行
sudo dpkg -i nccl-repo-ubuntu1604-2.6.4-ga-cuda10.1_amd64.deb
,完毕后并没有真正的安装,只是将软件包建立了一个本地软件源,需要使用apt安装; - 更新软件源,
sudo apt update
; - 安装具体的软件包,
sudo apt install libnccl2 libnccl-dev
,安装完毕后才是真正的完成;
测试GPU工作情况
测试需要使用gpu-burn
软件,该软件需要从github上下载,地址为github.com/wilicc/gpu-burn
,使用git将其克隆下来,make编译,得到gpu-burn的可执行文件,执行,得到每一个GPU的测试OK输出,若没有,说明环境配置未完善,请检查之前的配置情况。
安装conda环境
此处选择miniconda,以为其小巧精简,安装包也小,省手机流量(不许联网的日子苦啊,只能用个USB网卡链接手机热点搞)。此处选择了适配python3.7.5的miniconda安装包。为使得所有用户都能使用该环境,免去重复安装的工作,此处将其安装到/opt/miniconda3
路径下,这么一来,后续配置环境与在线安装依赖都需要管理员权限(或者干脆把/opt路径赋予777权限),但是一次配置,终身使用,省的人多了乱装环境搞乱了。安装过程不表。安装完毕,配置清华大学的镜像源。
配置conda环境
此处涉及到conda命令的常用操作。
- 配置tensorflow-gpu环境(举例,pytorch, mindspore同理)
- 创建新的用户环境
sudo conda create -n tf --clone base
; - 激活用户环境
conda activate tf
; - 安装用户所需库
sudo conda install tensorflow-gpu keras matplotlib pandas -n tf
,其实处于当前激活的环境中,conda install ***
是默认仅安装给当前用户的,增加-n tf
只是为了保险起见; - 省略。。。。。。具体看需求进行灵活配置
配置服务器远程登录
常见的远程登录方式不外乎ssh,但这种方式仅限于终端操作,对于需要进行桌面可视化界面操作,需要使用远程桌面环境,比如rdp和vnc,配置方法可去网络上搜索,关键词ubuntu远程桌面、windows远程登录ubuntu、等等
一大堆,此处不表;
配置多用户登录环境
添加新用户 sudo su
进入root,执行adduser xxx
添加新用户,根据向导完成添加,新用户默认没有管理权限,增加管理员权限需要修改/etc/sudoers
文件,添加xxx ALL=(ALL: ALL) ALL
。除非必要,不要给用户分配管理员权限,否则万一不小心rm -rf /
了就妈卖批了。