摘要: 本文介绍如何自己构建深度学习服务器

注意:本文主要关注服务器设置和与多个用户同时工作,部件组装和软件安装过程是Slav Ivanov关于创建自己的DL Box的文章的简化版本。

我刚刚开始阅读fast.ai课程的第1部分“编码器的实用深度学习”,我想构建自己的服务器,通过使用AWS p2实例和存储对模型进行升级。意识到我将使用更大的数据集并且不想因为缺乏足够的处理能力以致等待数小时来训练我的模型,构建自己的DL平台是一个好的选择,因为从长远来看它将节省我大量的时间和金钱,也给了我很好的把服务器放在一起的经验。

构建

创建部件清单

在将任何部件列表放在一起之前,你需要确定你真正想要从你的机器中得到什么。对我来说,我想要的是:

比亚马逊p2实例更强大

可以添加额外的GPU,RAM,存储和自定义液体冷却的空间

多年来不会过时的硬件

将成本降低到3000美元的预算

我使用pcpartpicker.com来指出所有内容,因为它比较容易比较其他部分和组织所有内容,以及它们非常好的部件兼容性检查器(稍后将详细介绍)。我将详细介绍为什么我选择每个部件以及它如何与整个系统一起工作。作为参考,可以在此处找到我的服务器构建的链接。

GPU: GTX 1080 Ti Hybrid

当你使用显卡训练模型时,这是构建中最重要的部分,因此GPU越强大,你处理大量数据集的速度就越快。更高的GPU内存等同于更高的处理能力(例如,更快的训练,更大的批量大小等......)。我为我的服务器选了两张这样的卡,因为我的预算有足够的空间,它让我可以在其中一张卡上训练我的模型,并让另一个用户在第二张卡上训练他们的模型。你可以缩小你购买的GPU的类型,以适应你的预算(1070、1060等),同时防止其他部件遇到瓶颈。Hybrid 1080 GPU也很不错,因为除了大多数gpu所具有的普通风扇冷却系统之外,它们还预装了aio水冷系统。1080 Ti在满载时发热,因此在训练模型时,必须保持高质量的冷却以延长卡的使用寿命并保持其性能。关于选择图形卡的更多信息,这篇文章真的帮助我真正理解了在深度学习环境中工作时应该做哪些选择。

CPU: AMD Threadripper 1900x

当你使用显卡来训练神经网络时,你的CPU仍然很重要,因为它被用于诸如数据准备之类的操作,所以这些高核心计数将有助于加速进程。我使用了Treadripper,因为它是市场上非常新的CPU,有很高的核数(TR2的32核!),它们的价格远低于英特尔的同类产品。1900x是第一个获得TR的最低层,只有8个内核,不过我对这台服务器的整体目标是保持它的可升级性。

需要注意的一点是,当你选择CPU时,请确保你的显卡有8或16个pcie槽可用,因为这是显卡在负载下表现最好的时候,否则你的系统可能会遇到瓶颈。在高端cpu上,如果服务器上有4张显卡,那么几乎可以保证有足够的pcie槽。

主板: MSI X399 SLI Plus

选择这块主板,因为它是一个完整的ATX板,有4个gpu的空间,以及最大128GB的RAM。如前所述,此服务器的主要目标之一是使其保持高度可升级性。

内存: 32GB Corsair Vengeance LPX DDR4 (2 x 16GB)

内存越多,处理大型数据集就越容易。我计划升级的下一件事是再增加2根16GB的RAM,这就是为什么我没有得到四通道ram (4x8gb的RAM),尽管这会使我的性能提高一些。

存储:256GB三星SSD和2TB硬盘

我把Ubuntu,我所有的库,以及我在SSD上使用的当前数据,以及我储存在2TB机械硬盘上的所有其他数据。

冷却器:Corsair H100i v2液体冷却器

