深度学习装机配置流程
0.配置列表
序号 | 产品名称 | 品牌、规格型号 | 数量 |
---|---|---|---|
1 | CPU | INTEL i9 7920X | 1 |
2 | CPU散热器 | 美商海盗船H110I | 1 |
3 | 主板 | Asus/华硕 WS X299 SAGE | 1 |
4 | 内存 | 美商海盗船 复仇者LPX DDR4 3000 16GB | 4 |
5 | 固态硬盘 | 三星860 1T | 1 |
6 | 机箱 | 美商海盗船(USCORSAIR) AIR540 | 1 |
7 | 显卡 | 英伟达(NVIDIA)TITAN Xp 显卡 | 4 |
8 | 电源 | EVGA 额定1600w 1600T2电源 | 1 |
1.BIOS设置
在装机过程中,ubuntu16.04 始终安装不上去,常常是莫名其妙的重启以及一些报错。例如报错内容是Error parsing PCC subspaces from PCCT,尝试网上各种解决方法依然无法解决,因此放弃尝试。怀疑问题的原因是主板和系统兼容性的问题,故安装ubuntu18.04系统。
在主板的BIOS关闭快速启动和安全启动。(电脑开机时,按F2进入BIOS设置)
2.系统安装
ubuntu18.04系统是通过U盘启动盘的方式进行安装,具体步骤参考网络资料。安装过程中是选择联网下载更新并且还下载第三方软件(当时是考虑到安装时直接下载更新,可以让系统更好地支持主板)。安装时选择手动分区,分区设置参考如下:
EFI分区:500-1000M
swap分区:8G一级以上和内存同样大小;8G以下分内存两倍
其余全部分给根分区
3.深度学习环境配置
深度学习环境:CUDA9+CUDNN7.4+TensorFlow1.12
整个深度学习环境的配置过程都是直接在图形工作站上直接操作完成。参考文章:https://zhuanlan.zhihu.com/p/50302396 和 https://blog.csdn.net/weixin_41863685/article/details/80303963
3.1安装ssh
安装ssh是为了之后可以远程连接工作站使用。
sudo apt-get install openssh-server
3.2安装显卡驱动
默认安装的显卡驱动不是英伟达的驱动,所以先把旧得驱动删除掉。
sudo apt-get purge nvidia*
添加Graphic Drivers PPA
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
查看合适的驱动版本:
ubuntu-drivers devices
图中可以看出推荐的是最新的415版本的驱动,安装该驱动:(即安装推荐版本的驱动,可能具体的驱动版本不同,请根据实际调整)
sudo apt-get install nvidia-driver-415
安装完毕后重启机器:
sudo reboot
重启完毕运行
nvidia-smi
生效的显卡驱动会有如下的输出:
3.3安装依赖库
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
3.4GCC降低版本
CUDA9.0要求GCC版本是5.x或者6.x,其他版本不可以,需要自己进行配置,通过以下命令才对GCC版本进行修改。
- 版本安装
# 版本安装:
sudo apt-get install gcc-5
sudo apt-get install g++-5
- 通过命令替换掉之前的版本
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 50
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 50
3.5安装CUDA9.0
版本选择: linux–x86-64,Ubuntu–17.04,runfile(local),下载Base Installer和4个Patch
进入下载目录,依次执行命令:(注意:在安装过程中会提示是否需要安装显卡驱动,在这里要选择n,其他的选择y或者回车键进行安装)
sudo sh cuda_9.0.176_384.81_linux.run
sudo sh cuda_9.0.176.1_linux.run
sudo sh cuda_9.0.176.2_linux.run
sudo sh cuda_9.0.176.3_linux.run
sudo sh cuda_9.0.176.4_linux.run
在~/.bashrc 中设置环境变量:
sudo vi ~/.bashrc
在最后添加:
exportPATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
exportLD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
修改完bashrc之后,需要使配置生效,使用命令:
source ~/.bashrc
或者,重新启动工作站:
sudo reboot
重启后,测试CUDA是否成功(此步骤可以省略)
cd ~/NVIDIA_CUDA-9.0_Samples/1_Utilities/deviceQuery
make -j4
sudo ./deviceQuery
若会输出相应的显卡性能信息,Result = PASS,表明CUDA安装成功。
3.6安装CUDNN
下载网站:http://link.zhihu.com/?target=https%3A//developer.nvidia.com/rdp/cudnn-download 需要登录,同意条款之后才可以下载。
Download cuDNN v7.4.2 (Dec 14, 2018), for CUDA 9.0 —— cuDNN Library for Linux
下载时候保存为 cudnn-9.0-linux-x64-v7.4.2.24.tgz
然后,将包解压,并拷贝到相应的系统CUDA路径下。注意最后一行拷贝时 "-d"不能少。
tar -zxvf cudnn-9.0-linux-x64-v7.4.2.24.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp -d cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r/usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
没有报错就是全部安装完成了。
3.7安装Anaconda
下载网站:https://www.anaconda.com/distribution/
然后,进入Anaconda的安装包所在目录,运行命令: (以Anaconda3-5.3.0-Linux-x86_64.sh为例)
bash Anaconda3-5.3.0-Linux-x86_64.sh
更改pip 和 conda为国内的源
由于国内访问pip和conda比较慢,建议更改为国内的源:
a.更改pip的源为阿里云:
mkdir ~/.pip
cat > ~/.pip/pip.conf << EOF
[global]
trusted-host=mirrors.aliyun.com
index-url=https://mirrors.aliyun.com/pypi/simple/
EOF
b.更改conda的源为清华大学:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/menpo/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda config --set show_channel_urls yes
3.8安装 tensorflow1.12
tensorflow1.12 对应的python版本是3.6,故创建pyhton3.6的虚拟环境
conda create --name tf python=3.6 #创建tf环境
conda activate tf #激活tf环境
pip install tensorflow-gpu==1.12 #官网推荐的命令
测试tensorflow是否安装正确
conda activate tf
python
import tensorflowas tf
hello= tf.constant('Hello, TensorFlow!')
sess= tf.Session()
print(sess.run(hello))
没有报错就是配置正确。
keras 和 pytorch 安装思路类同。
4.远程登录设置
4.1非图形化界面连接
使用Xshell 6 连接远程工作站,用命令行进行程序编写。使用 Xftp 6进行本机和远程工作站的文件交互。
4.2图形化界面连接
参考文章:https://blog.csdn.net/qq_25556149/article/details/82216190 和 https://blog.csdn.net/clksjx/article/details/83445127
刚开始是参考第一篇文章,安装了xubuntu的界面,但是个人不喜欢xubuntu界面,故尝试又恢复到gnome界面,以下流程仅供参考。(图形化远程连接,会感觉到明显的卡顿,但是对于代码编写感觉影响不大)
4.2.1ubuntu的设置
安装 xrdp、tightvncserver
sudo apt-get install tightvncserver xrdp
这里要注意的是,如果你的系统中支持 Xorg的话,要先安装 tightvncserver 再安装 xrdp,因为这会影响到安装的xrdp的版本,如果先安装xrdp再安装tightvncserver,会出现老版本的xrdp,这里面没有Xorg,在笔者的系统中使用Xvnc会出现登录不上的问题,所以还是使用Xorg好
不安装xubuntu-desktop,使用gnome(不喜欢xubuntu界面)
echo gnome-session >~/.xsession
修改 /etc/xrdp/startwm.sh 文件
sudo gedit /etc/xrdp/startwm.sh
将最后两行 test 和 exec 用**#**注释掉 ,并在最后添加一行内容 gnome-session,如下所示:
然后重启ubuntu。
4.2.2Windows 10连接ubuntu18.04
打开远程桌面连接,并输入工作站的IP,如下图所示
IP输入完毕后,点击连接,然后在登录界面选择Xorg,并输入相应的 用户名和密码 即可图形化远程连接。
管理员用户和普通用户都可使用(4.1的设置是在管理员账户下进行的,普通用户并未在ubuntu中设置什么)
4.3目前存在的问题
不知道哪里设置出现问题了,每次不管是管理员用户登录还是普通用户登录都会出现以下两个框
尝试输入过相应密码,但下次登录时照样出现。因此,现在使用时,直接都选取消,进行相应的ubuntu桌面。
5.多用户连接
因为配置的电脑是多人使用,所以创建了一些普通用户来供大家使用。
5.1创建用户
useradd -r -m -s /bin/bash spark #创建用户spark,并生成相应的目录
passwd spark #为用户spark添加密码
#给用户设置添加多个用户组,设置新用户的主用户组是iot,iot是管理员的用户组
usermod -g iot -G qqq,www spark #给spark用户设置主用户组iot组,qqq,www附属用户组
id user #显示用户信息
5.2限制显卡使用
参考文章:https://zhuanlan.zhihu.com/p/23250782
5.2.1限制使用显卡的数量
使用命令打开当前用户 ~/.bashrc:
vim ~/.bashrc
添加一下内容:
export CUDA_VISIBLE_DEVICES=2
上述表示,只使用第3号显卡(显卡编号从0开始),如果要使用第3,4号显卡,则内容应为export CUDA_VISIBLE_DEVICES=2,3
5.3普通用户.bashrc需要添加的内容
使用命令打开当前用户 ~/.bashrc:
vim ~/.bashrc
在最后几行加入以下内容,具体内容请根据实际更改
# only Use GPU 2,3
export CUDA_VISIBLE_DEVICES=2,3
#Write by Alvin. Cuda9.0 Path
export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/extras/CUPTI/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
6.Ubuntu使用过程中遇见的问题
6.1tensorflow报错ImportError: libcublas.so.9.0
试验tensorflow环境时,报错:ImportError: libcublas.so.9.0: cannot open shared object file: No such file or directory
解决方法:参考文章https://blog.csdn.net/qq_34374211/article/details/81018320
检查 /usr/local/cuda-9.0/lib64 下是否有 libcublas.so.9.0,如果有,终端输入:
sudo ldconfig /usr/local/cuda-9.0/lib64
若用户权限不够,请暂时给予 管理员权限 (参考文章:https://blog.csdn.net/m0_37041325/article/details/80516635 )
-
暂时给予管理权限:
切换至管理员用户,使用命令,打开/etc/sudoers
sudo vim /etc/sudoers
找到这一 行:“root ALL=(ALL) ALL"在起下面添加"xxx ALL=(ALL) ALL”(这里的xxx是你的用户名),然后保存。这里的更改是 立即生效的,无需再重启电脑。
然后,切换回 xxx 用户,使用命令
sudo ldconfig /usr/local/cuda-9.0/lib64
最后,将/etc/sudoers 中添加的内容去掉即可。