服务器配置深度学习环境
补充
现在安装显卡驱动和cuda,可以只需要执行两个命令即可,但是cuda的版本可能比较低,当然最准确的方式就是手动一步步安装。
在线安装驱动
sudo apt-get purge nvidia-*
sudo apt-get update
apt search nvidia-driver
sudo apt install nvidia-driver-390
在线安装cuda
自动安装(版本比较旧):https://www.cnblogs.com/morganh/p/14674319.html
选择合适的版本:https://blog.csdn.net/qq_16792139/article/details/113256279
Linux服务器配置深度学习环境
本文介绍一下配置深度学习环境的具体步骤,老实说这玩意挺恶心人的,配置这些环境需要相当的耐心。这里我使用的是ubuntu16.04、cuda10.1和pytorch,显卡是1080ti。
总体要求
深度学习服务器比较好的管理方式是采用分配账户的方式来提高服务器的利用率。其中cuda最好是通过全局的方式安装到机器上的,也就是所有用户都可以访问,nvidia驱动和cudnn是直接安装在全局上的,这个没什么疑问。Anaconda和pytorch/tensorflow是需要每个用户自行安装的,每个用户根据自己不同的需要安装不同的包。
安装ubuntu
安装操作系统我就不细说了,详情可以参考虚拟机安装操作系统和安装操作系统这两篇博文。安装系统没有什么难度,唯一需要注意的是Linux的分区问题。
分配账户
装好系统之后,第一件事就是需要分配账户,分配账户可以参考这篇博文:点击传送门。需要强调的一件事ubuntu的root账户没有用过的话,是需要自己设置密码的,由于第一个 user 是在 admin 组 ,所以可以给 root 设置密码 :
sudo passwd root
[sudo] password for you :---> 输入你的密码,不会显示
Enter new UNIX password:
--- > 设置root 密码
Retype new UNIX password:
安装ssh服务
ubuntu只默认带有ssh客户端,但是没有服务器端,因此需要安装服务器端。
安装:
sudo apt install openssh-server
安装好ssh之后,建议通过远程连接来进行接下来的操作。具体的客户端我推荐xftp和xshell,详情参考点击传送门
安装screen包
跑程序必备神器,防止断电、断网。详情请参考:点击传送门
安装:
sudo apt install screen
安装Nvidia显卡驱动
如果平时比较喜欢玩游戏的同学对这一定很熟悉,在windows上安装N卡驱动非常简单,但是在Linux系统上安装N卡驱动就很麻烦了,这一步骤也是整个环节中最为麻烦的一步。
安装N卡驱动可以通过命令行联网下载安装,但是最准确的方式是通过官方提供的驱动来手动安装,这种方式是本文介绍的重点。如果有想使用其他方式安装驱动的同学请参考点击传送门。
-
下载驱动。Nvidia官网:驱动 在这一步的时候需要注意,不要选错了,我的显卡是1080ti,ubuntu系统是64位的,语言为英语,开始下载runfile文件。注意如果这一步是重装驱动的话,那么一定要根据安装的cuda版本来选择相应版本的驱动,具体的对应关系请请参考:点击。
-
安装显卡驱动需要关闭图形用户界面,这个时候就只有存粹的控制台窗口,如果你不用ssh,所有的命令都需要手动输入,这样既费时又容易出错,这个时候就体现出ssh的好处了。
-
删除原有的nvidia驱动,如果没有安装可以直接跳过这一步:
sudo apt-get remove --purge nvidia*(注意这里是两个小短横,这应该是显示的问题)
sudo ./NVIDIA-Linux-x86_64-384.98.run --uninstall(安装失败后彻底卸载,这里也是两小短横)
- bios禁用禁用secure boot,也就是设置为disable,如果没有禁用secure boot,会导致NVIDIA驱动安装失败,或者不正常。
- 安装驱动可能需要的依赖:
sudo apt-get update
sudo apt-get install dkms build-essential linux-headers-generic
- 禁用nouveau,打开配置文件:
sudo vim /etc/modprobe.d/blacklist.conf
并且在最后一行添加:
blacklist nouveau
options nouveau modeset=0
这表示禁用nouveau第三方驱动,之后也不需要改回来。由于nouveau是构建在内核中的,所以要执行下面命令生效:
sudo update-initramfs -u
- 重启reboot。重启之后,可以查看nouveau有没有运行:
lsmod | grep nouveau # 没输出代表禁用生效
- 关闭可视化桌面:为了安装新的Nvidia驱动程序,我们需要停止当前的显示服务器。最简单的方法是使用telinit命令更改为运行级别3。执行以下linux命令后,显示服务器将停止,因此请确保在继续之前保存所有当前工作(如果有):
sudo telinit 3
之后会进入一个新的命令行会话,使用当前的用户名密码登录
(sudo telinit 5重新回到图形用户界面)
- 安装驱动:给驱动文件增加可执行权限:
sudo chmod a+x NVIDIA-Linux-x86_64-390.48.run
执行安装:
sudo sh ./NVIDIA-Linux-x86_64-390.48.run -no-opengl-files
-no-opengl-files 参数必须加否则会循环登录,也就是loop login
-
安装驱动的过程中会出现一下事项:
如果提示安装32位的兼容库,推荐安装。
提示安装dkms 推荐安装
自动更新X配置文件时,请选择“否” -
执行nvidia-smi命令能够显示显卡信息,则表示驱动安装成功。
-
补充:参数介绍:
-no-opengl-files 只安装驱动文件,不安装OpenGL文件。这个参数最重要
-no-x-check 安装驱动时不检查X服务
-no-nouveau-check 安装驱动时不检查nouveau
后面两个参数可不加。
安装cuda和cudnn
-
cuda下载地址:https://developer.nvidia.com/cuda-downloads
同样,下载之前需要弄清楚自己下载的版本,要和前面的驱动版本对应。cuda与驱动对应的版本:https://blog.csdn.net/zhw864680355/article/details/90411288 -
cudnn下载地址:https://developer.nvidia.com/cudnn 注意还得注册账号才能下载,这个安装包是用来神经网络加速的。
-
注意安装cuda的时候,一定不要重复安装驱动了(这一点非常重要)。
-
具体的安装步骤请参考(比较简单,就不详细介绍了):https://www.cnblogs.com/pertor/p/8733010.html .如果安装cuda之后报错,需要重新配置一下环境,具体配置如下:http://t.zoukankan.com/Leozi-p-13281215.html
-
如果在.bashrc上更改配置信息,那么就是把cuda和cudnn安装在个人账户下,这里建议在/etc/profile上配置相关信息
安装anaconda
安装anaconda我就不多讲了,请参考这篇博文点击
安装pytorch
pytorch官方地址:点击
- pytorch已经给我们提供了现成的命令行,但遗憾的是由于特殊国情,这个命令行往往都不好使。
但是我们可以修改conda的镜像源,前一段时间清华的镜像网站活过来了,修改镜像源的方法请点击:
https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/ 通过conda info查看是否修改成功。 - 也可以先下载安装包,然后通过pip安装。详情参考:https://pytorch.org/get-started/previous-versions/
- pytorch有0.4和1.0版本,我推荐使用1.0,1.0中废除了Variable,使用起来更方便。
判断整个环境是否配置成功
import torch
torch.cuda.is_available()
输出true表示安装成功
吐槽
nvidia的老版驱动太难找了,不知道老黄是啥子目的,大家安装的时候注意保存一下驱动。
注意
nividia驱动是比较脆弱的,之前我为了在服务器上装一个软件,频繁重启机器,结果导致nvidia驱动损坏。
疑难问题
安装驱动的时候可能报错,大意就是linux系统的内核可能会与nivida驱动的内核不兼容。因为linux系统的内核是会不断升级的,在安装一些老的驱动会出现这样的问题。解决办法:安装较新的驱动或者降低系统内核版本
详情参考:https://blog.csdn.net/jiuliang1916/article/details/79133072
引用
- https://blog.csdn.net/red_stone1/article/details/78727096
- https://blog.csdn.net/wf19930209/article/details/81877822
- https://blog.csdn.net/wf19930209/article/details/95237824
- https://blog.csdn.net/wf19930209/article/details/95772476
- https://blog.csdn.net/u014561933/article/details/79958017
- https://www.cnblogs.com/pertor/p/8733010.html