Threadrippers没有库存冷却器(而且如果您有30美元的备用费,您应该经常升级到至少一个便宜的售后冷却器),所以我希望使用可靠的、全天候使用的、廉价的、易于维护的工具。这种一体式冷却器非常容易安装,而且非常可靠(几十万个机组中可能有一到两个发生泄漏冷却液的情况),而且非常安静。

电源:EVGA SuperNOVA 1000w 80+金牌认证

一定要用比你技术所需的更多的功率。PCPartpicker的wattage计算器很好,它能让你大概知道你要拉动多少(在我的例子里是824w),尽管它经常是不准确的,因为它的数量是不同的,所以最好确保你的电脑不会打开。“黄金认证”仅仅是指PSU的效率(多少能量作为热量被浪费)。

箱子:Corsair 760T全塔

我选择这个箱子是因为它里面有多少空间以及它的价格。虽然这并不能让你的模型训练得更快,但清晰的侧板和红色的led确实能让你看起来更酷。


一年的积蓄和毕业奖金在一张照片上

把部件组装在一起

如果你是电脑新手,这就像组装一套非常昂贵的乐高玩具。任何人都能做到这一点,尽管它比你想象的更难搞糟。我将很快地介绍如何构建我的组装,尽管我强烈建议你在构建自己的时遵循完整构建的视频,比如这个!这些说明适用于几乎所有你正在使用的部件的组合,就像我在上面链接的视频指南一样。

第1步:安装CPU

这可能是构建计算机最可怕的部分,因为你必须遵循特定的步骤顺序并且你可能会意外地立即销毁大约价值430美元的 cpu(就像粉碎单个cpu引脚),这是很容易的事情。

第2步:安装电源

做事没有正确或错误的顺序,但根据我个人的经验,我喜欢将PSU作为我放入箱子的第一部分,因为有些情况要求你将PSU滑入一个使你“通过主板”移动的插槽,如果它在那里。

第3步:将所有东西放在一起

这是一个很大的步骤,但一旦主板在其他一切都很容易安装。我会按顺序安装:

1.安装的RAM。这很简单,只要把你的内存棒滑动到正确的方向,并在你的主板上插入正确的插槽(请参阅手册,因为有特定的槽使用取决于你有多少棒)。

2.安装CPU冷却器。唯一的小麻烦是我不得不更换安装支架,以便与TR兼容,只是需要很大的力量来改变。安装散热器用了8个螺栓并且我完成了。

3.安装显卡。只需将它们滑入主板上各自的插槽(如内存,请参阅手册中有哪些插槽可插入)并将散热器固定在你的机箱中。确保你的散热器高于你的gpu。 我在上面的图片中犯了这个错误,不得不重新安装在箱子的前面板上。

4.安装存储。我卸下了其中一个驱动器托架以获得更多气流,因此我将SSD和HDD放在右下方的单个驱动器托架中。

第4步:成功?

是时候开机了。起初我没有,因为我的箱子的电源按钮的正负电缆线颠倒了,但之后我看到了我所希望的明亮的白色和红色。如果一切顺利,你应该看到你的计算机发布,然后搜索一个启动设备。

设置服务器

安装操作系统

下一步是安装您的操作系统。我正在使用Linux,因为这是大多数DL框架的设计目标。我使用Ubuntu Desktop v16.04 LTS并安装了USB驱动器中的所有内容。 有许多免费工具,如UNetbootin或Rufus(仅限Windows),你可以下载这些工具来准备你的u盘。这里有一个非常有用的教程,介绍如何在Mac电脑上创建一个可引导的USB,如果你使用的是Windows操作系统,那么这里有一个合适的教程。

设置SSH

第1步:端口转发

你必须对所有路由器执行类似的过程,但由于我有一个苹果路由器,我按照本指南执行以下操作:1.为你的服务器设置静态IP,以便每次关闭时它都不会更改关闭。2.使用Apple Airport Utility登录路由器3.映射服务器的端口。你需要为此部分找到服务器的MAC地址,因此请参阅本指南,了解如何在Ubuntu上找到它。

