保姆级教程:个人深度学习工作站配置指南
保姆级教程:个人深度学习工作站配置指南
保姆级教程:个人深度学习工作站配置指南,软件业务,拍电影软件,fx编程软件工作原因一直想配置一台自己的深度学习工作站服务器,之前自己看完paper想做一些实验或者复现模型的时候只能用自己的日常PC来跑很麻烦...一方面电脑得装双系统,干活的时候就不能用作其他用途了;另一方面,即使是没有使用流程的问题,GTX1080的性能也还是弱了一些,更何况我用的是一个A4迷你机箱,长时间高负载的训练任务也不太可靠。
以前在公司的时候还可以用公司的DGX训练集群做一些实验,但是我现在的开发环境已经切换到了昇腾的NPU架构芯片之上了,昇腾平台算力方面虽然是比肩甚至可以超越英伟达,但是目前暂时很多学术界的生态都还是基于GPU服务器的(主要是指开源代码),且我们这儿昇腾服务器对个人也不好买(且买不起),所以有一台这样的GPU工作站还是会方便一些。
那么本文是我在组装工作站过程中记录的详细操作流程,供有类似需求的同学参考~
服务器的配置以个人使用性价比为主,同时考虑到以后的扩展性像是主板和机箱这些配件配置设置一些冗余。首先是CPU平台的选择,虽然AMD这两年实在是香,但是作为生产力工具考虑到软件库的兼容性问题,还是决定选择intel平台里十代X系列CPU+X299主板,算是比较稳的方案,而且某东上CPU搭配主板套装一起买也性价比也很高。GPU方面今年的30系显卡都比较良心,使用两块3080或者一块3090都是很给力的,24G的显存也已经跟TITAN RTX持平了(价格却只要一半)...这里考虑到主板上只能插两块PCIEx16的卡,为了以后可能的提升性能还需要再加一块卡,所以3090是最佳选择。
其中硬盘的设计是这样的:1T的NVME固态做系统盘,12T的机械盘作为数据集仓库,另外一个1T SATA固态作为训练时的数据集缓存,因为IO读写速度也是会影响训练效率的,所以相比于直接从机械盘里面读取数据,加一块SSD做cache效果会好很多。
机箱尺寸比较大,预留的空间非常足所以不会出现像是在装A4机箱时那种考验走线和装配顺序的技巧问题;而且服务器嘛,安静地塞在某个角落就好了,也不用过于考虑什么美观问题,所以走线就很随意了:
这个机箱设计还是很科学的,预留了足够多的扩展接口比如:2个 3.5寸可快拆盘位、5个2.5寸可快拆盘位、光驱位(用不到,后期改造了)、前后顶部一堆风扇位等等。线材基本都可以塞到机箱的另一个侧面,前面板安装了三个进风风扇,背部安装了一个出风风扇,水冷的冷排和风扇在顶端。
这里值得一提的是,正面的光驱位属于用不上的老古董,所以我改造了一下准备装一个小型的LCD屏幕上去,这样偶尔需要进图形桌面或者BIOS界面的时候,就不用再抱个显示器插在机箱上了;此外以后也可以写个软件把这个屏幕作为系统状态监视器来使用~
这个屏幕也是我前阵子刚设计的,项目已经开源了叫做PocketLCD,感兴趣的可以去仓库看看:
系统选择DL开发里面最常用的Ubuntu,最新的稳定版本是20.04,安装过程需要准备一个U盘作为系统启动盘。
Windows下使用UltraISO工具打开.iso镜像文件,并将其写入到一个U盘,得到系统启动盘:
将U盘插到服务器上,开机按del键(具体什么键跟主板型号有关)选择启动项进入临时的Ubuntu系统,在图形界面中选择Install Ubuntu,所有配置都可以使用默认的,改一下用户名和密码即可。这里建议使用英文作为默认语言,省得给自己日后开发找麻烦哈。
安装过程中会联网下载一些软件包更新,可以直接点skip掉,在安装好系统之后再手动更新也是一样的。
也可以去网上搜其他镜像,在我这边经测试阿里云是最快的。另外也可以在图形桌面环境下打开Software & Updates软件,在里面也有网速测试并选择最佳源的功能。
1. Ubuntu系统默认自带python,有版本需求的话也可以自己安装一下(不安装也行因为后面会安装conda环境):
2. 不管是不是自己安装的python,替换python的pip源建议是一定操作一下的,pip安装速度会快很多:
3. 更改默认python版本,python目录默认链接的是python2,而现在基本都是用python3开发了,每次都输入python3很麻烦所以这里直接更换默认的python命令链接。
会自动安装好很多依赖包并启动服务,完成之后用XShell等软件就可以SSH登录服务器了。
Xrdp 是一个微软远程桌面协议(RDP)的开源实现,它允许我们通过图形界面控制远程系统。这里使用RDP而不是VNC作为远程桌面,是因为Windows自带的远程桌面连接软件就可以连接很方便,另外RDP在Windows下的体验非常好,包括速度很快(因为压缩方案做得比较好),可以直接在主机和远程桌面之间复制粘贴等等。
然后使用Windows自带的远程桌面软件连接服务器IP地址或者域名就行了。
前面介绍的SSH和远程桌面都是需要在局域网下通过IP地址进行连接的,而我们配置一台服务器最重要的诉求,应该是可以随时随地去访问服务器。
那在家里面,网络运营商提供的网络服务通过路由器路由到各个设备,此时路由器会同时具备内网地址(路由器之内,局域网,LAN,也就是192.168.x.x)和外网地址(路由器之外,互联网,WAN)。但是其实这个WAN口的IP并不是真正的“公网IP”,而时经过了多层的NAT转换之后的地址,外网的设备是不能通过这个地址访问到路由器的。这个问题的原因是ipv4地址池紧张,如果运营商给每家的路由器都安排一个公网ip的话,那ip地址早就不够用了呀。
因此为了能让外网访问到我们局域网内的设备,就需要跟中国电信等运营商申请公网ip(现在能申请到的概率也已经不大了,而且即使申请到也不是所有端口都可以使用的),或者我们自己动手做一些操作来达到同样的目的。
可以直接用类似花生壳( )这样的DDNS服务平台做转发实现内网穿透,优点是比较简单稳定,缺点是需要持续付费,而且速度和延迟效果一般,而且每加一个端口都要额外付费。
也可以像我一样使用frp之类的软件做反向代理来实现内网穿透,这个方案也是需要你有一台带公网IP的云服务器的,优点就是完全可控,自己想配置多少个端口的穿透都可以,速度跟你的云服务器带宽有关。
为什么需要多个端口?是因为不同应用占用的端口不同,比如我们的SSH走的是22号端口,而远程桌面的rdp走的是3389号端口,如果需要自建Web服务的线端口、想把工作站作为上外网的代理服务器的线端口等等...所以用上面第二个方案显然会方便很多,而且云服务器也不贵,我在腾讯云上购买一年只要200左右。
frp分为frps(server)和frpc(client)两个包 ,其中前者安装到我们的云服务器上,后者安装在需要被外网访问到的各个设备上,这里就是指我们的深度学习工作站。
在浏览器输入[云服务器的公网ip]:7500即可访问到 frp的web管理界面。
注意,可能需要去云服务器控制台配置安全组规则 开放以上涉及到的端口,否则无法访问。
下载相应版本的frpc软件包(跟刚刚一样的):Releases ·,这里选amd64的,下好之后解压到一个临时文件夹。
通过上面的脚本就可以把对于云服务器特定端口的访问给重定向到本地服务器的某个端口了,简单地讲就是:假如我用SSH客户端访问[云服务器ip]:20022,就可以经过反向代理直接访问到[本地的训练服务器ip]:22;同理需要连接远程桌面的话,只需要访问[云服务器ip]:23389就可以了。
sudo systemctl status frpc.service这里顺便提一下,按照习惯一般把上面的frp软件解压防止在/usr/local/bin目录下。Linux 的软件安装目录是也是有讲究的,理解这一点,在对系统管理是有益的
/usr/local:用户级的程序目录,可以理解为C:/Progrem Files/,用户自己编译的软件默认会安装到这个目录下
/opt:用户级的程序目录,可以理解为D:/Software,opt有可选的意思,这里可以用于放置第三方大型软件(或游戏),当你不需要时,直接rm -rf掉即可。在硬盘容量不够时,也可将/opt单独挂载到其他磁盘上使用
如果能把服务器上的磁盘直接挂载到我们使用的Windows个人PC上是不是很爽?
如开头的视频里面演示的,可以通过建立局域网SAMBA服务来实现这个效果:
可以把配置文件中你不需要的分享名称删除,例如 [homes], [printers] 等。
运行这个命令测试一下配置文件是否有错误,根据提示做相应修改:testparm
但是可能会出现无法点开的情况,这里需要在Windows的凭据管理器中添加账户信息(开始菜单里搜索凭据管理器即可打开),点击添加Windows凭据,输入你的服务器名称和账户密码:
接下来就可以点进去看到服务器上的文件了。为了更加方便地进行文件交互,我们添加对应的磁盘到Windows资源管理器的此电脑中:
配置这台服务器的主要作用就是做深度学习训练,所以GPU相关的驱动和环境时肯定要安排好的,网上资料很多很杂,这里梳理出了最便捷可靠的安装方法供大家参考~
选择第一个安装Nvidia官方驱动(第二个是开源驱动)即可,根据网络情况稍等大概十分钟,安装完重启服务器。
这里会连带Nvidia的驱动一起升级一遍,更新到最新的驱动;更新完可能会出现nvidia-smi命令报错,再重启一下就解决了。
前面已经卸载过旧版本了直接Continue就好。然后根据提示选择安装选项,注意不要勾选第一个安装显卡驱动的,因为之前已经安装过了。安装完成后提示
进入到CUDNN的下载官网:cuDNN Download NVIDIA Developer(),然点击Download开始选择下载版本,当然在下载之前还有登录,选择版本界面如下:
不同的训练框架和版本可能会需要不同的python版本相对应,而且有的包比如numpy也对版本有要求,所以比较优雅的方法是给每个配置建立一个虚拟的python环境,在需要的时候可以随时切换,而不需要的时候也能删除不浪费磁盘资源,那在这方面conda是做得最好的。
然后会询问你是否要初始化conda,输入yes确认,重开终端窗口之后,就可以看到conda环境可用了(base代表默认环境):
Docker也是虚拟化环境的神器,前面说的conda虽然可以提供python的虚拟环境并方便地切换,但是有的时候我们的开发环境并不只是用到python,比如有的native库需要对应gcc版本的编译环境,或者进行交叉编译时哟啊安装很多工具链等等。如果这些操作都在服务器本地上进行,那时间久了就会让服务器的文件系统非常杂乱,而且还会遇到各种软件版本冲突问题。
Docker就可以很好地解决这些问题,它其实可以理解为就是一个非常轻量化的虚拟机,我们可以在宿主服务器上新建很多个这种被称为容器的虚拟机,然后在里面配置我们的开发环境,且这些配置好的环境是可以打包成镜像的,方便随时做分享和重用;不需要的时候,我们直接删除容器就好了,其资源是和我们的服务器宿主机完全隔离的。
Docker的具体使用可以自己搜索一下很多教程,这里主要介绍如何把GPU暴露给Docker的容器(因为大家都知道像是VMware这种虚拟机里面都是无法共享宿主机的GPU的),是通过nvidia-docker实现的。
其中最后的参数nvidia/cuda:11.1-base是Nvidia官方的镜像,需要根据工作站主机中实际安装的cuda版本进行修改,版本可以用nvcc \-V查看。
这里通过一个简单的python脚本测试一下GPU训练是否一切正常,跑一个DL里面的Hello World程序,通过两种方法测试:本地conda和docker虚拟机。
以后的开发过程中一般还是使用Docker的方式来进行更为优雅。1. 本地Conda环境方式:
环境配置就完成了,下面新建一个简单的测试脚本验证功能,新建mnist_train.py,内容如下:
就进入到了带gpu的ubuntu20.04容器中,效果可以参考文章开头的视频。按照前面的配置方法同样配置好pytorch和其他软件包,然后运行同样的脚本,也可以得到上述输出,说明gpu在docker中正常工作。
由于Linux本身万物皆文件的设计理念,加上root用户对几乎全部的系统文件都有访问和更改的权限,因此Linux系统的备份和还原其实非常简单,我们直接打包整个根文件系统就可以了。
我们可以使用tar命令来打包并压缩文件系统,不过这里在打包的过程中需要排除一些不需要文件,或者与新系统文件冲突的文件,包括/tmp、/proc、/lost+found等目录。
我们会得到一个名为backup.tgz的压缩文件,这个文件包含我们需要备份的系统的全部内容。
如果系统没有出问题可以正常启动的话,那直接在刚刚的压缩包找找到想还原的文件替换就好了。而如果系统无法启动了,或者说想换一块硬盘克隆一样的系统,那么可以按一下步骤操作:
重装干净的Ubuntu系统。跟上面介绍的一样,使用U盘给目标磁盘重装一个干净的系统,这一步是为了省去自己分配存储空间和挂载的麻烦,如果你会自己配置的话那也可以不做这一步。
再次使用U盘进入系统,这次选择try ubuntu without installing,然后可以看到挂载好的刚刚安装了干净系统的另一个盘,我们在这里对盘里的根文件系统进行一些文件的提取:
这一步完成后,在用我们在新系统中备份的fatab及grub.cfg文件去替换压缩包中解压出来的同名文件,sudo reboot重启后就发现系统已经恢复到备份时的状态,包括各种框架,环境,系统设置~
相关文章
- 免费小说APP推荐 塔读小说
- 拼图软件哪个好用?分享三个电脑照片拼图软件给你
- 华为云初创生态:「预见」创业者的力量
- 拍张照就能知道是什么垃圾?记者测试了5款垃圾分类软件结果却哭笑不得…
- 荒野乡村免费阅读小说:【可遇不可求】深深触动
- 聊城网站设计制作软件APP开发小程序开发
- 赛博修行电子超度这些解压方法你不能不知道
- 力合科技:公司具备环境监测核心仪器的开发与制造、环境监测系统自动化控制与集成、环境监测管理软件开发能力是环境监测监管综合解决方案供应商
- 直播答题辅助哪个好?直播答题辅助软件大全
- 如何用海外HTTP代理改变电脑IP地址?
- 灵动岛将支持实时体育比分!苹果开放灵动岛设计指南iPhone 15 Pro定位或被削弱
- 史上最强韦伯太空望远镜:任何不可靠的软件故障点都可能让百亿美元泡汤
- 河南:发展面向能源等行业的通信、导航、遥感卫星融合软件与应用服务
- UNRAID 611 安装完美黑群晖 DSM7X(虚拟化核显、Nvme 补丁等)
- 释放手机存储空间 辅助少儿启蒙教育 支持WIFI的最佳入门级NAS极空间Q2评测
- 计算机行业年度策略:统筹发展与安全数字技术成为重要基石
- 看高清蜗居!六款DVD转换软件终极评测
- 全景图制作软件(全景效果图用什么软件做)
- 企业财会专用财务管理软件系统
- 刘继兰:面对新冠疫情 中国社会信息化快速反应