深度学习装机和使用 ubuntu18.04+cuda9.0+cudnn7.4

深度学习装机配置流程

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

​ 下载网址: https://developer.nvidia.com/cuda-90-download-archive?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1704&target_type=runfilelocal

​ 版本选择: linux–x86-64Ubuntu–17.04runfile(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

​ 在最后添加:

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}}

​ 修改完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/82216190https://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创建用户

​ 切换到管理员账户,执行下面的命令。

sudo useradd -r -m -s /bin/bash spark 	#创建用户spark,并生成相应的目录
sudo passwd spark						#为用户spark添加密码
#给用户设置添加多个用户组,设置新用户的主用户组是iot,iot是管理员的用户组
sudo usermod -g iot -G qqq,www spark	#给spark用户设置主用户组iot组,qqq,www附属用户组
id spark							#显示用户信息,查看用户组设置是否生效

5.2限制显卡使用

​ 参考文章:https://zhuanlan.zhihu.com/p/23250782

5.2.1限制使用显卡的数量

​ 这里将介绍如何在终端处限制显卡使用的数量,不需要每次在代码中添加相应的内容。本处添加的内容会在5.3普通用户.bashrc需要添加的内容章节中重复出现,只需添加一次即可。(可以理解成5.2.1章节的内容是对5.3章节内容的解释)
​ 使用命令打开当前用户 ~/.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 中添加的内容去掉即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章