第2步:创建动态IP地址

我曾经为服务器创建一个动态IP地址,允许我在终端远程连接它。你可以使用此网站来验证它是否正常工作。

当我想连接到我的服务器时,我输入一个如下所示的命令:

我的服务器在端口8888上运行,我的jupyter notebook在8889上运行(-L选项将指定的本地端口重定向到不同的主机和端口)。 这样我就可以在我的机器上本地运行笔记本,以便与我的服务器同时进行测试以便进行训练。但是,如果你不想这样,你可以在-L部分之前输入所有内容。我将在下一节中解释如何更改运行jupyter笔记本的端口。

安装DL / ML库

现在安装深度学习/机器学习所需的所有库。我将逐节介绍安装脚本,以便你了解可以在此处找到的内容。它主要基于Jeremy Howard的install-gpu.sh脚本,因此这里的很多内容不仅仅是因为它们是有用的工具,而且因为这是我们在Fastai中使用的。

首先,我们将确保我们的系统是最新的,并安装我们需要的所有基本工具:

下一步是下载并安装所有CUDA GPU驱动程序:

现在我们将验证我们是否正确安装了所有CUDA内容:

从这里我们将把CUDA(Nvidia Deep Learning api)添加到我们的PATH变量中:

之后,下一步是安装CuDNN库(创建神经网络所需):

我们现在将为当前用户安装Anaconda:

接下来,我们将安装Tensorflow和Keras:

接下来,我们将为Fastai安装Python依赖项:

以下几节将配置jupyter notebook:

要更改默认端口以运行Jupyter notebook(端口8888),请取消注释此行并输入所需的端口。这允许你同时在你的服务器和本地运行你的笔记本,同时让多个用户在你使用你的笔记本时使用他们的笔记本:

现在我们将配置tmux,这个工具可以让我们在终端窗口中创建多个“窗格”,并在断开连接后保持程序运行。查看此文档,因为它帮助我理解了tmux的所有功能。它非常有用,因为你可以在一个窗格中运行笔记本,监视另一个窗口中的gpu使用情况,并在另一个窗格中打开一个linux终端:

接下来,我们将创建tmuxp配置文件,该文件将在一个命令中设置我们的开发环境,而无需每次我们想要处理某件事情时配置窗格、启动jupyter notebook等。对于我们的fastai环境,我们将使用tmuxp load fastai启动它。请参见使用tmuxp的链接,这里是bash脚本中的文档以及保存服务器重新启动之间的tmux会话的文档。总之,这里让我们配置我们的环境:

因为我们不再需要它们,让我们删除安装文件:

就是这样!在编写本文时,我的服务器一直全天候运行,完全没有任何问题,完全无声,并且通过训练轻松完成。

本文作者:【方向】

阅读原文

本文为云栖社区原创内容,未经允许不得转载。

