admin 管理员组文章数量: 1086019
【UBUNTU】深度学习服务器中环境配置问题以及遇到的坑。
前言
离开实验室了,记录一下给需要的同学看看,研一最初的时候疯狂白嫖舍友的服务器(感谢我JL兄),终于在2019年4月份老王可算是给咱们的破机器更新换代了,还掏来了一台TITAN XP,经过一系列地抓阄操作‘有幸’负责起了这台BOSS机器的打杂工作。虽然Linux也使用两年了,开始也只是随便玩玩跑跑深度学习,真正迈入Linux的坑该算是从这次打杂开始,记录一下关于深度学习主机配置上的技术问题和坑,目前已脱离deeplearning的坑,转行开发。
一. 为LINUX服务器配置网络
这里我的方法是通过一台可以联网的windows主机来为LINUX主机开启代理,使用的网络代理程序是CCPROXY。步骤如下
步骤1: 要确保Linux服务器内网ip和windows主机内网ip是在同一子网络下。 比如Linux的内网IP为192.168.136.55而windows主机的内网IP地址为192.168.136.24就是同一个网段192.168.136.X下。
windows下IP自定义的具体的设置方法,大概是在网络设置里面,大致的方法就不说了,提供一个设置参考:
IP地址:192.168.136.24
子网掩码:255.255.255.0
默认网关:192.168.136.0
DNS:8.8.8.8
Linux服务器的ip我当时是没有改的,插上网线后 (windows和linux机器不能一个插路由器,一个插网络插口,否则不在一个局域网) ,在Linux终端输入
ifconfig
就看到了内网地址是192.168.136.55。 若需要改动,自行百度。 配置完内网IP后,我们在windows的终端输入
ping 192.168.136.55 (这是服务器的内网ip)
若有数据返回说明是在同一网段了,该步骤完成。
步骤2:
开始配置CCPROXY,下面这段我直接复制了,写这文章的时候用的LINUX,打不开CCPROXY哈。
(1) Windows中关于CCPROXY的设置如下
1.打开软件。
2.打开“设置”,如图做设置,点击确定,注意这里的端口号要记住
3.打开“账号”之后,点击确定。
4.点击新建,在ip地址/ip地址段内输入要被代理了用户地址,点击确定。
建议:把windows的防火墙和安全更新关了,其会阻断CCPROXY的代理。
(2)UBUNTU主机下操作
1.点击桌面右上角齿轮进入系统设置---->网络
步骤2: 点击代理上网,选择手动,然后输入windows主机的ip,以及ccproxy中开启的端口,大概填写如下
这样就LINUX主机就可以上网了。
二. UBUNTU源的更新
源是UBUNTU使用apt-get下载东西时使用的软件库,如果不设置的话默认使用国外地址,下载速度是特别慢的,有幸国内有清华源,阿里源等等。
一. 换源方式
第一种:修改/etc/apt/sources.list,终端操作如下
//先获取root权限
sudo su
//先备份该文件,以防万一弄错了找不回来
mv /etc/apt/sources.list /etc/apt/sources_backup.list
//打开该文件
vim /etc/apt/sources.list
将里面的内容清空,把下面的内容复制进去,输入:wq保存并退出vim
deb / bionic main restricted universe multiverse
eb / bionic-security main restricted universe multiverse
deb / bionic-updates main restricted universe multiverse
deb / bionic-proposed main restricted universe multiverse
deb / bionic-backports main restricted universe multiverse
deb-src / bionic main restricted universe multiverse
deb-src / bionic-security main restricted universe multiverse
deb-src / bionic-updates main restricted universe multiverse
deb-src / bionic-proposed main restricted universe multiverse
deb-src / bionic-backports main restricted universe multiverse
在命令行中执行如下操作更新apt-get源
sudo apt-get update
第二种方法: 如果有图形界面那就很好办了,我是UBUNTU16系统,18界面会有点不同(自己百度相关操作了)
- 点击右上角的齿轮----> 系统设置---->软件和更新
- 会出来这个界面
- 点击下载自的下拉框,里面选择其他站点,然后在中国的下面可以选择来自阿里云的镜像,华为云的镜像,清华源的镜像等等。
三. 安装深度学习所需要的显卡驱动配置
一. 驱动的安装
第一种:如果有图形界面,我是UBUNTU16系统,18界面会有点不同(自己百度相关操作了)
步骤1. 点击右上角的齿轮----> 系统设置---->软件和更新
步骤2. 会出来这个界面
步骤3.点击附加驱动,里面可以选择相应的显卡驱动来进行安装,当然前提是UBUNTU的源你已经更新完成了,不然你就下载到天昏地暗吧。一般来说尽量选最新版的。
步骤4.下载完成重启电脑后,在终端输入 nvidia-smi,如果出现如下就表示成功安装了
注意: 你以为完事了嘛,很可能并没有,跳转到第二种方法的末尾。
第二种: 如果没有图形界面,只有单纯的终端命令行呢,那也很简单,只是步骤多一些。在自己电脑上先把驱动安装文件下载好,再上传到服务器上,这点小操作就不写了。
步骤1. 上nvidia驱动官方网站
步骤2. 选择服务器中显卡和系统的基本参数,点搜索,并下载。
步骤3. 将下载好的文件 NVIDIA-xxxxxxx.run上传到服务器download文件夹中(随便上传到哪个文件夹,为了方便就写download了)
步骤4. 禁止Nouveau,Nouveau是由第三方为NVIDIA显卡开发的一个开源3D驱动,由于太菜了没能得到NVIDIA的认可与支持。
vim /etc/modprobe.d/blacklist.conf
在文件内容后面加入blacklist nouveau
步骤5.
sudo update-initramfs -u
然后重启服务器,重启后执行
lsmod | grep nouveau #没有输出,即说明禁用成功
如果你是在图形界面的话,那么有可能你的图形界面已经相当的糊了,甚至进不了系统桌面,但是没关系, ctrl+alt+F1可以进入命令行
步骤6. 终端进入到 驱动文件所在的目录,然后执行
sudo NVIDIA-xxxxx-xxxx.run -no-opengl-files
有各种选项,
The distribution-provided pre-install script failed! Are you sure you want to continue? 选择 yes 继续。
Would you like to register the kernel module souces with DKMS? This will allow DKMS to automatically build a new module, if you install a different kernel later? 选择 No 继续。
问题没记住,选项是:install without signing
问题大概是:Nvidia’s 32-bit compatibility libraries? 选择 No 继续。
Would you like to run the nvidia-xconfigutility to automatically update your x configuration so that the NVIDIA x driver will be used when you restart x? Any pre-existing x confile will be backed up. 选择 Yes 继续
步骤7. 安装完成后终端输入 nvidia-smi,如果报出相关的显卡信息就说明安装成功了,重启电脑。
注意: 你以为完事了嘛,很可能并没有,可能使用一段时间后重启服务器,发现驱动居然不见了,图形界面又变成成糊糊了。 这是因为显卡驱动安装的时候会与当前的LINUX内核进行绑定,而Linux内核经常会自己更新,导致更新后显卡驱动所绑定的Linux内核与当前的Linux内核不匹配了。 这时候我们就要重新安装NVIDIA显卡驱动了。
一劳永逸的方法:
图形界面,我是UBUNTU16系统,18界面会有点不同(自己百度相关操作了)
步骤1. 点击右上角的齿轮----> 系统设置---->软件和更新
步骤2. 会出来这个界面
点击更新,把 重要安全更新 和 推荐更新 前的勾去了
完事。
四. CUDA和Cudnn的安装
其实如果使用python跑深度学习程序,还是建议在anaconda内部自定义的局部环境中安装cuda的。不过如果是要配置caffe,openpose,darknet这些框架,就需要在全局环境中安装cuda了。
步骤1. 上nvidia的CUDA下载网址,选择可以与当前驱动版本对应的cuda安装文件进行下载。
步骤2. 上传相应的cuda文件到服务器,如果该cuda安装文件已经在服务器了,则略过该步骤。
步骤3. 服务器终端进入到安装文件所在目录,执行sudo ./cuda-xxx.run。 这里有个地方要注意的,提示是否安装显卡驱动的时候,要选择no。因为之前我们已经安装过了。
步骤4. 安装完成后,需要设置一下环境变量,操作如下
vim ~/.bashrc
在内容的最下面添加
export PATH=$PATH:/usr/local/cuda/bin
export LD_LIBRARY_PATH=/usr/local/cuda/bin/lib64:$LD_LIBRARY_PATH
最好在终端看看以上的是否是cuda所在的路径
注意: 修改环境变量的时候要注意看你当前的账号是 root还是子账户,因为不同的账户其对应的 .bashrc 文件是不一样的,根据你自己的需要设置。
终端执行
source ~/.bashrc
然后终端输入nvcc -V,如果出现如下信息就表示安装CUDA成功
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Sep__1_21:08:03_CDT_2017
Cuda compilation tools, release 9.0, V9.0.176
cudnn安装
步骤1. 上cudnn下载官网,建议下载tgz格式的cudnn文件,下载后直接解压,相当方便。
步骤2. 假设已经在服务器上有了 cudnn-xxxx.tgz文件,命令行终端执行如下操作
//解压
tar -xzvf cudnn-xxxx.tgz
步骤3. 进入cudnn文件夹的目录,将文件复制到linux系统下cuda所在路径
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
这样大概的所需要的框架就搭建起来了。
五. 以下涉及到了关于各种库缺失的问题
Linux中很多问题其实都是环境问题,少了XX库,xx文件找不到,cannot find -l****, 其实都是环境问题。下面有几个方式来解决
方式1. 看看当前的代码运行环境是root还是自己的子账户,毕竟root和子账户的环境很有可能是不一样的。
方式2. 如果是库文件(.so 或者 .a结尾的文件)缺失,可以去/usr/目录下找找。如果代码有提示”在XXX路径下中找不到库文件“,就最好了,直接去该路径下找。
温馨提示: 可以借助find, whereis等命令来找文件
方式3 如果确定没有这个库文件了,就下载一个好了。百度会告诉你apt-get 哪一个安装包.
方式4 有时候你的.so或者.a文件可能不在/usr/目录下的文件夹中。比如,我为了要偶尔切换库的版本,那么我的这两个版本的库文件可能就分别位于/home/my/xxx_1文件夹和/home/my/xxx_2文件夹中。 这时候我们可以修改~/.bashrc中的环境变量,如下
vim ~/.bashrc
//在内容的最下面加入
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/home/my/xxx_1
若我们切换第二个版本就加入下面这句
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/home/my/xxx_2
退出来后,终端输入source ~/.bashrc就可以把库文件更新到环境变量了。
注意: 代码运行的终端也要执行source ~/.bashrc或者重启,不然环境没更新过去。
本文标签: UBUNTU深度学习服务器中环境配置问题以及遇到的坑
版权声明:本文标题:【UBUNTU】深度学习服务器中环境配置问题以及遇到的坑。 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1693584107a230657.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论