Centos7下的深度学习环境配置

最近需要给一台服务器配置深度学习环境,上次配置tensorflowGPU版本的环境是一年多之前了,不知道现在的版本还有没有那么多坑,在实验室的电脑上测试一下(Centos7,有一个1G显存的小显卡,倒是适合用来练习装环境)。

Anaconda配置python环境并安装tensorflow

Anaconda用起来还是比较方便的,用conda来配置管理不同的python环境。而且tensorflow本身的安装教程也是推荐使用conda进行安装的。这里推荐大家去清华大学开源软件镜像站下载anaconda的镜像,下载速度要快一点,点击右边的获取下载链接→应用软件→conda。
Anaconda安装完毕后python -v看看系统默认的python环境是不是anaconda,如果不是就需要自行百度,添加一下环境变量。
接着创建一个tf专用的python环境。(当然也可以直接安装tf。。。)

$ conda create -n tf_venv pip python=3.5
$ source activate tf_venv
//(tf_venv) [xx@xxx~]$ ←启动环境成功后命令行会变成这个样子

然后安装tensorflow,这个地方的安装方法就很多。最直接的:

(tf_venv)[xx@xx~]$ pip install --ignore-installed --upgrade packageURL
//后边的packageURL要换成具体要安装的tensorflow版本的链接

各个版本的链接都在这里,也可以用浏览器打开下载好.whl文件后直接pip install xxxxx.whl。(注意科学上网)
或者也可以在各种IDE中安装,这里就不再多说了。
如果你的机器没有GPU,而且安装的是cpu版本的tensorflow,那么可以直接:

(tf_venv)[xx@xx~]$ python -c "import tensorflow as tf; print(tf.__version__)"

如果正确的输出了版本号,那么安装就成功了。

GPU环境的配置

官方文档推荐使用docker来部署支持GPU的tensorflow运行环境,但是很久之前尝试过,对于不了解docker的人来说很难配置好,也不知道如今是什么情况,所以在这还是先直接装nvidia-driver和cuda来试试。
首先 lspci | grep -i vga 查看一下自己机器的显卡型号,接着去英伟达官网下载对应的驱动程序。

CUDA与CUDNN

之所以选择先安装CUDA与cudnn是因为安装cuda时如果不小心会安装一个较低版本的显卡驱动。如果先安装了驱动再装cuda可能需要重新安装一下显卡驱动。对于不同的系统,不同的显卡型号以及不同的驱动版本与cuda版本,安装过程很少会一次成功,需要多试几次。
安装cuda与cudnn之前一定要注意cuda与tensorflow之间以及cuda与cudnn之间的版本对应关系。在这里我使用的是tf_gpu1.11.0+cuda9.0+cudnnv7.3.1.20。下面的驱动版安装过程使用的版本为:系统centos7,3.10.0-862.el7.x86_64,安装的驱动是NVIDIA-Linux-86_64-410.66。

$ sudo sh cuda_x.x.xxxxxxx_linux.run

根据提示逐步安装,install NVIDIA Accelerater Graphics Driver 处选择no,OpenGL没有必要选,后边全部选择yes。记住CUDA的默认路径,一般都是/usr/local/cuda。最后会给出安装结果信息。
安装完成后需要配置环境变量,注意一定要配置自己需要用的账户的bashrc。

$ sudo vim ~/.bashrc//打开bashrc文件
//添加下边几行
export LD_LIBRARY_PATH=/usr/local/cuda-X.0/lib64:/usr/local/cuda-X.0/extras/CUPTI/lib64:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda-X.0/bin:$PATH
export CUDA_HOME=/usr/local/cuda-X.0/

然后下载对应的cudnn的文件,解压缩后将include以及lib64中的文件复制到/usr/local/cuda/(注意跟环境变量中的目录不同)目录中对应的文件夹。

$ cp include/* /usr/local/cuda/include
$ cp lib64/* /usr/local/cuda/lib64

驱动安装

禁用nouveau这个模块,会和nvidia-driver的安装程序有冲突。

$ sudo vim /etc/modprobe.d/blacklist.conf
//打开后添加↓
blacklist nouveau

接着备份和重建initramfs文件

$ sudo mv /boot/initramfs-$(uname -r).img/boot/initramfs-$(uname -r).img.bak
$ sudo dracut -v /boot/initramfs-$(uname -r).img $(uname -r)

接下来要关闭图形界面,对于centos7:

$ systemctl stop gdm.service

然后关机重启,这里有一个坑需要注意。在重新开机之前一定要进入BIOS关掉secureboot,具体方法可以根据自己机型百度。不然安装驱动的过程会报错。

$ sudo sh NVIDIA-Linux-x86_64-xxx.xx.run //运行驱动安装程序

之前没有遇到过内核版本问题,今天在centos上遇到了。安装过程中提示“unable to locate the kernel source"。解决方案在网上找到了:


$ sudo yum install epel-release
$ sudo yum install --enablerepo=epel dkms

没有这个问题就按照提示一步一步来安装,需要注意的是提示是否安装lib32时要选择no,然后X-configuration要选yes。
安装完成后$ systemctl start gdm.service重新启动图形界面。
重启,这里如果是双显卡要注意主机背后的接口,继续插集成显卡的接口可能会出现开机卡死的情况。命令行输入nvidia-smi,如果出现了显卡的状态框说明驱动已经正常安装。

在linux上安装nvidia的驱动是挺折磨人的,这个地方我安装了七八次才成功。有一点要说的是如果没有安装好驱动,重启后卡死,可以按ctrl+alt+f2进入文字模式,进入到下载好的驱动程序的目录把驱动卸载,然后再重新安装。

$ sudo sh NVIDIA-Linux-xxxxxx.run -uninstall//卸载已安装的驱动程序。
//卸载过程中注意选择恢复之前的x-config

最后:

$ source activate tf_conda
(tf_venv) [xx@xxx~]$ python -c "import tensorflow as tf;print(tf.__version__)"
//如果正确的输出了tensorflow版本号说明gpu环境配置已经完成。

总结

在自己的机器上这样配置GPU环境是没有问题的。但是如果GPU用途较多的话而且不同用途所需的驱动版本,CUDA版本不同,这样的深度学习环境配置可能会影响到其他应用。有不同应用时需要不同的环境还要去修改相应的环境变量。以后也会尝试用docker方式配置GPU环境,可能会减少一些这样的问题,但是也仅仅是解决使用不同cuda,cudnn版本的问题,还是需要在机器上安装驱动的。安装之前最好查一查针对所用的机器与系统内核的最稳定的驱动版本。
双显卡的驱动问题不仅仅在这是个大坑,在windows上也一样。GTMD核弹厂-------来自双显卡守望先锋玩家的哭诉。

你可能感兴趣的:(杂七杂八)