自己动手打造深度学习服务器相关推荐

  1. 使用AMD CPU,打造自己的深度学习服务器

    本文作者详细描述了自己组装深度学习服务器的过程,从 CPU.GPU.主板.电源.机箱等的选取到部件的安装,再到服务器的设置,可谓面面俱到.作者指出,组装者首先要弄清自己的需求,然后根据预算做出合理的选 ...

  2. 如何从ip服务器所用系统,如何从0开始打造一个深度学习服务器?

    最近我(作者Wayde Gilliam--译者注)在学习了一些深度学习方面的知识和教程后,决定自己搭一个服务器用来训练机器学习模型,不再用现在所用的AWS p2虚拟机和存储器.我意识到,后面我会用到规 ...

  3. 「动手学深度学习」在B站火到没谁,加这个免费实操平台,妥妥天花板!

    论 AI 圈活菩萨,非李沐老师莫属. 前有编写「动手学深度学习」,成就圈内入门经典,后又在B站免费讲斯坦福 AI 课,一则艰深硬核讲论文的视频播放量36万,不少课题组从导师到见习本科生都在追番. 如此 ...

  4. 《动手学深度学习》中文第二版预览版发布

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者丨李沐@知乎 来源丨https://zhuanlan.zhihu ...

  5. 李沐《动手学深度学习》PyTorch 实现版开源,瞬间登上 GitHub 热榜!

    点击上方"AI有道",选择"星标"公众号 重磅干货,第一时间送达 李沐,亚马逊 AI 主任科学家,名声在外!半年前,由李沐.Aston Zhang 等人合力打造 ...

  6. 364 页 PyTorch 版《动手学深度学习》PDF 开源了(全中文,支持 Jupyter 运行)

    点击上方"AI有道",选择"星标"公众号 重磅干货,第一时间送达 李沐,亚马逊 AI 主任科学家,名声在外!半年前,由李沐.Aston Zhang 等人合力打造 ...

  7. 推荐:李沐开源新作,一起来《动手学深度学习》

    来源 /Datawhale 图文 / 静修   排版 / 家豪 [导读]<动手学深度学习>这本书由亚马逊首席科学家李沐,亚马逊应用科学家阿斯顿·张等大师合作打造,沉淀三年完成.本书采用交互 ...

  8. 重磅发布!最新版《动手学深度学习》PDF 版今天终于可以下载

    强烈推荐李沐等人的<动手学深度学习>最新版! 完整中文版 PDF 终于 在10月 5 日更新 可下载: 加我微信好友 马上获取链接 暗号:"书" 内容简介 此书的结构: ...

  9. 《动手学深度学习》TF2.0 实现

    本项目将<动手学深度学习> 原书中MXNet代码实现改为TensorFlow2.0实现.经过我的导师咨询李沐老师,这个项目的实施已得到李沐老师的同意.原书作者:阿斯顿·张.李沐.扎卡里 C ...

最新文章

  1. 改变mysql数据库用户的权限
  2. vue设置点击电话跳转到手机拨打电话的界面
  3. 2019年上海市数学建模讲座笔记(2)概率统计模型
  4. Py之re:re正则表达式库的简介、常用函数、经典案例之详细攻略
  5. redis setnx 过期时间_阿里面试官:你确定你用过 Redis 分布式锁吗?
  6. HTML转义字符 Unicode和CSS伪类介绍
  7. 【DND图形库】五、按钮控件与音效
  8. 大数据WEB阶段(八)Tomcat服务器安装与详解、HTTP协议详解
  9. java httpclient教程_HttpClient4.5.2 HTTP协议的请求和执行
  10. 最近学gvim,mark低先
  11. python json模块详解_深入解析Python编程中JSON模块的使用
  12. Oracle数据库数据泵导入导出
  13. OD使用教程13(迷途) - 调试篇13
  14. python深度学习第一讲——用python写神经网络
  15. Linux 命令(92)—— locate 命令
  16. 广色域图片Android,Android Q将支持广色域照片
  17. python比较运算符用于两个数_比较运算符用于比较两个数,其返回的结果只能是True或False(1.0分)_学小易找答案...
  18. 支持超过4000字节的varchar2类型
  19. python下载慢怎么办
  20. Linaro ABE(高级构建环境)构建GNU交叉工具链

热门文章

  1. win10 64位系统 打开光盘出现339错误 缺少mscomctl.ocx组件 解决方案
  2. ThinkPHP3.2.3 where注入
  3. 计算机屏幕出现蓝色条,我的电脑屏幕中间为何会有一道蓝色线条
  4. 怎么录屏?5 款免费无水印的录屏神器
  5. 网易云信第三方接口调用超详细Demo
  6. 可等待计时器与用户计时器
  7. 房天下全国658个城市新房,二手房爬取
  8. 国内 Mono 相关文章汇总
  9. 白鹭[egret]项目目录介绍)
  10. php ppt read_PHP生成PPT